反编译器设计全解析
1. 通用反编译器概述
在反编译领域,有一种简单的方法试图枚举任意属性语法的所有有效短语,然后将这些短语与它们的原始源代码进行反向匹配。但这种方法并不实用,不能简单地使用Lex和Yacc来恢复代码。
Cristina Cifuentes的反编译器dec是一个在1993 - 1994年由昆士兰科技大学编写的不完整反编译器。它与早期的反编译器不同,它是从二进制文件而不是部分编译的对象中恢复源代码。虽然Cifuentes和她的同事遇到了一些障碍,但他们引入了一些有趣的概念,特别是在处理类似于对象的字节码时。
dec由三个模块组成:
- 前端加载器/解析器 :模拟操作系统加载器,解析输入流并生成更高级的中间代码。
- 通用反编译机(UDM) :进行程序的流分析,构建控制流图(CFG),并将高级程序拆分为一系列基本块。
- 后端代码生成器 :将高级语言映射到目标语言,在dec中目标语言是C。
下面是dec的工作流程mermaid图:
graph LR
A[前端加载器/解析器] --> B[通用反编译机(UDM)]
B --> C[后端代码生成器]
2. 前端模块详解
前端模块的主要功能是模拟操作系统加载器,解析输入流并生成中间代码。具体步骤如下:
1. 解析输入流 :从虚拟加载器确定的入口点
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



