Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #66, МАЙ 2006 г.

жестокая пенетрация hiew’ом

GPCH (ADMIN@DOTFIX.NET)

Спецвыпуск: Хакер, номер #066, стр. 066-072-6


Листинг 7

.00407FCD: 80BDFCFDFFFF00 cmp b,[ebp][-00000204],0

.00407FD4: 7517 jne .000407FED --?1

.00407FD6: 6A40 push 000000040 ;'@'

.00407FD8: 680C814000 push 00040810C ;'Error'

.00407FDD: 6814814000 push 000408114 ;'Enter a Serial'

.00407FE2: 53 push ebx

.00407FE3: E888C6FFFF call MessageBoxA ;user32 --?4

.00407FE8: E9B9000000 jmp .0004080A6 --?5

.00407FED: 80BDFCFEFFFF00 cmp b,[ebp][-00000104],0

.00407FF4: 7517 jne .00040800D --?6

.00407FF6: 6A40 push 000000040 ;'@'

.00407FF8: 680C814000 push 00040810C ;'Error'

.00407FFD: 6824814000 push 000408124 ;'Enter a Name'

.00408002: 53 push ebx

.00408003: E868C6FFFF call MessageBoxA ;user32 --?4

Сравниваем [ebp][-00000204] с нулем. Если «равно», выводим «Неверный серийник». Логично было бы предположить, что серийник лежит по адресу [ebp-204]. Смотрим ниже. Теперь с нулем сравнивается [ebp-204] и выводится сообщение о неверном имени пользователя. Ага, наконец выяснено, что имя находится в [ebp-204]. Внимание на листинг 8.

Листинг 8

.0040800D: 8D85F8FDFFFF lea eax,[ebp][-00000208]

.00408013: 8D95FCFEFFFF lea edx,[ebp][-00000104]

.00408019: B900010000 mov ecx,000000100 ;' ? '

.0040801E: E819B8FFFF call .00040383C --?2

.00408023: 8B85F8FDFFFF mov eax,[ebp][-00000208]

.00408029: 8D55FC lea edx,[ebp][-04]

.0040802C: E8E3FDFFFF call .000407E14 --?3

.00408031: 8D85F4FDFFFF lea eax,[ebp][-0000020C]

.00408037: 8D95FCFDFFFF lea edx,[ebp][-00000204]

.0040803D: B900010000 mov ecx,000000100 ;' ? '

.00408042: E8F5B7FFFF call .00040383C --?2

.00408047: 8B95F4FDFFFF mov edx,[ebp][-0000020C]

.0040804D: 8B45FC mov eax,[ebp][-04]

.00408050: E8EBB8FFFF call .000403940 --?4

.00408055: 752F jne .000408086 --?5

Н-да, ясно: без отладчика не разберешься, какой Call и какую функцию выполняет. Все же взглянем на каждый из них. Похоже, первый просто переносит имя пользователя в другую переменную. Второй же криптует ее. Пролистаем код по адресу 407E14. О чудо:

.00407E99: 68EC7E4000 push 000407EEC ;'HZF-'

.00407E9E: FF75F4 push d,[ebp][-0C]

.00407EA1: 68FC7E4000 push 000407EFC ;'-GFD'

Если не подключать к делу дебаггер, то этот код ты поймешь только логически. Как я подозреваю, пароль может складываться как: 'HZF-' + [ebp][-0C] + '-GFD'. Проверим ЭТО. По листингам выше мы знаем адрес MessageBoxA в IAT. Так и вызовем его, а в параметрах укажем [ebp][-0C]. Прямо после

push 000407EFC ;'-GFD'

жми <F3> и набирай. У меня получилось нечто, по виду напоминающее содержимое листинга 9:

Листинг 9

.00407E99: 68EC7E4000 push 000407EEC ;'HZF-'

.00407E9E: FF75F4 push d,[ebp][-0C]

Назад на стр. 066-072-5  Содержание  Вперед на стр. 066-072-7