如何用IDA Pro分析解决crackme的函数调用(sub_41A1b8)?

Dia*_*ana 1 cracking reverse-engineering ida

请提示代码中哪里有条件检查?如何定义IDA Pro中crackme的密码是“Benadryl”?据我了解,如果密码正确,就会调用“call sub_4038D0”函数,我们会跳转到 loc_42D555。帮助理解它是如何工作的? 在此输入图像描述

在此输入图像描述

use*_*557 5

jz short loc_42D555loc_42D555如果设置了零标志则跳转到。否则执行下一条指令。

请注意,下一条指令是引用失败字符串(“错误代码 DUDE”)的地方。另请注意,这loc_42D555是引用成功字符串(“Thanks you made...”)的地址。

因此,如果指令中设置了零标志jz short loc_42D555,您可能就解决了破解问题。

在前面的指令中,sub_41A1b8调用了该函数。eax如果和中引用的字符串edx(在本例中为您的输入字符串和“Benadryl”)相等,则此函数很可能会设置零标志,但您需要分析该sub_41A1b8函数才能确定这一点。

要理解这一点,您需要学习 x86 汇编。有很多 教程可以帮助 入门。