z913457894 发表于 2021-6-16 11:28

逆向固件,广电HDC2100K进fastboot

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

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



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


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


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


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


我们要找的串口中断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没有反应的原因。


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


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


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


intelqian 发表于 2021-6-18 18:37

z913457894 发表于 2021-6-18 14:54
专业算不上,就是做了很多年的固件逆向工作,対逆向比较熟而已,linux下的驱动我也不是很懂,一般驱动模 ...

这个地方我知道,但是不是所有的都在这里

dgdell 发表于 2021-6-17 00:08

大神,有个fastboot 拼装问题请教,可有偿,能否加我QQ601954118。谢谢!

橙子的甜 发表于 2021-6-16 13:13

感谢大神带来的内容分享{znds6}

请叫我帅哥哈 发表于 2021-6-16 13:15

学习学习

害羞的菇凉 发表于 2021-6-16 13:15

步骤很详细,学习了

肖肖喜欢笑 发表于 2021-6-16 13:15

收藏学习一波{znds1}

电视机顶盒分享 发表于 2021-6-16 13:22

收藏学习学习{znds8}

sntemwong 发表于 2021-6-16 14:12

大神膜拜啊

sntemwong 发表于 2021-6-16 14:13

不过,高安cpu我一般都是,制作分区表,hitool提取全部分区,修改system后重新刷回去,fastboot下能用什么有用的命令正不知道

creazy2000 发表于 2021-6-16 15:52

高手!

z913457894 发表于 2021-6-16 17:56

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

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

z913457894 发表于 2021-6-16 18:00

盒子体验分享 发表于 2021-6-16 13:22
楼主会中兴机顶盒刷机么?能分享一些教程么?

没有折腾过中兴的机顶盒,但是步骤基本一样,只要能进入bootloade(uboot/fastboot)模式,就可以备份出固件,自己修改原始固件来达到root破解的目的。后续我会继续用手上的盒子来做一些使用bootloader模式破解的教程。

黄华威 发表于 2021-6-16 21:39

感谢大神带来的内容分享

D5878658ghh 发表于 2021-6-17 14:10

原来是高手,支持一下。

sntemwong 发表于 2021-6-17 16:23

z913457894 发表于 2021-6-16 17:56
hitool备份写入是全部借助fastboot模式下的指令,所以fastboot下的指令可以完成你在hitool下的所有操作。 ...

我备份过很多高安机器,fastboot都是无法进入的,都可以正常通过hitool备份全部分区出来
页: [1] 2 3 4 5 6
查看完整版本: 逆向固件,广电HDC2100K进fastboot