从开始研究多源反编译到现在,也有半年多的时间了,看了不少资料。开始的时候对反编译的认识很模糊,现在逐渐清晰了。对反编译框架、中间语言的设计、精确控制流图的生成、数据流分析(优化)、控制流分析、类型分析、过程的恢复等有了比较清楚的认识。
开始我的思路是全部基于静态分析,参考UQBT的框架,用SSL语义描述语言、PAL过程描述语言等对不同硬件平台以及不同编译器的特征、相关约定进行描述,从而实现支持多源的反编译系统。这个方法是基于静态的方法,而静态的方法的缺点就是对于间接调用以及间接跳转语句无法精确地确定其目标地址,虽然有一些方法:基于抽象解释的数据流与控制流分析相结合的方法,可以近似地确定其目标地址,但这些方法都不能准确地解决问题。
因此,现在我的想法是:加入动态的分析方法,在静态分析无能为力的时候,借助于动态分析的方法。但是如果要支持多源,那就要提供多种硬件平台的指令模拟器,这样才可以实现动态执行,而如何快速地构建指令模拟器、如何保证构建的指令模拟器的有效性和正确性,都是要解决的问题。
https://m.sciencenet.cn/blog-544280-418065.html
下一篇:
写开题报告