此应用程序是网站hackthissite.org上的第一个应用程序挑战。
想法是找到序列号。当您输入序列号并按确定时,它会弹出一个消息框,其中包含用于质询的密码(如果正确),或者显示序列错误的消息。 要解决这个挑战,您应该在0x1670FE处找到二进制文件中的明文密码。
我试图找到IDA Pro,其中输入的字符串与二进制文件中的序列进行比较。
我希望能够找到它的比较位置,能够更改跳转以允许它接受任何错误的密码,或者更改它以便接受任何密码。
我似乎无法做到这一点。我已经找到了消息框的显示位置(通过搜索Messagebox并添加断点),它将“Sorry”或“Correct”字符串的地址推送到堆栈。
我尝试在这些字符串的地址和Serial本身上添加断点,但它似乎不起作用。 IDA似乎没有将这些视为字符串,它们不会出现在刺痛窗口中。
我也尝试过追回这个功能但是我达到了一个我似乎无法再回头的地步。
非常感谢任何帮助,信息或提示。我真的想知道如何解决这类问题。
对不起,如果这是一个非常基本的问题。
感谢。
答案 0 :(得分:2)
我无法使用IDA Pro解决这个问题,所以我使用Ollydbg来解决这个问题。
通过将序列设置为“TEST”,按下Authenticate后,我能够在内存中找到该字符串或串口本身。
通过在串行内存访问上设置断点,我能够向后工作并找到comparetring函数,它比较了两个字符串。
在此之后不久,它会检查edx是否大于2并执行跳转。我把它设置为一个无条件的跳转,在那之后它似乎再次检查字符串是否是相同的长度,我设置为总是也是真的。
现在无论您输入什么内容,程序都会提供密码。
有趣的是,似乎有5/6个有效序列号,可能是从内存中产生的序列号或从其他地方获取的序列号。输入无效序列时,会将其与每个序列号进行比较,直到找到匹配项,然后显示成功或失败的消息框。
遗憾的是我在IDA Pro中找不到答案,但我认为ollydbg是更好的工具。
如果我回到IDA再看一遍,我现在可能会找到支票。
答案 1 :(得分:1)
给出了一个提示,可能你可能没有注意到。它说密码是纯文本格式。
那么你可以尝试找到更多关于如何知道二进制文件中的字符串的信息。
逆向工程并不总是意味着使用拆卸器或调试器打开。
有字符串,hexdump等命令,对此有更多的了解。
希望它有所帮助。 :)