【问题标题】:Reverse Engineer Simple Application with IDA Pro 5使用 IDA Pro 5 逆向工程简单应用程序
【发布时间】:2012-02-20 21:56:17
【问题描述】:

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

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

我试图在 IDA Pro 中找到您输入的字符串与二进制中的序列号进行比较的位置。

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

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

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

我也尝试过返回此功能,但我似乎无法再返回。

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

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

谢谢。

【问题讨论】:

  • 你为什么要发布一个二进制文件的链接,而这个二进制文件据说可以从更知名的来源获得?
  • @paxdiablo - 如果我可以 +1 一个“编辑”,你会得到我的 +1。
  • 我猜该网站需要注册。
  • Thanjs,@Steve,我只是认为学习黑客艺术的人的可执行文件有点“危险”:-)
  • 是的,我添加二进制文件只是为了省去人们注册的麻烦(不过我确实先用防病毒软件扫描了它)。无论如何,感谢您花时间阅读本文。希望您能给我一些关于如何分解和更好地理解这一点的建议?

标签: windows assembly reverse-engineering disassembly ida


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 2014-09-18
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多