前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MIPS-DIR605L固件修复思路

MIPS-DIR605L固件修复思路

作者头像
偏有宸机
发布2021-04-02 14:54:38
9280
发布2021-04-02 14:54:38
举报
文章被收录于专栏:宸机笔记宸机笔记

在常见的mips路由器固件中,/bin/boa是个常用的web程序

而这里我们拿到固件后首先要尝试的就是将该固件的web服务启动起来

但是却遇到了如下错误

此时可以在IDA中搜索Initialize AP MIB failed!字符串,来分析程序崩溃的原因

可以看到问题就出现在这里,当apmib_init函数执行完成后寄存器v0的值仍然为0,而bnez指令的作用便是根据v0是否为0来跳转,因此由于apmid_init函数的错误而导致程序没有实现正常的跳转到loc_418250处,才出现错误。

针对上面情况,已知的有两种解决方案:

  • 一是找出apmib_init函数的libc库,然后伪造该libc库,进而进行劫持apmib_init函数到我们自己伪造的过程中。 但是在伪造后让程序加载libc时却出现了出下错误,并且暂时未找到出现问题的原因
  • 二便是直接修改bnez指令,将其改为beqz,也就是判断$v0值为0时则进行跳转。 但是利用ida patch修改字节的时候却也出现错误

对于这个问题,我们直接使用010editor来修改即可

再次运行后发现还有新的错误出来

通过ida动态调试发现问题是出现在apmib_get函数导致的segmentation fault

继续老办法打开01editor 这回将地址0x48e2a8处填充为0字节

保存后再次运行

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档