如何用IDA Pro分析破解crackme的函数调用(sub_41A1b8)?
How to analyze the function call (sub_41A1b8) for solving crackme with IDA Pro?
请提示代码中哪里有条件检查?如何定义,IDA Pro 中 crackme 的密码是 "Benadryl"?据我了解,如果密码正确,则会调用 "call sub_4038D0" 函数,我们跳转到 loc_42D555。帮助理解它是如何工作的?
如果设置了零标志,jz short loc_42D555
跳转到 loc_42D555
。否则执行下一条指令。
请注意,下一条指令是引用失败字符串 ("Wrong code DUDE") 的地方。另请注意,loc_42D555
是引用成功字符串 ("Thanks you made...") 的地址。
因此,如果在 jz short loc_42D555
指令处设置了零标志,那么您可能已经解决了 crackme。
在前面的指令中,调用了sub_41A1b8
函数。如果 eax
和 edx
中引用的字符串(在本例中,您的输入字符串和 "Benadryl")中引用的字符串相等,则此函数很可能设置零标志,但您需要分析 sub_41A1b8
函数来确定这一点。
请提示代码中哪里有条件检查?如何定义,IDA Pro 中 crackme 的密码是 "Benadryl"?据我了解,如果密码正确,则会调用 "call sub_4038D0" 函数,我们跳转到 loc_42D555。帮助理解它是如何工作的?
jz short loc_42D555
跳转到 loc_42D555
。否则执行下一条指令。
请注意,下一条指令是引用失败字符串 ("Wrong code DUDE") 的地方。另请注意,loc_42D555
是引用成功字符串 ("Thanks you made...") 的地址。
因此,如果在 jz short loc_42D555
指令处设置了零标志,那么您可能已经解决了 crackme。
在前面的指令中,调用了sub_41A1b8
函数。如果 eax
和 edx
中引用的字符串(在本例中,您的输入字符串和 "Benadryl")中引用的字符串相等,则此函数很可能设置零标志,但您需要分析 sub_41A1b8
函数来确定这一点。