breed固件逆向

breed固件逆向前情概要 https www right com cn forum thread 6189907 1 1 html 之前通过 010editor 对比了两个 gpio 不同的固件 结果居然成功修改了 gpio 键 结果楼下马上就来了个神人把修复好符号的 ida 伪代码给我了 网上一查 这个神人居然是 breed 开源仿制版本 rtboot 的作者 https github com zhaohengbo rt boot 牛逼 我寻思着如果我有这样的水平 那么除了 reset 键能改 别的 led 什么的 gpio 也能改 于是私信

这个和那个神人反编译出来的函数gpio_button_register的参数很像,应该有希望。

网上查了下ida需要有基地址才能识别字符串,所谓基地址,就是把固件加载到内存里的地址,也就是这个固件的地址0对应的内存里的地址,于是查到了这个工具拿来爆破基地址(https://github.com/sgayou/rbasefind)

0x: 220 0x: 167 0x: 112 0x: 85 0x24a30000: 72 0x: 55 0x8f: 45 0x8f: 42 0x8f95e000: 42 0x: 37 

在这里插入图片描述

联想到elf结构里面符号表symtab和字符串表strtab的关系,strtab往往在elf的末尾段,symtab在中间,而且里面是一个表格,里面是一个结构体记录了函数地址和符号在strtab里面的偏移。

按照这个思路写idapython脚本重命名函数就可以了:

start_address=0x80144B2C while True: a=get_bytes(start_address,1) if a== b'\x80': print("good") create_dword(start_address) create_word(start_address-2) else: print("bad") print(hex(start_address)) break start_address=start_address-0x10 string_address=0x46158+0x-0x3744 #0x80142a14 table_start=0x80142A5C table_end=0x80144B2C while True: func_addr=int.from_bytes(get_bytes(table_start,4),"big") idx=int.from_bytes(get_bytes(table_start+14,2),"big")+string_address func_name=get_strlit_contents(idx) print(get_name(func_addr)+" "+func_name.decode()) set_name(func_addr,func_name.decode()) if table_start ==table_end: break table_start=table_start+0x10 

参考文章:

  1. [分享]一次嵌入式固件逆向实践 看雪论坛 https://bbs.pediy.com/thread-266803.html
  2. IoT漏洞研究(一)固件基础 freebuf
    https://www.freebuf.com/articles/endpoint/254257.html

  3. https://paper.seebug.org/613/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218835.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午11:22
下一篇 2026年3月17日 下午11:22


相关推荐

  • 从 0 到 1 复现 AI 绘画:手把手教你写一个能用的 Diffusion 脚本

    从 0 到 1 复现 AI 绘画:手把手教你写一个能用的 Diffusion 脚本

    2026年3月14日
    3
  • PV操作——生产者和消费者

    PV操作——生产者和消费者

    2022年1月15日
    65
  • 向量的点乘与叉乘的几何意义

    向量的点乘与叉乘的几何意义向量的点乘与叉乘的几何意义 很惭愧 作为一名学生 向量的最基本的知识全忘了 在最近做计算机图形学实验时 需要用到向量计算时 发现自己寸步难行 只好赶快百度 预习 一下 向量的点乘 a b 公式 a b a b cos 点乘又叫向量的内积 数量积 是一个向量和它在另一个向量上的投影的长度的乘积 是标量 点乘反映着两个向量的 相似度 两个向量越 相似 它们的点乘越

    2026年3月20日
    2
  • Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()

    Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()
    来自:http://www.diybl.com/course/6_system/linux/Linuxjs/200871/129585.html
    从Linux2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。
        Linux中大部分的设备驱动,都可以使用这套机制,设备用Platform_device表示,驱动用Platform_driver进行注册。
     
       

    2022年7月24日
    13
  • linux navicat 在线激活码 2021(注册激活)

    (linux navicat 在线激活码 2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWNlbnNlSW…

    2022年3月27日
    227
  • java实现仿QQ即时聊天[通俗易懂]

    java实现仿QQ即时聊天[通俗易懂]这是我的java大作业,这里就直接贴上我的实验报告了。1.1项目介绍这是一个模仿QQ的即时聊天软件,可以通过运行在本地的服务端,实现两个客服端之间的通信,即聊天。采用的是javafx架构作为GUI设计架构,个人认为优点是可以自己设计css,使界面达到美观的目的。本项目共有登录、注册、重置密码、主界面发消息、添加好友、好友列表项、查看聊天记录、删除聊天记录、未读消息提醒、好友主页、我的主页等模块…

    2022年5月15日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号