Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> msvc2008 bug??? 
:(
    Опции темы
mes
Дата 8.12.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(dumb @  8.12.2008,  11:40 Найти цитируемый пост)
вы не учитываете того, что работа идет с готовым бинарным кодом. 

Вместо того чтоб учитывать все возможные предположения, которых в действительности может и не быть (так как в другом топике этого же автора вроде (может и ошибаюсь) подразумевалось о том что исходники на руках) лучше было бы если бы автор описал бы свою ситуацию. Без этого будет имхо затруднительно ответить на вопрос:
Цитата(GoldFinch @  8.12.2008,  00:46 Найти цитируемый пост)
подскажите как тут избавиться от асма:




--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 8.12.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Kallikanzarid, "рекомендуется передавать объекты по ссылкам, а не по указателям" я кнешно не силен в С++, но какая между ними разница? о_О

dumb, какая разница, для чего нужен код? хуки они и есть хуки... а использование ЯВУ вместо такого асма позволит значительно повысить читаемость:

Код

void __thiscall ALineagePlayerController::PlayerCalcView(class AActor *, class FVector *, class FRotator *);
__declspec(naked,noreturn) void __stdcall Hook_ALineagePlayerController_PlayerCalcView(
    class AActor *, class FVector *, class FRotator *Rotator) 
{ 
    __asm enter 0,0
    g_Direction=Rotator->Pitch
    __asm leave __asm jmp ALineagePlayerController::PlayerCalcView
}


ЗЫ: а та "примитивная защита" не хуже, чем популярное криптование символьных имен или импорты по хешам. К тому же ей гораздо удобнее пользоваться, т.к. функции(методы) вызываются нормально, а не по указателям.

Это сообщение отредактировал(а) GoldFinch - 8.12.2008, 13:07
PM MAIL ICQ   Вверх
Kallikanzarid
Дата 8.12.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 240
Регистрация: 9.11.2008

Репутация: 2
Всего: 3



Цитата(ksili @ 8.12.2008,  12:26)
Цитата(Kallikanzarid @  7.12.2008,  18:26 Найти цитируемый пост)
Если бы ты писал под мобильники, то юзал бы явно не студию

Прикинь, я пишу под WinMobile и использую-таки студию

Поди еще .NET используешь smile Я имел ввиду настоящие мобильники, с низкими вычислительными мощностями.

Добавлено через 7 минут и 25 секунд
GoldFinch, ссылка на протяжении своей жизни гарантированно указывает на один и тот же объект, то позволяет компилятору включить множество оптимизаций, которые он (справедливо) боится применять к указателям.
http://www.tantalon.com/pete/cppopt/main.htm - устаревший ресурс, но многое все еще справедливо.

Защита дефайнами и вставками элементарно ломается с помощью препроцессора.
PM MAIL   Вверх
ksili
Дата 8.12.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Kallikanzarid @  8.12.2008,  17:09 Найти цитируемый пост)
Поди еще .NET используешь

Не, чисто на С++.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
GoldFinch
Дата 8.12.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(Kallikanzarid @  8.12.2008,  13:09 Найти цитируемый пост)
Защита дефайнами и вставками элементарно ломается с помощью препроцессора. 

как это? какого препроцессора? о_О
PM MAIL ICQ   Вверх
Kallikanzarid
Дата 8.12.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 240
Регистрация: 9.11.2008

Репутация: 2
Всего: 3



GoldFinch, Препроцессора С/С++. Прогоняешь через него файлы, и дефайны со вставками волшебным образом исчезают smile 

ksili, как я понимаю, речь идет о смартфонах? Я имел ввиду, что экономить 10 байт может иметь смысл лишь с очень ограниченными платформами, вроде старых мобильников.
PM MAIL   Вверх
ksili
Дата 8.12.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Kallikanzarid @  8.12.2008,  17:31 Найти цитируемый пост)
ksili, как я понимаю, речь идет о смартфонах?

Да, смартфоны, КПК, ... это наш клиент ))

Цитата(Kallikanzarid @  8.12.2008,  17:31 Найти цитируемый пост)
Препроцессора С/С++. Прогоняешь через него файлы, и дефайны со вставками волшебным образом исчезают

Не понял. Ломают обычно бинарник. Как ты его прогоняешь через препроцессор?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Kallikanzarid
Дата 8.12.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 240
Регистрация: 9.11.2008

Репутация: 2
Всего: 3



Цитата

