2

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

这个想法是找到连续剧。当您输入序列号并按确定时,它会弹出一个消息框,如果正确,则会弹出一个消息框,其中包含用于挑战的密码,或者一条消息说序列号错误。为了解决这个问题,您应该在 0x1670FE 的二进制文件中找到明文密码。

我试图找到 IDA Pro,将您输入的字符串与二进制文件中的序列进行比较。

我希望能够找到它的比较位置,能够更改跳转以允许它接受任何错误的密码,或者更改它以使其接受任何密码。

我似乎无法做到这一点。我找到了消息框的显示位置(通过搜索 Messagebox 并添加断点),它将“Sorry”或“Correct”字符串的地址推入堆栈。

我尝试在这些字符串的地址和 Serial 本身上添加断点,但它似乎不起作用。IDA 似乎没有将它们识别为字符串,它们不会出现在 sting 窗口中。

我也尝试过返回此功能,但我达到了似乎无法再返回的地步。

任何帮助、信息或提示将不胜感激。我真的很想知道如何解决这种问题。

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

谢谢。

4

2 回答 2

2

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

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

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

稍后,它会检查 edx 是否大于 2 并执行跳转。我将其设置为无条件跳转,过了一会儿,它似乎再次检查字符串是否相同长度,我也将其设置为始终为真。

现在,无论您输入什么,程序都会给出密码。

有趣的是,似乎有 5/6 个有效的序列号,它们可能是从内存中的序列中生成的,或者是从其他地方获取的。当您输入无效的序列号时,它会将其与每个序列号进行比较,直到找到匹配项,然后显示成功或失败的消息框。

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

如果我回到 IDA 并再次查看,我现在可能能够找到支票。

于 2012-01-29T16:28:59.757 回答
1

有一个提示,你可能没有注意到。它说密码是纯文本格式。
那么您能否尝试找到更多关于如何了解二进制文件中的字符串的信息。
逆向工程并不总是意味着使用反汇编器或调试器打开。
有字符串,hexdump 等命令,了解更多。
希望能帮助到你。:)

于 2012-02-07T09:10:44.503 回答