Пожалуйста, подскажите, где есть проверка состояния в коде? Как определить, какой пароль из трещины является «Benadryl» в IDA Pro? Как я понял, есть вызов функции «call sub_4038D0», если над паролем правильно, мы прыгаем на loc_42D555. Помогите понять, как это работает? Как анализировать вызов функции (sub_41A1b8) для решения crackme с помощью IDA Pro?
ответ
jz short loc_42D555
переходит к loc_42D555
, если нулевой флаг установлен. В противном случае он выполняет следующую команду.
Обратите внимание, что следующая инструкция содержит ссылку на ошибку («Неверный код DUDE»). Также обратите внимание, что loc_42D555
- это адрес, на который ссылается строка успеха («Спасибо, что вы сделали ...»).
Так что если флаг нуля установлен в инструкции jz short loc_42D555
, вы, вероятно, решили трещину.
В предыдущей инструкции вызывается функция sub_41A1b8
. Скорее всего, эта функция устанавливает флаг нуля, если строки, указанные в eax
и edx
(в этом случае ваша входная строка и «Benadryl») равны, но вам необходимо проанализировать функцию sub_41A1b8
, чтобы это точно знать.
Чтобы понять это, вам необходимо изучить сборку x86. Есть plentyoftutorials, чтобы помочь вам приступить к работе.
спасибо. Оказывается, нужно вмешаться в функцию sub_41A1b8? В конце концов, это можно сделать в IDA? Или только в OllyDbg? Извините, что я - манекен в этом вопросе. Я буду изучать больше :( – Diana
Чтобы точно знать, что происходит в функции 'sub_41A1B8', да, вам нужно будет проанализировать эту функцию. Вы можете войти с помощью отладчика, такого как OllyDbg, или просто дважды щелкнуть имя функции в IDA. При этом стоимость этого упражнения полностью потеряна, если вы не изучите основы сборки x86 в первую очередь. В противном случае вы не сможете окончательно понять эту функцию. – user1354557
ОК, я понимаю) Еще раз, спасибо за ответы) – Diana