首页
社区
课程
招聘
[原创]iot初体验
2021-4-24 12:50 17946

[原创]iot初体验

2021-4-24 12:50
17946

写在前面

iot安全是早早就萌生了想法,奈何早之前当了咸鱼王,动手能力被摒弃。
转行进入安全行业后,对安全技能的需求变成了刚需,不能再当咸鱼。
趁着这边的项目延迟有大量的空闲时间,就在酒店开始了这一次的摄像头逆向之旅。
这里非常感谢wmsuper这些年来的指点.
本文主要目的是对摄像头固件进行修改进入uboot.
用到设备如下:
0、摄像头
1、万能表.
2、RT809F编程器
3、电洛铁
4、UsbToTTL

写在中间

UART串口焊线

这块板子对新手极其友好,接口名称都还在,且经过万能表测试正确,只需要简单的接线即可。

连接UART

Rx、Tx接口跟UsbToTtl的Rx、Tx对换连接。

设置对应的端口和波特率。

连接上电

发现按任意键都无法进入u-boot,能直接进入系统且没有密码。
但是一直会有很多信息刷新,干扰正常输入输出。

没进入u-boot这可不行,上编程器!

穿针引线

通过芯片表面的信息,确定了这一小颗就是要动刀的。

由于针脚之间距离太近加上太久没用过电洛铁热风枪极其手生,所以二者不在考虑范围(在有一个就是针脚上都涂了一层透明的东西,在以前的印象中是需要洗板水清晰后才能拆)。
最后,使用了小时候缝衣服的技术-穿线!
一开始用铜线接完发现,不导电(可能涂有绝缘漆)。
所以得把线拆了重新用别的线接,总共花费了两小时,加上酒店的灯光,眼睛都瞎了。最终的成品如下

修改固件

连接编程器并上电

识别出5个型号,因为不知道具体型号,所以直接选了最后一个。
点击读取,等待读取结束保存到本地后,固件提取就完毕了。

提取固件不需要解包,只需要找到u-boot的程序所在位置就好了。
这里经过wmsuper的指点,知道了固件起始到0x31000是u-boot程序所在。
ps:0x31000是因为在binwalk中识别出该地址为内核。
将固件拉入ida 选择arm 小端,并设置加载大小为0x31000。

打算通过开始的提示字符串定位函数,但发现无法找到引用。
应该是ImageBase需要修正。

寻找固件加载基址参考这个文章arm固件加载地址
通过搜索jump table的方式找到如下跳转表

通过尝试,0x80E101D0-103B0=0x80DFFE20,而两值最后的差正好是20。
所以猜测ImageBase为0x80DFFE00。
通过测试,ImageBbase为正确,也定位到了关键函数

通过代码可以看到,uboot的等待时间由sub_80E17F64决定。
最后修改保存该处。

将修改的固件重新写入

连接uart开始上电测试结果如下

可以看到,成功进入uboot模式。
最后收拾残局

写在后面

第一次整,除了用那个铜线没有测试导电就去使用之外非常顺利。
对于这一次动手过程非常开心,这个便宜的摄像头对新手出其的有好。
也非常感谢wmsuper这几年不耐烦的教导。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-4-24 17:13 被零加一编辑 ,原因:
收藏
点赞14
打赏
分享
最新回复 (13)
雪    币: 12040
活跃值: (15364)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
pureGavin 2 2021-4-24 13:31
2
0
感谢分享
雪    币: 357
活跃值: (2593)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
KooJiSung 2021-4-24 16:42
3
0

电烙铁在芯片引脚两边来回加热取下,boot分区可以通过系统命令读写吧,不然怎么在线更新?

最后于 2021-4-24 16:42 被KooJiSung编辑 ,原因:
雪    币: 2033
活跃值: (4865)
能力值: ( LV13,RANK:278 )
在线值:
发帖
回帖
粉丝
零加一 3 2021-4-24 17:12
4
0
KooJiSung 电烙铁在芯片引脚两边来回加热取下,boot分区可以通过系统命令读写吧,不然怎么在线更新?
主要是怕焊回去出问题,至于后面分区那些还存在我的知识盲区
雪    币: 3350
活跃值: (3372)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
fengyunabc 1 2021-4-24 19:15
5
0
感谢分享
雪    币: 5008
活跃值: (1147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dabang 2021-4-24 19:36
6
0
你这也太厉害了,宾馆背那么多东西开搞
雪    币: 7184
活跃值: (3176)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
十年后 2021-4-25 09:37
7
0
谢谢分享!
雪    币: 229
活跃值: (203)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5keeter 2021-4-25 14:28
8
0
牛皮牛皮,谢谢分享自己的第一次
雪    币: 6081
活跃值: (1182)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
CCkicker 2021-4-27 15:51
9
0
感谢分享!
雪    币: 754
活跃值: (3868)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
还我六千雪币 2021-4-30 10:18
10
0
wmsuper yyds 
雪    币: 4540
活跃值: (1006)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
21Gun5 2 2021-6-24 22:20
11
0
文章很不错,感谢分享,在这有点小疑问,判定加载基址时,为何基址不是0x80DFFE20,而要再减20呢(零加一yyds!)
雪    币: 2033
活跃值: (4865)
能力值: ( LV13,RANK:278 )
在线值:
发帖
回帖
粉丝
零加一 3 2021-6-25 09:33
12
0
21Gun5 文章很不错,感谢分享,在这有点小疑问,判定加载基址时,为何基址不是0x80DFFE20,而要再减20呢(零加一yyds!)[em_13]
jumptables中每个地址长度是4,103D0-103B0=0x20/4=8。
雪    币: 4540
活跃值: (1006)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
21Gun5 2 2021-6-26 16:42
13
0
零加一 jumptables中每个地址长度是4,103D0-103B0=0x20/4=8。
多谢多谢
雪    币: 34
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
likeseesnow 2021-7-1 23:40
14
0
啥家庭啊,到酒店开房搞开发
游客
登录 | 注册 方可回帖
返回