1. Где то я прочитал, что API-функции сами освобождают стэк после окончания работы. Я хочу убрать этот call ds: MessageBoxA, а вместо нее вставить какую-нибудь дрянь типа mov eax, 666h Так вот вопрос в том, если параметры в стэк уже занесены, а функция не вызывается, то надо ли самому чистить стэк или оставить его в покое? Или может нужно убрать все эти push' ы, чтобы не засорять его?
2. Довольно часто сразу же после call ds:MessageBoxA идет call DebugBreak. Это видимо сделано, чтобы отладчик запутать? Можно ли забить эти debugbreak nop'ами ? Если поставить точки останова на вызов MessageBoxA, а после ее вызова стоит debugbreak, это означает, что отладчик не среагирует и не сможет указать, откуда произошел вызов функции?
3. Какая функция отвечает за появление окошка, в котором можно выбрать определенные опции и нажать ок или отмена? Если это MessageBoxA, то почему Softice не ловит точку останова при появлении подобного окошка?
Насчет MessageBoxA18.10.04 15:25 Автор: Neznaika <Alex> Статус: Member
> Я новичок и поэтому вопросы ламерские. > Исследую одну программу. Там есть примерно такие куски > > > .... > push 0 > push edx > push ecx > push ebx > call ds: MessageBoxA > cmp eax, 6 > jnz loc_1 > call loc_2 > ... > > 1.
push-и убрать.
> 2. Довольно часто сразу же после call ds:MessageBoxA идет > call DebugBreak.
А это не Сайс ли понаставил? Он иногда их "забывает".
> 3. Какая функция отвечает за появление окошка, в котором > можно выбрать определенные опции и нажать ок или отмена? > Если это MessageBoxA, то почему Softice не ловит точку > останова при появлении подобного окошка?
Дык, возьми Мастдайский DependsWalker и посмотри, че он импортирует.