Сейчас на форуме: tyns777 (+4 невидимых) |
eXeL@B —› Программирование —› Неверная работа со стеком |
Посл.ответ | Сообщение |
|
Создано: 11 мая 2010 06:19 · Личное сообщение · #1 Всем привет! Имеем фунцию на асме: Code:
Работает как нужно. Вот аналог на C Code:
Работает не совсем как нужно. При компиляции асм код заканчивается на RETN10, а код на С - RETN. Ну очевидно после RETN10 ESP=ESP+4+10, после RETN ESP=ESP+4 Вопрос: Как это заставить код на C использовать RETN10 (программно, без патча)? Для примера могу предложить прикрепленный файл и wasm.ru/pub/1/files/tut33.zip. При нажатии на кнопку "21" программа вызывает функцию BitBtn2Click из hookle.dll. Ошибка при выполнении SendMessage ... STREAMIN. Пытается прочитать адрес памяти, значение которой совпадает с hFile (такой уж попался в стеке). d1a8_10.05.2010_CRACKLAB.rU.tgz - 011.rar |
|
Создано: 11 мая 2010 08:25 · Поправил: Vamit · Личное сообщение · #2 Bonez92 пишет: Вопрос: Как это заставить код на C использовать RETN10 (программно, без патча)? Используй в опциях компилятора или явно нужную конвенцию вызова функции Code:
в твоем случае это - __cdecl PS: Извиняюсь, ошибся спросонок, конечно, __stdcall ----- Everything is relative... |
|
Создано: 11 мая 2010 10:16 · Личное сообщение · #3 |
|
Создано: 11 мая 2010 14:06 · Личное сообщение · #4 |
eXeL@B —› Программирование —› Неверная работа со стеком |
Эта тема закрыта. Ответы больше не принимаются. |