-
-
[求助]通过soinfo能否获得cpp文件里的函数名和函数地址
-
发表于:
2014-11-18 13:14
6999
-
[求助]通过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;
另外,该博客地址:
d70K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3L8r3W2F1k6$3k6G2L8X3N6Q4y4h3k6U0L8$3!0D9i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5^5x3e0l9&6x3U0V1H3
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课