Фундаментальные основы хакерства




Способ 0. Бряк на оригинальный пароль. - часть 3


0023:00406080 00 00 00 00 00 00 00 00-00 10 00 00 00 00 00 00  ................

0023:00406090 00 00 00 00 00 00 00 00-00 00 00 00 02 00 00 00  ................

0023:004060A0 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

0023:004060B0 00 00 00 00 00 00 00 00-00 00 00 00 02 00 00 00  ................

Есть контакт! Задумаемся еще раз (второй раз за этот день) чтобы проверить корректность введенного пользователем пароля защита, очевидно должна сравнить его с оригинальным. А раз так – установив точку останова на чтение памяти по адресу 0x406040, мы поймаем "за хвост" сравнивающий механизм. Сказано – сделано.

:bmpm 406040

Теперь нажимаем <CTRL-D> для выхода из отладчика (или отдаем команду "x") и вводим любой пришедший на ум пароль, например, "KPNC++". Отладчик "всплывает" незамедлительно:

001B:004010B0  MOV     EAX,[EDX]

001B:004010B2  CMP     AL,[ECX]

001B:004010B4  JNZ     004010E4                                      (JUMP ^)

001B:004010B6  OR      AL,AL

001B:004010B8  JZ      004010E0

001B:004010BA  CMP     AH,[ECX+01]

001B:004010BD  JNZ     004010E4

001B:004010BF  OR      AH,AH

Break due to BPMB #0023:00406040 RW DR3  (ET=752.27 milliseconds)

  MSR LastBranchFromIp=0040104E

    MSR LastBranchToIp=004010A0

В силу архитектурных особенностей процессоров Intel, бряк срабатывает после инструкции, выполнившей "поползновение", т.е. CS:EIP указывают на следующую выполняемую команду. В нашем случае – JNZ 004010E4, а к памяти, стало быть, обратилась инструкция CMP AL, [ECX]. А что находится в AL? Поднимаем взгляд еще строкой выше – "MOV EAX,[EDX]". Можно предположить, что EСX содержит указатель на строку оригинального пароля (поскольку он вызвал всплытие отладчика), а EDX в таком случае – указатель на введенный пользователем пароль. Проверим наше предположение.

:d edx

0023:00406040 6D 79 47 4F 4F 44 70 61-73 73 77 6F 72 64 0A 00  myGOODpassword..




Содержание  Назад  Вперед