【问题标题】:How to disassembler exe file With API windows? [closed]如何使用 API 窗口反汇编 exe 文件? [关闭]
【发布时间】:2014-02-04 12:21:46
【问题描述】:

我编写了一个打开 exe 文件的程序。我希望该程序读取一些特定的汇编指令及其在 exe 文件中的地址。例如 JAM 或 Call。 那么,我应该使用哪些 API 函数。如果您知道任何其他有用的资源,请告诉我;)

【问题讨论】:

    标签: c++ c visual-c++ assembly


    【解决方案1】:

    如果您想读取 Windows PE 文件(便携式可执行文件)中的代码,您首先必须找到代码部分。

    如何找到这个取决于 exe 是 32 位还是 64 位(尽管它们的内部结构几乎相同),但我建议你研究 PE 格式http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

    之后,您必须找到您的呼叫代码或任何您想要的地址所在的地址。你想用那个二进制代码做什么取决于你,如果你打算将它翻译成asm人类可读的代码,你需要一个翻译器(或者自己编写一个代码......对于初学者来说很难),例如distorm(GPL 和商业许可)。

    我希望这能让你开始做你想做的事。

    【讨论】:

    • 我照你说的做了。我翻译有问题。我不知道真正的反汇编是如何工作的
    • 您有想要解释为 asm 代码的十六进制代码?我建议你使用我链接的库,它简单有效。否则从这里开始(假设 x64 系统):intel.com/content/www/us/en/processors/…
    • 我读取了 exe 文件并将它们保存在内存中,这就是十六进制。
    • 我有开始部分的地址
    • 我会用它告诉你结果。谢谢哥们;)
    【解决方案2】:

    使用反汇编库是一个很好的开始,Capstone 就是其中之一,但还有更多。

    然后你需要解析PE可执行格式来提取代码发送到你的反汇编库...

    但在那个领域库也存在,例如radare 支持大多数架构和格式(并且它可以与多个反汇编库一起使用,包括 Capstone)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2013-06-11
      • 1970-01-01
      • 2010-10-29
      • 2013-11-03
      相关资源
      最近更新 更多