-
-
[原创]tenda系列设备用户态仿真搭建
-
发表于: 2023-3-2 21:58 10617
-
Tenda AC18为例
下载链接:https://down.tenda.com.cn/uploadfile/AC18/ac18_kfV15.03.05.19(6318)_cn.zip
1、正常对固件进行解包,查看固件的架构,此AX18是arm小端,因此在文件系统下执行下列命令
2、使用下列命令进行用户态仿真
此时处出现下列情况,导致一直处于等待状态,可以使用pacth解决这个问题。
解决方法
使用IDA pro打开固件,使用字符串搜索shift + F12,定位字符串出现的位置。
可以看到,原包中的httpd的运行流程,基本块1-->基本块2-->基本块3-->基本块2...一直在循环,导致处于静止状态,在基本块2的最后一条指令跳转的时候,它根据上一条指令CMP R3,#0的结果进行跳转,所以要想基本块2流向基本块4,就需要是用keypetch进行将该指令进行patch,修改为CMP R3,#1,
将patch后的httpd替换原来的httpd,在此进行运行,ha? 运行之后还是同样的结果
那就只好动态调试,看看程序是如何跳转的。现在CMP R3,#1处打上断点。在Ubuntu上开启远程调试端口。
之后在IDA pro配置选项如下图:
当程序运行到断点的时候,在未执行CMP R3.#1时候,R3的值为1,使用F8进行执行,可看到程序还是流向了基本块3
最直接的解决方法就是,将基本块3的最后一个跳转指令nop掉,
继续运行,如下图结果
终于不在处于等待状态,接下来接着定位问题出现的位置,在IDA Pro中定位该字符串。如下图
如图显示,程序流向为基本块a-->基本块b,导致出现错误,正常应该是基本块a-->基本块c,所以这里patch指令CMP R3,#0,修改为CMP R3,#0.如下图所示
继续执行,如下所示:
可以看到程序正常执行,但是此时的IP地址不正确,解决方法如下两条命令
程序正常运行
还有另外一种情况,程序可以正常运行,并且可以访问该IP地址,但是访问的页面显示错误,此时需要在文件系统中修改文件的软连接。
此时webroot链接到var文件中的文件,此时就需要包该weboot文件删除,修改链接文件的地址。
之后就可以看到该页面的正常显示。
cp $(which qemu
-
arm
-
static) .
/
cp $(which qemu
-
arm
-
static) .
/
sudo chroot .
/
.
/
qemu
-
arm
-
static .
/
bin
/
httpd
sudo chroot .
/
.
/
qemu
-
arm
-
static .
/
bin
/
httpd
sudo chroot .
/
.
/
qemu
-
arm
-
static
-
g
1234
.
/
bin
/
httpd
sudo chroot .
/
.
/
qemu
-
arm
-
static
-
g
1234
.
/
bin
/
httpd
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!