此应用程序是网站hackthissite.org上的第一个应用程序挑战。
我们的想法是找到这个连续剧。当你输入序列号并按ok时,它会弹出一个消息框,如果是正确的,则会弹出一个消息框来输入质询的密码,或者弹出一条消息,指出序列号是错误的。为了解决这个问题,您应该找到明文形式的密码,该密码的二进制地址为0x1670FE。
我正在尝试查找IDA Pro,其中您输入的字符串与二进制文件中的序列进行了比较。
我希望能够找到它被比较的地方,能够改变跳转,允许它接受任何错误的密码,或者改变它,使它接受任何密码。
我好像不能这么做。我已经找到了消息框的显示位置(通过搜索Messagebox和添加断点),它将“对不起”或“正确”字符串的地址推送到堆栈中。
我尝试在这些字符串的地址和Serial本身上添加断点,但似乎不起作用。IDA似乎没有将它们识别为字符串,它们不会出现在提示窗口中。
我也试着回溯这个函数,但是我已经到了不能再回溯的地步了。
任何帮助、信息或提示都将不胜感激。我真的很想知道如何解决这类问题。
如果这是一个非常基本的问题,很抱歉。
谢谢。
发布于 2012-01-30 00:29:00
我不能使用IDA Pro解决这个问题,所以我尝试使用Ollydbg。
通过将序列设置为类似于"TEST“的内容,在按下身份验证后,我能够在内存或序列本身中找到该字符串。
通过在串行内存访问上设置断点,我能够向后工作并找到comparestring函数,在该函数中比较两个字符串。
一段时间后,它检查edx是否大于2,并执行跳转。我将其设置为一个无条件跳转,之后一段时间,它似乎再次检查字符串的长度是否相同,我也将其设置为始终为真。
现在,无论您输入什么,程序都会给出密码。
有趣的是,似乎有5/6的有效序列,可能它是从内存中的序列生成的,或者是从其他地方生成的。当您输入无效的序列时,它会将其与每个序列进行比较,直到找到匹配项,然后显示成功或失败的消息框。
遗憾的是,我无法在IDA Pro中找到这个问题的答案,但我认为ollydbg是更好的工具。
如果我回到IDA再看一遍,我现在可能就能找到支票了。
发布于 2012-02-07 17:10:45
这里给出了一个提示,你可能没有注意到。它说密码是纯文本格式的。
所以你可以尝试找到更多关于如何知道二进制文件中的字符串的信息吗?
逆向工程并不总是意味着用反汇编程序或调试器打开。
有像字符串,十六进制转储等的命令,了解更多。
希望能有所帮助。:)
https://stackoverflow.com/questions/9041288
复制相似问题