我刚开始编写一个引脚工具来检测程序。
目前,我有点坚持打印程序名称(图像?我会说)和指令所属的函数。
例如,我有一个程序 foo.cpp 和函数名称 func() ,即简单的加法和 cout。
然后,当我使用图钉工具时,我想打印如下
0xAddress foo (或 lib64/ld-linux... 等) func disassembled_instruction (例如 move 等)
我可以获得地址和反汇编指令,但不能获得程序和函数名称。
谁能建议我这是否可能以及如何实现?
谢谢你!
节目名称
要获取主二进制文件的完整路径(因此是程序名称),您必须在您的程序中为 IMG(图像)设置一个检测例程。main()
using IMG_AddInstrumentFunction.
在分析回调中(传递给IMG_AddInstrumentFunction
) 使用IMG_IsMainExecutable函数仅返回一个布尔值,指示当前加载的图像是否是主二进制文件(true
) 或不。
如果前一个函数(IMG_IsMainExecutable
) 返回true
你可以打电话IMG_Name获取其完整路径。
有关完整示例,请参阅检测图像的加载和卸载(Image Instrumentation)手册中的示例。
函数名称
Use PIN_InitSymbols在你的主要部分,在打电话之前PIN_StartProgram
.
您可以使用以下命令在常规级别进行检测RTN_AddInstrumentFunction(或者从指令、BBL 或 TRACE 获取例程)。
一旦您有了 RTN(例程),您就可以通过以下命令获取其名称RTN_Name功能。
查看手册中的示例程序指令计数(常规仪表)这应该可以让您对如何使用这些功能有一个良好的开端。
注意:听起来很明显,目标可执行文件一定有符号信息(符号):No symbols == no routine names
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)