Реферат: Как ломать программы Windows C EDSON UCF, перевод Mr.BocoTCP
:bc 0
(0 - это номер брейкпоинта в списке брейкпоинтов)
И установим новый:
:bpx getdlgitemtexta
Ну что ж, попробуем еще раз...
3.1.3 В отладчике
Wow! Работает! Теперь вы в SoftICE, в самом начале функции GetDlgItemTextA. Чтобы попасть туда, откуда она была вызвана, нажмите F11. Теперь Вы внутри модуля SGLSET.EXE. Если Вы не уверены - посмотрите на строчку между окном кода и окном командной строки, она должна выглядеть так:
----------SGLSET!.text+1B13----------
Сейчас Вы уже можете запретить реакцию на вызов функции:
:bd 0
Если Вам вдруг захочется снова разрешить ее, наберите:
:be 0
Первая строка в окне кода выглядит так:
CALL [USER32!GetDlgItemTextA]
Чтобы посмотреть строчки над ней, нажимайте Ctrl+Up ("стрелка вверх") до тех пор, пока не увидите нижеприведенный кусок кода. Если Вы ничего не понимаете в Ассемблере, я добавил комментарии которые могут Вам помочь.
RET ; Конец функции
PUSH EBP ; Начало другой функции
MOV EBP, ESP ; ...
SUB ESP, 0000009C ; ...
PUSH ESI ; ...
> LEA EAX, [EBP-34] ; EAX = EBP-34
PUSH EDI ; ...
MOVE ESI, ECX ; ...
PUSH 32 ; Макс. длина строки
> PUSH EAX ; Адрес текстового буфера
PUSH 000003F4 ; Идентификатор управления
PUSH DWORD PTR [ESI+1C] ; Идентификатор окна диалога
CALL [USER32!GetDlgItemTextA] ; Получить текст
Команды PUSH означают сохранение значений для последующего использования.