论文笔记 TIE: Principled Reverse Engineering of Types in Binary Programs
2012-08-14 11:25
441 查看
这篇论文讲述的是作者们发明的一种从二进制代码恢复到高级语言的逆向工程的一种新方法。这里只对其流程和思想进行介绍,详细的过程在后面再做讨论。高级语言在编译过程中丢失了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),包括内存操作、进程间的约束、结构数据间的约束,用发明的算法解这些约束得到我们能推断出的最保守、最精确的类型。
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
- [论文笔记] Money, glory and cheap talk: analyzing strategic behavior of contestants in simultaneous crowdsourcing contests on TopCoder.com (WWW, 2010)
- 1703.In Defense of the Triplet Loss for Person Re-Identification 论文阅读笔记
- [论文笔记] Live deduplication storage of virtual machine images in an open-source cloud (Middleware, 2011)
- Semi-supervised Segmentation of Optic Cup in Retinal Fundus Images Using Variational Autoencoder 论文笔记
- 论文笔记 Ensemble of Deep Convolutional Neural Networks for Learning to Detect Retinal Vessels in Fundus
- 图割论文阅读笔记:Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images
- 【论文笔记】Applications of Graph Theory in Computer Science
- [论文笔记]Automated Identification of Failure Causes in System Logs
- 论文笔记:A survey of recent advances in CNN-based single image crowd counting and density estimation
- 【论文笔记】物体检测系列 Light-Head R-CNN: In Defense of Two-Stage Object Detector
- Reverse Engineering Custom DataTypes -> GUID() in SQL Server to PostgreSQL
- [论文笔记] Live Migration of Multiple Virtual Machines with Resource Reservation in Cloud Computing Environments (CLOUD, 2011)
- 《An Experimental Comparison of Partitioning Strategies in Distributed Graph Processing》——论文笔记
- 论文笔记: Inferring Networks of Substituable and Complementary Products
- [深度学习论文笔记][Weight Initialization] Exact solutions to the nonlinear dynamics of learning in deep lin
- 【论文阅读笔记】Deep Learning in Medical Imaging: Overview and Future Promise of an Exciting New Technique
- 论文笔记:A LOGICAL CALCULUS OF THE IDEAS IMMANENT IN NERVOUS ACTIVITY
- 【论文笔记】Applications of Graph Theory in Computer Science
- 论文笔记:LSTM, GRU, Highway and a Bit of Attention: An Empirical Overview for Language Modeling in Speec