使用IDA Pro 5反向工程简单应用程序

此应用程序是hackthissite.org网站上的第一个应用程序挑战。

这个想法是find序列号。 当您input序列号并按OK时,如果input正确,则会popup一个带有密码的消息框,或者显示一条说明串行错误的消息。 为了解决这个难题,你应该在0x1670FE的二进制文件中find明文密码。

我试图findIDA Pro,你input的string与二进制中的串行进行比较。

我想能够find它的比较,能够改变跳转,以允许它接受任何错误的密码,或改变它,所以它接受任何密码。

我似乎无法做到这一点。 我发现消息框显示的位置(通过searchMessagebox并添加断点),将“Sorry”或“Correct”string的地址压入堆栈。

我已经尝试在这些string的地址和串行本身上添加断点,但似乎并不奏效。 国际开发协会似乎没有认识到这些string,他们不显示在刺痛的窗口

我也试图追随这个function,但是我达到了一个我似乎无法回头的地步。

任何帮助,信息或技巧将不胜感激。 我真的很想知道如何解决这类问题。

对不起,如果这是一个非常基本的问题。

谢谢。

我无法使用IDA Pro解决这个问题,所以我使用Ollydbg来解决这个问题。

通过将序列设置为“TEST”之类的内容,在按下Authenticate之后,我能够在内存或串行本身中找到该字符串。

通过在串行存储器访问上设置一个断点,我能够反向工作并找到比较两个字符串的比较字符串函数。

过了一会儿,它检查edx是否大于2并执行跳转。 我把它设置为一个无条件的跳转,在这之后的一小段时间,似乎再次检查这些字符串的长度是否相同,我也总是这样设置。

现在程序给出了密码,不管你输入什么。

有趣的是,似乎有5/6有效的连续出版物,也许它是从记忆中产生的或从其他地方得到的。 当你输入一个无效的序列时,它会把它和每个序列进行比较,直到找到一个匹配,然后显示成功或失败的消息框。

很遗憾,在IDA Pro中我找不到这个答案,但我认为ollydbg是这个工作的更好的工具。

如果我回到IDA再看一眼,我现在可能会找到支票。

有一个提示,可能你可能没有注意到。 它说密码是纯文本格式。
所以你可以尝试找到更多关于如何知道二进制内的字符串。
反向工程并不总是意味着用拆装器或调试器打开。
有像字符串,十六进制等命令,知道更多的。
希望能帮助到你。 🙂