仿真过程

  1. 工具准备
  2. 提取固件文件系统
  3. 尝试开启网络服务
  4. IDA调试程序并修改代码
  5. 开启服务并验证

工具准备

提取固件

进入固件所在位置,使用binwalk提取固件文件系统。可发现该文件系统为小端存储。

binwalk -Me US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin

尝试开启网络服务

QEMU仿真

进入提取的文件系统中的squashfs-root目录下,使用qemu-arm-static进行模拟Tenda路由器的网络服务一般是名称为/bin/httpd,开启命令如下:

cp $(which qemu-arm-static) .#保证已经安装QEMU的前提下执行
sudo chroot ./ ./qemu-arm-static  ./bin/httpd

此时界面停在了welcome。

IDA调试httpd

在本机中打开ida,在ida中打开httpd,定位到sub_2CEA8函数即为main函数。

选择sub_2CEA8函数后在代码出按F5可展示伪代码。在代码32行设置断点。

在虚拟机中使用qemu-arm-static开启httpd服务,并-g 指定调试接口,命令如下:

sudo chroot ./ ./qemu-arm-static -g 23946 ./bin/httpd

使用ida开始远程调试,按F9选择Remote gdb debugger,输入虚拟机ip,httpd在虚拟机中位置和服务端口。

分析后发现httpd服务开启有两个检测条件:
1.check_network()<=0时则会陷入sleep循环
2.ConnectCFM() 不符合条件则会提示”connect cfm failed”
开启调试后发现程序会停留在以下界面。

使用keypatch对httpd进行修改并保存为httpdpatch,将httpdpatch放入虚拟机中httpd相同文件夹中(需配合root身份对文件进行移动),并执行httpdpatch发现运行出现变化。

mv httpdpatch /home/oit/tools/firmadyne/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin.extracted/squashfs-root/bin/httpdpatch



此时发现httpd listen ip后ip有问题,查阅资料可知httpd 想要获取的网卡名称是 “br0”。直接在宿主机上新建一个名为 “br0” 的网卡,再执行。

sudo brctl addbr br0
sudo ifconfig br0 192.168.254.139/24


将webroot_ro中的文件复制到web_root目录下,最后就可以在本机中访问模拟出的路由器网站。

cp -r /home/oit/tools/firmadyne/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin.extracted/squashfs-root/webroot_ro/* /home/oit/tools/firmadyne/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin.extracted/squashfs-root/webroot

仿真验证

打开浏览器输入192.168.254.139:81即可访问。

Tenda AC15路由器仿真——IDA+QEMU相关推荐

  1. 腾达fh365虚拟服务器,腾达(Tenda)FH365路由器怎么设置?

    本文介绍了腾达(Tenda)FH365路由器的安装.上网设置:本文介绍的是在腾达(Tenda)FH365路由器设置ADSL(PPPOE)拨号上网方式的设置方法:ADSL拨号上网方式指的是:在未使用路由 ...

  2. 腾达fh307没有显示服务器名,腾达(Tenda)FH307路由器上网设置 | 192路由网

    本文介绍了腾达(Tenda)FH307路由器的安装.上网设置方法,同时分别介绍了"ADSL(PPPOE)拨号"."动态IP"."静态IP"三 ...

  3. 腾达无线路由器网关和域名服务器,腾达(Tenda)FH329路由器固定(静态)IP设置上网...

    腾达(Tenda)FH329路由器固定(静态)IP上网的设置方法:适合办理的是固定(静态)IP上网宽带的用户.ADSL(PPPOE)拨号上网.自动获取IP上网,这两种宽带类型的用户,不适合本文介绍的方 ...

  4. 腾达f3虚拟服务器怎么设置,腾达(Tenda)F3路由器用手机怎么设置?

    在本文中,鸿哥将给大家详细介绍,使用手机设置腾达(Tenda)F3路由器上网的方法. 任何一款无线路由器,用手机设置它上网的时候,都应该按照下面的步骤操作. 无线路由器线路连接 手机连接路由器信号 手 ...

  5. 腾达ap设置说明_腾达(Tenda)F9路由器AP模式怎么设置 腾达F9AP模式设置方法【详解】...

    本文介绍了腾达(Tenda)F9路由器AP模式的设置方法.家里已经有一台可以正常使用上网的主路由器了,又购买了一台腾达f9路由器,此时要想实现两台路由器都可以使用上网,可以设置腾达f9路由器的AP模式 ...

  6. 腾达ap设置说明_腾达(Tenda)F9路由器AP模式设置方法

    本文介绍了腾达(Tenda)F9路由器AP模式的设置方法.家里已经有一台可以正常使用上网的主路由器了,又购买了一台腾达f9路由器,此时要想实现两台路由器都可以使用上网,可以设置腾达f9路由器的AP模式 ...

  7. 腾达fh450虚拟服务器,腾达(Tenda)FH450路由器上网设置

    本文介绍了腾达(Tenda)FH450无线路由器的安装和上网设置方法,还介绍了"ADSL(PPPOE) 拨号"."动态IP"."静态IP"三 ...

  8. 腾达fh450虚拟服务器,腾达(Tenda)FH450路由器设置上网方法

    摘 要 腾达(Tenda)FH450无线路由器的安装和上网设置方法,还介绍了"ADSL(PPPOE) 拨号"."动态IP"."静态IP"三种 ...

  9. 腾达fh365虚拟服务器,腾达(Tenda)FH365路由器怎么设置? | 192路由网

    本文介绍了腾达(Tenda)FH365路由器的安装.上网设置:本文介绍的是在腾达(Tenda)FH365路由器设置ADSL(PPPOE)拨号上网方式的设置方法:ADSL拨号上网方式指的是:在未使用路由 ...

最新文章

  1. 发布开源框架到CocoaPods入坑指南
  2. IAR 中打多个断点出现 one or more breakpoints coule not be set and have been disabled原因及解决方案
  3. git合并指定文件到另一分支
  4. php 根号2计算过程,根号2以及π的计算--关于无理数的畅想
  5. matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
  6. split出现得问题
  7. c mysql linux,linux上C语言连接mysql
  8. docker 部署Gitlab
  9. Java面试问题:新的任务提交到线程池,线程池是怎样处理
  10. 曲折中前行的汉语编程
  11. CAD图形不闭合问题的解决方法
  12. 数据库系统概念第六版 第八章练习题 2 3 9
  13. B,KB,MB,GB之间换算
  14. java求第n项斐波那契_【剑指offer】数列——求斐波那契第n项
  15. 夕夕博士的视频观后笔记集合~
  16. 自己拥有一台服务器可以做哪些很酷的事情
  17. 微信小程序发布版本之后自动更新功能
  18. 报错SyntaxError: Unexpected token T in JSON at position 0 at JSON.parse (<anonymous>)的解决方法
  19. python解常微分方程龙格库_求解二阶常微分方程的RungeKutta四阶方法
  20. C语言及程序设计[套餐]课程主页

热门文章

  1. java模拟制作购物车_模拟购物车的实现过程(详细讲解)
  2. #547. 拦截导弹(missile)
  3. [NIPS2020] 参数化的 GNN 解释器
  4. ipad系统升级后的真机调试process launch failed: Security问题(二)
  5. Rhapsody的文件能转到EA里面吗
  6. MYSQL学习心得 总结
  7. 卷积核的参数量和计算量
  8. CCS v5中烧写Flash实录:成功+失败
  9. 华为OD机试 - 机器人走迷宫(Java JS Python)
  10. unity 导出游戏符号表