English 中文(简体)
工作重叠如何?
原标题:How does decompiling work?

我听到了以前几次使用的“不匹配”一词,我开始对它如何运作感到非常奇怪。

我对它如何运作有着非常一般的想法;相反,工程申请要看它使用什么职能,但我不知道这种职能之外的情况。

我也听到了“disgroupr”这一术语,即:一个解体的集会者和一个失败者之间的区别是什么?

www.un.org/spanish/ecosoc 因此,总结我的问题:。 哪些人卷入了欺骗性的东西? 通常如何做? 这一过程究竟是多么复杂? 它可以制定确切的法典? comp子和 dis子之间的区别是什么?

最佳回答

Ilfak Guilfanov, the author of Hex-Rays Decompiler>,就他在一些会场的内部工作发表了演讲,这里是

Apart from that, there are some quite old papers, e.g. the classical PhD thesis of Cristina Cifuentes.

至于复杂性,所有的“不匹配”都取决于双手的语言和操作时间。 例如,不匹配。 NET和Java被视为“孤独”,因为有免费提供的comp子,其成功率非常高(产生原始来源)。 但这是由于这些运行时间使用的虚拟机器的特殊性质造成的。

As for truly compiled languages, like C, C++, Obj-C, Delphi, Pascal, ... the task get much more complicated. Read the above papers for details.

解体者与失败者之间的区别是什么?

如果有双轨方案(可执行,DL图书馆,......),则由处理人的指示组成。 这些指示的语文称为assembly(或组)。 在双轨制中,这些指示被编码为双轨制,以便加工商能够直接执行。 disgroupr采用该双亲代码,将其转化为文字代表。 这一译文通常为1至1,即一项指示作为一行案文。 这项任务很复杂,但很直截了当,方案只是需要了解所有不同的指示,以及它们是如何代表双亲的。

另一方面,decompiler的任务要艰巨得多。 采用双亲代码或组别产出(基本相同,因为它是一至一),并编制高层次代码。 让我举一个例子。 我们有这一职能:

int twotimes(int a) {
    return a * 2;
}

汇编者在编辑这一职能时首先生成assembly file<>em>。

_twotimes:
    SHL EAX, 1
    RET

(第1行只是一个标签,而不是一个真正的指示,SHL 确实是一种转移式操作,其快速乘以2,RET,即该功能得以履行)。 因此,它希望:

08 6A CF 45 37 1A

(I made that up, not real binary instructions). Now you know, that a disassembler takes you from the binary form to the assembly form. A decompiler takes you from the assembly form to the C code (or some other higher-level language).

问题回答

不完整从根本上说是汇编工作的逆转。 也就是说,采用目标代码(统一法),并试图从中收回来源代码。

分解取决于物体代码中可用于确定源代码结构的工艺品。

由于C/C++,很难帮助脱离进程,因此很难。 然而,由于 Java语和C#语以及以虚拟机器为目标的其他语言,因此很容易分解,因为语言在物体代码中留下更多的背心。





相关问题
Is it possible to prevent decompilation of .NET MSIL DLL?

Almost all the .net assemblies can be de-compiled using Reflection .Which means that all .net products are open source since the code can be easily be used by other developers. Isnt there a way so ...

net reflector and visual studio

I ve lost the source code for one of my programs. Is there anyway to disassemble all the code in .Net reflector and then load it into Visual Studio (express preferably), and hopefully get the ...

How to protect the source of a delphi app?

How could I protect my delphi app from being decompiled? I know there are some software like themida that I think will do that but then the protected exe trigger the antivirus.

Get source from pre-compiled ASP.NET website? [closed]

Long story short, VSS decided I wasn t allowed to have some code changes. I am missing a decent sized feature that I don t want to have to re-write (gave to a co-op as work this past summer). It works ...

Refactor packages in a Jar

I have a requirement that i need to load two versions of a jar at once. To avoid class path collisions I d like to rename the packages of one of the jars. Then in source you could always easily ...