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上传于相关目录下面!!!