【问题标题】:How to decompile an exe or a dll to assembly如何将 exe 或 dll 反编译为程序集
【发布时间】:2011-06-01 17:39:27
【问题描述】:

我真的对汇编语言很感兴趣,我想了解 exe 文件是如何工作的,如何运行 dll 等等……我有一个想法,我想编写一个应用程序来将 exe 反编译为汇编代码,因为我不是一个很好的人汇编程序员,由于缺乏对 exe 内部工作的了解,我无法做到。由于我可以读取十六进制的 exe,我认为这并非不可能,但我不知道如何编写自己的程序。任何资源或任何帮助将不胜感激。

【问题讨论】:

    标签: dll assembly exe decompiling


    【解决方案1】:

    如果您对汇编程序级别的编译程序的外观感兴趣,则更有意义的方法是编译并查看生成的程序集。例如,对于 gcc/g++,这只需要 gcc -c -S filename.c 并且会留下一个明文汇编文件供查看。

    【讨论】:

    • 这里假设你有程序的源代码,并且使用的程序可以被GCC编译,例如C、C++、Objective-C、Objective-C++、Fortran、Ada、D 、Go 和 BRIG。
    • @AlexanderRyanBaggett:您也可以反汇编目标文件,例如对于 linux,您可以使用 objdump。但是编译你自己的代码并查看它的外观更简单,并且允许进行试验。今天它仍然相当困难,特别是如果您正在使用优化进行编译;但是我记得 Turbo Pascal 为 8086 生成的代码非常容易理解。
    【解决方案2】:

    已经为您编写了很多反汇编程序(见上文),但我认为阅读反汇编代码不会帮助您成为更好的汇编编写者。主要原因是编译器在生成程序集之前会进行大量优化。这通常会导致代码阅读起来非常棘手,但代码分析效率很高。

    【讨论】:

    • +1 它可以帮助您(汇编语言初学者)感到困惑
    • 我对这个回复投了反对票,因为这不是一个答案,只是试图阻止 OP 尝试反汇编。再想一想,由于这在某种程度上是一个有效的评论,我想撤消反对票,但 SO 不会让我这样做。
    【解决方案3】:

    看看这个Decompilation Wiki,我想它会回答你的大部分问题。

    【讨论】:

    • 我假设你要去接受普通教育,顺便说一句。
    【解决方案4】:

    我认为您正在寻找反汇编程序而不是反编译程序。 IDA pro 似乎很受欢迎,您可以在http://www.hex-rays.com/idapro/idadownfreeware.htm免费下载旧版本

    【讨论】:

    • 有什么方法可以反编译 64 位应用程序?
    • 当然有。最新版本的 IDA 可以做到这一点(就像许多其他版本一样),它不是免费的。
    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多