2016-02-18 3 views
0

Пожалуйста, подскажите, где есть проверка состояния в коде? Как определить, какой пароль из трещины является «Benadryl» в IDA Pro? Как я понял, есть вызов функции «call sub_4038D0», если над паролем правильно, мы прыгаем на loc_42D555. Помогите понять, как это работает? enter image description hereКак анализировать вызов функции (sub_41A1b8) для решения crackme с помощью IDA Pro?

enter image description here

ответ

3

jz short loc_42D555 переходит к loc_42D555, если нулевой флаг установлен. В противном случае он выполняет следующую команду.

Обратите внимание, что следующая инструкция содержит ссылку на ошибку («Неверный код DUDE»). Также обратите внимание, что loc_42D555 - это адрес, на который ссылается строка успеха («Спасибо, что вы сделали ...»).

Так что если флаг нуля установлен в инструкции jz short loc_42D555, вы, вероятно, решили трещину.

В предыдущей инструкции вызывается функция sub_41A1b8. Скорее всего, эта функция устанавливает флаг нуля, если строки, указанные в eax и edx (в этом случае ваша входная строка и «Benadryl») равны, но вам необходимо проанализировать функцию sub_41A1b8, чтобы это точно знать.

Чтобы понять это, вам необходимо изучить сборку x86. Есть plentyoftutorials, чтобы помочь вам приступить к работе.

+0

спасибо. Оказывается, нужно вмешаться в функцию sub_41A1b8? В конце концов, это можно сделать в IDA? Или только в OllyDbg? Извините, что я - манекен в этом вопросе. Я буду изучать больше :( – Diana

+0

Чтобы точно знать, что происходит в функции 'sub_41A1B8', да, вам нужно будет проанализировать эту функцию. Вы можете войти с помощью отладчика, такого как OllyDbg, или просто дважды щелкнуть имя функции в IDA. При этом стоимость этого упражнения полностью потеряна, если вы не изучите основы сборки x86 в первую очередь. В противном случае вы не сможете окончательно понять эту функцию. – user1354557

+0

ОК, я понимаю) Еще раз, спасибо за ответы) – Diana