首页
论坛
专栏
课程

[求助] 寻找 .so 文件基地址

2019-9-29 19:21 798

[求助] 寻找 .so 文件基地址

2019-9-29 19:21
798
用 qemu 启动了一个cgi文件,然后想找到这个cgi文件的 .so 文件在内存中的地址,求大神指点一下

这个文件没有调试符号,所以 gdb 调试连接后下了断点没有用

如果用 cat /proc/进程号/maps 的方式这样出来的地址难道不是qemu 所开辟的虚拟内存地址么??这个地址硬改是没有用处的吧


[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最后于 2019-10-2 17:28 被海中月编辑 ,原因: 上传 cig 文件以及动态库
上传的附件:
最新回复 (8)
crackwiki 2019-9-30 11:39
2
0
qemu是用user模式启动cgi的吗?cgi是什么处理器架构的?把cgi文件附上来。
海中月 2019-10-2 17:22
3
0
crackwiki qemu是用user模式启动cgi的吗?cgi是什么处理器架构的?把cgi文件附上来。
嗯,user模式启动,cgi架构为mipsel
crackwiki 2019-10-3 17:07
4
0
海中月 嗯,user模式启动,cgi架构为mipsel
gdb中target remote 到目标后,运行:libs,可以看到cgi的地址map:
0xff7b5000 0xff7bd000 rw-p     8000 0      <explored>
0xff7d3000 0xff7fa000 r-xp    27000 0      [linker]
0xff7fa000 0xff7fb000 rw-p     1000 26000  [linker]
0xffffa000 0xffffc000 rw-p     2000 0      [stack]
0xffffc000 0xffffe000 r-xp     2000 0      /mnt/c/Users/Administrator/Desktop/test

如上所示,0xffffc000就是cgi的基地址。其中cgi所引用到的so会被map到explored中。
海中月 2019-10-3 18:12
5
0
crackwiki gdb中target remote 到目标后,运行:libs,可以看到cgi的地址map: 0xff7b5000 0xff7bd000 rw-p 8000 0 0xff7d30 ...
我不清楚是因为没有调试符号还是什么,我的gdb 没办法调试这个程序,运行起来,调试不了,所以通过gdb 找到 so文件的加载地址一直没办法搞

当我这样子去下断点时也是无效断点,没办法运行到那里


crackwiki 2019-10-3 19:20
6
0

直接按ida中的地址下断点肯定不行,需要重定位加上基地址。

 


你的库文件有很多。

 

你在linux系统中安装一个gdb的pwndbg插件,百度一下。

 

另外运行不了应该是没有让qemu载入so的原因,请详细的看看qemu说明,如何让虚拟运行的程序载入动态库文件。

最后于 2019-10-3 19:27 被crackwiki编辑 ,原因:
crackwiki 2019-10-3 22:51
7
0
用qemu调试总是会出现很多问题,建议你编译一个gdbserver,实机调试更好
海中月 2019-10-4 00:45
8
0
crackwiki 直接按ida中的地址下断点肯定不行,需要重定位加上基地址。 ![](upload/attach/201910/324649_AFMPMN2AYPHZH7Q.jpg) 你的库文件有很多。 ...

我突然有点明白了怎么可以得到动态库的加载地址, 貌似上面的这个地址计算减去基址=动态库在内存中的加载位置了,刚在ida 动态调试了一下确实在内存中找到了指定偏移的代码。上面这个图中的信息早就得到了,可是一直没觉悟。感谢师傅的提点
海中月 2019-10-4 00:47
9
0
crackwiki 用qemu调试总是会出现很多问题,建议你编译一个gdbserver,实机调试更好
嗯,但是没有实机啊,就是自己想要复现漏洞,然后自己下载固件自己搞
游客
登录 | 注册 方可回帖
返回