推荐当贝市场

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 305259|回复: 58

[攻略教程] 逆向固件,广电HDC2100K进fastboot

 火.. [复制链接]
发表于 2021-6-16 11:28 | 显示全部楼层 |阅读模式
接上一篇编程器读固件 https://www.znds.com/tv-1198024-1-1.html端午前逆向固件,就已经把找到了进fastboot的方式,一直也没时间焊接emmc芯片。端午节放完假,昨天下午开始焊接。焊接不是很顺利,芯片来回拆、焊两三次,一直开不了机,还把焊点弄掉了几个,搞到一度以为搞坏了。还好是几个无用的焊点,今天上午终于把emmc芯片焊上去了,顺利开机,也顺利进入fastboot模式,以后烧写固件不用拆芯片,来回折腾了,真开心。

下面详细介绍,这篇主要以介绍fastboot逆向为主,以后如果fastboot进入不了,可以借鉴。如果熟悉uboot的源码,逆向起来会轻车熟路。



上一篇已经读出了fastboot.img,然后直接上IDA,构架选择arm little。翻到地址0x8500,就可以看到arm标志的中断表。
中断表.png

跳到第一个函数0x8560,继续往下到0x8690,发现跳转到0xC08F80,这里断了;往回看,发现这里有两个copy函数,第一个copy比较当前运行地址段是否在0xc00000,不是则把0~0xf6000拷贝到0xc00000~0xcf6000;第二个copy拷贝0xc08500处的arm中断表到高地址位0xffff0000,这里我们不用关心,可以忽略。我们只需再重新按照它的布局构造一个内存dump文件,重新IDA。
函数1.png

重新制作内存dump之后,如下,中断表已经出现了具体函数。我们直接跳到上面中断的函数C08F80处,开始逆向第一个函数0xC08F80(board_init_f)。
dump之后.png

查看我们第一个board_init_f函数,我们基本可以找到我们所需要的重要函数,包括串口打印函数puts,serial_printf,获取环境变量函数getenv,我们直接跟踪最下面的一个函数mAIn_loop
board_init_f.png

我们要找的串口中断fastboot处理就在main_loop函数中,函数开始getenv("bootdelay")其实就是从bootargs分区中获取bootdelay的条目参数,上一篇备份固件文章中提到的记录分区表的那个分区,这个条目参数值为0,函数做了判断,等于0时,赋值为1s,我之前的猜测是错误的。往下getenv("bootdelaykey"),getenv("bootstopkey"),bootargs分区中没有这两个条目参数,getenv返回回来就为0(NULL),下方判断如果这两个为0的话,就是默认初始化为 "hisilicon #" 和  "]",上电的时候我们只需要输入这两个字符串就可以进入fastboot模式,里面根本就没有检测ctrl+c的检测,这也就是我们之前按ctrl+c没有反应的原因。
main_loop.png

为了以防万一,我还是修改了bootargs分区中bootdelay的参数,把时间改为5s,前4个字节为CRC32的校验。
bootArg.png CRC32.png

bootargs写回到emmc芯片,芯片焊接回去,接好串口上电,输入 hisilicon # 或者 ,串口接线图论坛中有,我的文章中也有介绍,有需要自己回去看
fastboot.png

进入fastboot模式成功..........到此结束。
写文章不容易,请留下你们的脚印,看评论热度,后续再更新、


评分

参与人数 6威望 +15 金币 +14 Z币 +3 收起 理由
T2H + 1
鸭梨是椭的 + 1 我爬到山顶收到信号打开znds就是为了给你+1.
zhou6606 + 3
339007849 + 5 ZNDS论坛有你更精彩,一起愉快的搞机吧!.
xtwuyou + 1 + 2 ZNDS论坛有你更精彩,一起愉快的搞机吧!.
橙子的甜 + 6 + 10 + 3 ZNDS论坛有你更精彩,一起愉快的搞机吧!.

查看全部评分

发表于 2021-6-18 18:37 来自ZNDS手机版 | 显示全部楼层
z913457894 发表于 2021-6-18 14:54
专业算不上,就是做了很多年的固件逆向工作,対逆向比较熟而已,linux下的驱动我也不是很懂,一般驱动模 ...

这个地方我知道,但是不是所有的都在这里
回复 顶一个 1 踩 0

使用道具 举报

发表于 2021-6-17 00:08 | 显示全部楼层
大神,有个fastboot 拼装问题请教,可有偿,能否加我QQ601954118。谢谢!
回复 顶一个 0 踩 1

使用道具 举报

发表于 2021-6-16 13:13 | 显示全部楼层
感谢大神带来的内容分享
回复 顶一个 踩

使用道具 举报

发表于 2021-6-16 13:15 | 显示全部楼层
学习学习
回复 顶一个 踩

使用道具 举报

发表于 2021-6-16 13:15 | 显示全部楼层
步骤很详细,学习了
回复 顶一个 踩

使用道具 举报

头像被屏蔽
发表于 2021-6-16 13:15 | 显示全部楼层
收藏学习一波
回复 顶一个 踩

使用道具 举报

头像被屏蔽
发表于 2021-6-16 13:22 | 显示全部楼层
收藏学习学习
回复 顶一个 踩

使用道具 举报

发表于 2021-6-16 14:12 | 显示全部楼层
大神膜拜啊
回复 顶一个 踩

使用道具 举报

发表于 2021-6-16 14:13 | 显示全部楼层
不过,高安cpu我一般都是,制作分区表,hitool提取全部分区,修改system后重新刷回去,fastboot下能用什么有用的命令正不知道
回复 顶一个 踩

使用道具 举报

发表于 2021-6-16 15:52 来自ZNDS手机版 | 显示全部楼层
高手!
来自: Android客户端
回复 顶一个 踩

使用道具 举报

 楼主| 发表于 2021-6-16 17:56 | 显示全部楼层
sntemwong 发表于 2021-6-16 14:13
不过,高安cpu我一般都是,制作分区表,hitool提取全部分区,修改system后重新刷回去,fastboot下能用什么 ...

hitool备份写入是全部借助fastboot模式下的指令,所以fastboot下的指令可以完成你在hitool下的所有操作。不管高安还是非高安,如果进不了fastboot模式,hitool是无法连接的,你也做不了任何操作,这就是为什么你使用hitool的时候是需要连接串口的原因。
回复 顶一个 踩

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|小黑屋|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

GMT+8, 2026-11-6 05:05 , Processed in 0.040353 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表