首页
社区
课程
招聘
[求助]通过soinfo能否获得cpp文件里的函数名和函数地址
发表于: 2014-11-18 13:14 6879

[求助]通过soinfo能否获得cpp文件里的函数名和函数地址

2014-11-18 13:14
6879
RT,最近需要用获取到一个so文件中的函数名和函数地址并进行替换,通过网上找到的办法目前只能获取到部分的函数名,应该都是C的头文件里面自带的函数,如strcmp等。但是我自己写在cpp文件里的函数无法获取。
不知道有没有相应的办法可以获取到写在cpp文件里的函数名以及地址。

PS:小弟属于没什么技术的人,有可能提问表述不太对,各位大神将就着看看吧。

刚刚在论坛里找到了bdw的求助帖,我相信他和我遇到的是相同的问题。链接如下:
http://bbs.pediy.com/showthread.php?t=159711

通过阅读古河大大在该帖子里贴的博客,对这个问题稍微有了一定的了解。现在的情况是,我通过soinfo中的Elf32_Rel* plt_rel对.plt中重定位的函数进行了遍历(如果我没理解错的话),但是没能找到我自己写的函数。是因为.plt中不会存储这些东西吗?

刚刚在一博客上得知,plt_rel中存储的是外部依赖项的符号,通过检索symtab得到了函数名,但是我根据他提供的办法替换函数地址不成功。
Hook的目标函数是char* hello()
替换的函数为:char* Hookhello()
使用的替换函数地址方式为:          
*pOldFun = (char *(*)())(symtab[idx].st_value+si->base);
Elf32_Addr tempAddr = symtab[idx].st_value+si->base;
tempAddr = (unsigned)pNewFun;

另外,该博客地址:http://blog.csdn.net/lingfong_cool/article/details/8109290

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
虽然我不懂so逆向,但编译原理是一样的。
对于编译器来说,名字只是符号,编译后只有地址,仅导出符号有地址方面的记录,其他全部没有。
除非你能找到符号文件,里面记录了符号与地址的映射,像pdb那样。
这是我的看法。
2014-11-18 17:12
0
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
需要符号表没被移除才行
2020-9-19 21:29
0
游客
登录 | 注册 方可回帖
返回
//