论文笔记 TIE: Principled Reverse Engineering of Types in Binary Programs
来源:互联网 发布:淘宝商品怎么编辑 编辑:程序博客网 时间:2024/04/30 11:32
这篇论文讲述的是作者们发明的一种从二进制代码恢复到高级语言的逆向工程的一种新方法。这里只对其流程和思想进行介绍,详细的过程在后面再做讨论。高级语言在编译过程中丢失了buffer、structures和local variables等data abstractions。data abstractions恢复的逆向工程包括两个部分: 变量恢复(variable recovery),从low-level code 识别high-level variables。论文中举了一个例子:他们根据参数是通过ebp offsets获取的,通过不同ebp的数目推测参数的数目。类型恢复:确定每一变量的类型,这个更有挑战性。还好了解已编译代码中的按字节编址的内存(byte-addressable memory)和寄存器。例如一个变量被放入eax(一种32位通用寄存器),我们可以推测它的类型和32位寄存器相匹配,却很难推测他是高级语言中的有符号整形、指针还是结构体。类型还可以通过控制流来推断。
TIE(Type Inference on Executables)的核心是基于二进制代码分析的变量类型恢复方法。概括来说类型重建(type reconstruction)是通过代码调用的hints来推断类型。type reconstruction 根据这些hints建立了一些列规则。
变量恢复:首先用BAP(Binary Analysis Platform)将二进制程序装换成二进制中间语言BIL(Binary Intermediate Language),SSA(Static Single Assignment)解决寄存器使用冲突问题,处理之后的BIL我们称之为SSA形式的program。DVSA算法处理SSA形式的program,输出变量在内存中的地址信息和别名信息。
类型恢复:首先建立一个类型系统(type system),对不同类型进行抽象表示,type system是分析的基础,根据BIL program的内容生成类型约束(Type Constraints),包括内存操作、进程间的约束、结构数据间的约束,用发明的算法解这些约束得到我们能推断出的最保守、最精确的类型。
- 论文笔记 TIE: Principled Reverse Engineering of Types in Binary Programs
- 基于二进制程序的类型推导--TIE: Principled Reverse Engineering of Types in Binary Programs
- tie-in of ugg boots
- Reversing - Secrets of Reverse Engineering
- Reversing: Secrets of Reverse Engineering
- Reversing Secrets of Reverse Engineering
- Reversing: Secrect of Reverse Engineering by Wiley
- the bug of MyEclipse Hibernate Reverse Engineering
- Reverse engineering
- Optimization of Computer Programs in C
- Android CTF Reverse-Engineering Android APK 1[binary][100]
- Types of signals in Linux
- Scan of the Month 33: Anti Reverse Engineering Uncovered
- Wiley.Reversing.Secrets.of.Reverse.Engineering.Apr.2005.eBook-DDU
- Reverse engineering of Object Oriented Cod Monograph Computer Science
- The task of making reverse engineering difficult is not easy.
- CrowdStrike unleashes CrowdRE to promote collaborative reverse engineering of malware
- Reverse engineering the ARM1, ancestor of the iPhone's processor
- C语言,宏定义的反斜杠后不能有空格
- 空间分析之常用工具
- POJ 2251 Dungeon Master 三维最短路
- 【DP】树形DP题目总结
- 从细节方面重视网站标题关键词的设置
- 论文笔记 TIE: Principled Reverse Engineering of Types in Binary Programs
- MSTAR编译环境-启动cygwin后自动转到指定目录
- jQuery鼠标划过浮动层
- Javascript this关键字使用分析
- MSTAR虚函数表(以IBitmap为例),以及快速查找函数实现的方法
- js搜索下拉菜单
- Linux启动十步骤剖析
- MSTAR-DIB,IBitmap,IDisplay,IDispCanvas,IFont,IImage等
- how to save a c++ object in java object and use it