-
-
[求助]通过soinfo能否获得cpp文件里的函数名和函数地址
-
发表于:
2014-11-18 13:14
6879
-
[求助]通过soinfo能否获得cpp文件里的函数名和函数地址
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期)