我的目标是修改一些指令并在 ELF 可执行文件或库中进行一些检测(例如,修改所有内存写入指令)。由于指令太多,我想自动找到它们并应用一些修改。有没有我可以利用的工具?
有没有静态二进制重写工具?
在我研究这篇论文的过程中,我刚刚提取了以下列表:
“可组装拆卸”宾夕法尼亚州立大学的 Shuai Wang、Pei Wang 和 Dinghao Wu
以下列表包含所有提到的工具(动态和静态),也许有一些有用的东西:
UROBOROS (静态,x86/x64 ELF)
所以论文本身介绍了UROBOROS。我认为这是您的最佳选择之一:
https://github.com/s3team/uroboros
“可组装拆卸”宾夕法尼亚州立大学的 Shuai Wang、Pei Wang 和 Dinghao Wu
在本文中,我们介绍了 UROBOROS,这是一种可以反汇编可执行文件的工具,可以将生成的代码组装回工作二进制文件,而无需手动操作。[...]
我们用OCaml和Python实现了一个UROBOROS的原型,总共13209行代码。我们的原型适用于 x86 和 x64 ELF 二进制文件。[...]
我们已经展示了 UROBOROS,这是一种可以反汇编剥离的二进制文件并以完全自动化的方式生成可重新组装的汇编代码的工具。我们将这种技术称为可重新组装拆卸,并开发了一种名为 UROBOROS 的原型。我们的实验表明,重新组装的程序产生的执行开销可以忽略不计,因此 UROBOROS 可以潜在地用作基于二进制的软件改造的基础。
Dyninst [10, 20] (静态+动态)
BUCK, B. 和 HOLLINGSWORTH, JK 用于运行时代码修补的 API。国际。J. 高性能。计算。应用程序 14, 4 (2000), 317–329。
Vulcan [16] (静态,由特殊编译器编译的二进制文件,未剥离)
EDWARDS, A., VO, H., SRIVASTAVA, A. 和 SRIVASTAVA, A. 分布式环境中的 Vulcan 二进制转换。技术。众议员 MSR-TR-2001-50,微软研究院,2001 年。
Alto [35] (静态,由特殊编译器编译的二进制文件,未剥离)
MUTH, R., DEBRAY, SK, WATTERSON, S. 和 DE BOSSCHERE, K. Alto:Compaq Alpha 的链接时间优化器。软件 练习。专家。31, 1 (2001), 67-101。
Diablo [13] (静态,由特殊编译器编译的二进制文件,未剥离)
DE SUTTER, B.、DE BUS, B. 和 DE BOSSCHERE, K. 用于程序压缩的链接时二进制重写技术。ACM 翻译。程序。朗。系统。27, 5 (2005), 882-945。
SecondWrite [3] (静态)
ANAND, K., SMITHSON, M., ELWAZEER, K., KOTHA, A., GRUEN, J., GILES, N. 和 BARUA, R. 一种基于编译器级中间表示的二进制分析和重写系统时间。在第 8 届 ACM 欧洲计算机系统会议论文集(2013 年)中,ACM,第 295-308 页。
销 [31] (动态)
LUK, C.-K., COHN, R., MUTH, R., PATIL, H., KLAUSER, A., LOWNEY, G., WALLACE, S., REDDI, VJ, and HAZELWOOD, K. Pin: Building带有动态仪器的定制程序分析工具。在 2005 年 ACM SIG-PLAN 编程语言设计和实现会议的论文集 (2005),ACM,第 190-200 页。
DynamoRIO [7] (动态)
BRUENING, DL 高效、透明且全面的运行时代码操作。博士论文,麻省理工学院,2004。
瘴气2
Miasm 是一个免费的开源 (GPLv2) 逆向工程框架。Miasm 旨在分析/修改/生成二进制程序。 https://github.com/cea-sec/miasm
VxStripper (动态)
何塞,塞巴斯蒂安。“恶意软件动态重新编译。” 系统科学 (HICSS),2014 年第 47 届夏威夷国际会议。IEEE,2014 年。