获取共享对象文件 (ELF) 中函数的指令流(字节或程序集)
obtaining the instruction stream (byte or assembly) for function within a shared object file (ELF)
我正在努力获取与共享对象文件 (ELF) 中的某个函数关联的指令。
这应通过 python 脚本实现。我当然可以从命令行执行此操作,目标不是从我的 python 脚本启动 cli 命令。应该改用库。
我的脚本的输入是一个对象文件名和函数名,例如
python getInstructionStream.py main.o foo
结果应该是这样的
00000016 <foo>:
16: 55 push ebp
17: 89 e5 mov ebp,esp
19: 83 ec 10 sub esp,0x10
1c: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1f: 8b 55 08 mov edx,DWORD PTR [ebp+0x8]
22: 01 d0 add eax,edx
24: 89 45 fc mov DWORD PTR [ebp-0x4],eax
27: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
2a: c9 leave
2b: c3 ret
用任何汇编语法显示输出都不是必须的。十六进制流也足够了。任何人都可以给我命名一个或多个可以帮助我完成此类工作的库吗?
感谢 libelf 提示。我可以从这里继续
我正在努力获取与共享对象文件 (ELF) 中的某个函数关联的指令。
这应通过 python 脚本实现。我当然可以从命令行执行此操作,目标不是从我的 python 脚本启动 cli 命令。应该改用库。
我的脚本的输入是一个对象文件名和函数名,例如
python getInstructionStream.py main.o foo
结果应该是这样的
00000016 <foo>:
16: 55 push ebp
17: 89 e5 mov ebp,esp
19: 83 ec 10 sub esp,0x10
1c: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1f: 8b 55 08 mov edx,DWORD PTR [ebp+0x8]
22: 01 d0 add eax,edx
24: 89 45 fc mov DWORD PTR [ebp-0x4],eax
27: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
2a: c9 leave
2b: c3 ret
用任何汇编语法显示输出都不是必须的。十六进制流也足够了。任何人都可以给我命名一个或多个可以帮助我完成此类工作的库吗?
感谢 libelf 提示。我可以从这里继续