Не понял. Ломают обычно бинарник. Как ты его прогоняешь через препроцессор? 

Тогда я ничего не понимаю smile Может, я неправильно истолковал слово "дифайны"?
PM MAIL   Вверх
mes
Дата 8.12.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(ksili @  8.12.2008,  13:37 Найти цитируемый пост)
Ломают обычно бинарник.

имелось ввиду несколько другое :
Цитата(dumb @  8.12.2008,  11:40 Найти цитируемый пост)
так же как и нет смысла вкрячивать в высокоуровневый код примитивную защиту извращаясь с дефайнами и вставками - для снятия оной вовсе не обязательно, чтобы механизм понимал любой "ламер" - достаточно одного немного продвинутого заинтересованного человека.




--------------------
PM MAIL WWW   Вверх
ksili
Дата 8.12.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Не, ну вы все-таки объясните. На С и асме пишется прога. Я так понимаю с расчётом на то, что её будет сложно взломать, ну или просто разобраться в ее коде в дизассемблере. Всё это предполагает то, что у злоумышленника будет бинарник, и не будет исходников. 
Что тогда такое "дефайн" в исполняемом файле? 
Что исчезнет в таком файле, после его прогона через препроцессор?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
mes
Дата 8.12.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(ksili @  8.12.2008,  13:48 Найти цитируемый пост)
Не, ну вы все-таки объясните. На С и асме пишется прога. Я так понимаю с расчётом на то, что её будет сложно взломать, ну или просто разобраться в ее коде в дизассемблере. 

по контексту речь идет о некоторых программистах, которые "портят" (с какой целью можно только предполагать) исходный код : 
Цитата
так же как и нет смысла вкрячивать в высокоуровневый код примитивную защиту извращаясь с дефайнами 




--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 8.12.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Kallikanzarid, речь шла от такой защите дефайнами и асм вставками
Код

#define RVA(rva) ;
#define IMPORT_THUNK //nothing

class ALineagePlayerController
{
public:
    IMPORT_THUNK void ALineagePlayerController::PlayerCalcView(class AActor *, class FVector *, class FRotator *) RVA(0xF1EB)
};


__declspec(naked) void imp_engine()
//make import
{ __asm{
    //_emit 0xCC
    pop eax // =func+0x10
    pop edx // =rva
    add edx,[g_hEngine] // = VA
    push edx
    sub edx,eax //=org_func-(func+0x10)
    add edx,0x10-5 //=org_func-(func+5)
    mov [eax-0x10+1],edx
    ret
}}
//==================== THUNCKS ===================================
#define IMPORT_THUNK __declspec(naked)
#define RVA(rva) {__asm jmp $+5 __asm nop __asm push rva __asm call imp_engine }
...
    IMPORT_THUNK void ALineagePlayerController::PlayerCalcView(class AActor *, class FVector *, class FRotator *) RVA(0xF1EB)

после автоанализа в ИДА бинарник выглядит весьма неплохо, на 1й взгляд, да и на 2й взгляд там будет немало возни с восстановлением импортов. и это еще самый простейший вариант)
PM MAIL ICQ   Вверх
mes
Дата 8.12.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GoldFinch @  8.12.2008,  14:10 Найти цитируемый пост)
после автоанализа в ИДА бинарник выглядит весьма неплохо, на 1й взгляд, да и на 2й взгляд там будет немало возни с восстановлением импортов. и это еще самый простейший вариант) 

 smile а сколько возни автору коду с подержкой всей этой ..ммм.. защитой. )  интересно в чем прелесть такой овчинки и стоит ли она выделки ?
только ради (мнимой) надежды что код не взломают ?  В принципе могут и не взломать.. это если как в анекдоте про неуловимого Джо... ;)


--------------------
PM MAIL WWW   Вверх
ksili
Дата 8.12.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Короче мы (GoldFinch, Kallikanzarid, mes и я) в этой теме - лебедь, рак и щука, и ёщё кто-то четвёртый  smile  smile 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
GoldFinch
Дата 8.12.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



mes, возни мало, зато куча преимуществ.
статический импорт не работает, т.к. для него надо иметь заголовочные (.h) файлы идентичные тем что были использованы при компиляции длл, иначе возникает несоответствие таблиц методов.
динамические импорты через getprocaddress неудобны изза использования указателей на методы (obj->*met)() вместо obj->met()
а такими приятно пользоваться в коде + их можно генерить скриптом
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.