首页
社区
课程
招聘
[原创]tenda系列设备用户态仿真搭建
发表于: 2023-3-2 21:58 10547

[原创]tenda系列设备用户态仿真搭建

2023-3-2 21:58
10547

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-3-4 21:48 被schm编辑 ,原因: 图片放错,截取的图片有重影,是因为之前把该内容发错了版块上,在保留的文件中截取的,所以图片会有重影
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//