反编译资源与理论

| 关于编译器的理论和技术,必须有一百万本书籍和论文。是否有任何资源可以做相反的事情?我对任何特定的硬件平台都不感兴趣。寻找好的书籍/研究论文来深入研究这个主题和困难。     
已邀请:
我已经在AS3和Java反编译器上进行过研究,可以向您保证,我从反编译中学到的一切都直接来自编译器理论。中间表示,数据流分析,术语重写和其他相关概念都可以在《龙书》中找到。     
反编译确实是错误的称呼。反编译器将目标代码编译为源表示形式。在许多方面,它们比传统的编译器更容易编写-\'source \'代码已经过语法检查,通常格式非常精确。 他们建立一个(地址的)符号表并构造该应用程序的目标语言表示。通常的困难是,原始编译器必须通过删除常见的子表达式,从循环中提升常量代码和许多其他类似技术来或多或少地优化原始应用程序。这些通常不可能以目标语言来表示。 如果源来自定义良好的VM,则通常会将这种优化留给JIT编译器,并且所产生的反编译代码非常易读-在许多情况下几乎与原始代码完全相同。这种类型的编译器通常在目标代码中保留一些或所有符号,以使这些符号可以恢复。其他包括行号以帮助进行调试和故障排除。这些都有助于恢复原始代码。 作为计数器,有一些代码混淆器会故意对代码进行转换,从而通过加扰名称,更改生成的序列代码(而不更改其最终含义)并引入没有源语言的构造来阻止对原始源的简单恢复。当量。     
我在这里写了关于动态语言的反编译器。 请注意,尽管这是针对具有自定义(高级)VM的动态语言的。     

要回复问题请先登录注册