IDA调试QEMU修复调试环境

https://blog.csdn.net/richard1230/article/details/82110906#%E6%80%BB%E7%BB%93

前言


本篇文章是按照家用路由器里面的内容来叙述的.

过程


在目录~/my_file/_dir605L_FW_113.bin.extracted/squashfs-root-0/下 运行cp $(which qemu-mips) ./ 
而后运行命令:sudo chroot . ./qemu-mips ./bin/boa(注意:书上是有错误的,chroot 后面缺少了一个.) 
而后报错: 
Initialize AP MIB failed! 
segmentation fault 

è¿éåå¾çæè¿°
 
而后按照书上命令sudo chroot ./qemu-mips -g 1234 ./bin/boa 
而后使用IDA动态调试,这里要写一下IDA的设置,因为书上没有详细的 说明; 
1.将boa这个文件拖进IDA里面; 
2.在IDA里面设置一个断点 
3.Debugger–>select bugger——>remote GDB debugger 
4.Debugger–>Process Options—->Hostname 这里写127.0.0.1,为本地 主机,PORT填写1234 
5.Debugger–>start process 

è¿éåå¾çæè¿°

而后继续按照书上的步骤来,将apmib.c拷贝至~/my_file/_dir605L_FW_113.bin.extracted/squashfs-root-0/下: 
而后使用命令mips-linux-gcc -Wall -fPIC -shared apmib.c -o apmib-ld.so编译得到apmib-ld.so这个文件:(这里的apmib-ld.so是最终的,书上分了两步才得到这个文件,我这里偷懒了,直接得到最终的.so文件)

è¿éåå¾çæè¿°

 
还有一步需要做的是需要将交叉编译环境下的libgcc_s.so.1动态库 复制 到DIR-605路由器根文件系统下面的lib目录下(就是上图的lib文件夹里面). 
使用LD_PRELOAD环境变量加载apmib-ld.so文件,劫持apmib.so文件里面的apmib_init()函数,指令如下:

chroot . ./qemu-mips -E LD_PRELOAD="/apmib-ld.so" ./bin/boa

è¿éåå¾çæè¿°

 
可以看到Initialize AP MIB failed!已经被修复! 
而后继续使用指令:

chroot . ./qemu-mips -E LD_PRELOAD="/apmib-ld.so" -g 1234 ./bin/boa


è¿éåå¾çæè¿°
 
可以看到boa已经在运行了!!! 
用netstat查看当前网络连接: 

è¿éåå¾çæè¿°
 
发现已经开启 了80端口的web服务!!!

总结


这里主要总结一下IDA动态调试的一些步骤: 
1.将相关文件拖进IDA里面; 
2.在IDA里面设置一个断点 
3.Debugger–>select bugger——>remote GDB debugger 
4.Debugger–>Process Options—->Hostname 这里写127.0.0.1,为本地 主机,PORT填写1234 
5.Debugger–>start process 
注意:如果是在物理机里面远程调试的话还需要将linux_server上传于相关目录下面!!!
 

猜你喜欢

转载自blog.csdn.net/wxh0000mm/article/details/87938521
今日推荐