我正在测试符号的 PIN 支持。我有以下代码:
VOID getSymbolAddressByName () {
for (IMG img = APP_ImgHead(); IMG_Valid(img); img = IMG_Next(img)){
for( SYM sym = IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym) ) {
MYINFO("\n IMG NAME %s \n SYM NAME %s SYM ADDRESS %d SYM VALUE %d \n", IMG_Name(img), PIN_UndecorateSymbolName(SYM_Name(sym), UNDECORATION_COMPLETE), SYM_Address(sym), SYM_Value(sym));
}
}
}
基本上,我正在解析我的可执行文件的所有加载图像以及每个图像的所有符号。对于每个符号,我打印图像的名称、地址、名称和值。
我的目标是在这里使用后面的代码部分来检索从符号名称开始的符号地址。
但是,程序没有正确打印信息:符号名称为(null),值和地址设置为 0。图像名称正确显示。我究竟做错了什么?