在 ELF 可执行文件中更改函数调用的参数

逆向工程 linux 小精灵
2021-06-24 05:19:10

我想改变一个 ELF 可执行函数调用并替换它的参数之一。可执行文件调用dlopen()函数并RTLD_NOW作为标志参数传递我想把它改成RTLD_LAZY.

检测完成此调用的确切位置并替换参数的最简单方法是什么。

我必须在生产环境上做,所以我只有GNU工具链,gcc,gdb等。

1个回答

最简单的方法是使用 . dlopen函数上放置一个断点,并更改参数(可能在堆栈上传递)。RTLD_NOW定义为 2。只需将其更改为 1 ( RTLD_LAZY)。

综上所述,在 gdb

breakpoint dlopen
run
set stack_memory_address = 1
continue

stack_memory_address您的模式参数的地址在哪里