验证了一下JLINK9读固件成功 但是还有疑问

2019-12-26 18:51发布

刚才抽空细读了一下 thxlp的帖子人人都能拿到jlink v9的bootloader,重理了一下情况,然后做了个测试。  
0:手头有V8  2个   V9  1个    电脑装了 VC2012 和 BUSHOUND       JLINK不管他什么协议,最终都会变成USB控制器上的HEX字节串。
1:V8和V9的PID不同,一个是0101 一个是0105 另外V9因为结合了虚拟串口,所以是复合设备,从描述符里可看到接口号是2,前面两个接口是VCOM,要注意一下。  
2:BUSHOUND先抓JLINK正常使用的数据,确实看到有01命令过程 还有一大堆的神马F0之类的命令不知道意义。  01命令最典型。
3:先BUSHOUND进行手工测试验证抓到的命令01,经过几次练习发现V8可能手速跟不上,发出01后根本来不及去收就失败了。V9经过5次尝试后可以熟练的手动测试成功。 具体观察到的情况就是从BULKOUT写一个字节01,然后迅速从BULKIN读数据,可以读回2字节表示长度,但是来不及再读内容。从现象分析应该是发出一个命令后必须在多少时间内去读结果,如果超时不去读就不能再读回了,会出现重新枚举,难道这时候它自己重启了?手动时候要先点击发送,然后去点击接收,这中间间隔大概会2S. 如果用按键精灵估计可以手动测试V8.
4:在手工验证命令成功情况下,噼里啪啦敲代码自动吧。   在这里掉了坑傻逼了好久,无意中才爬出来。情况是介样滴,敲完01命令的测试代码,在V9测试成功后,随手换了个V8测试,电脑果然比人爪好用,顺利的读到数据了,一看内容就是正确的。然后去试试神奇的FE命令吧,尼玛失败?发完09命令后读不到东西,LINK似乎也挂掉了。不死心反复折腾,怎么也读不到东西,楼主不会是骗我吧。。。最后无奈的换上V9看看,卧槽,我草草草,居然第一下就读到东西了。这是神马情况,难道V8不支持这个命令或者说支持的格式不同?这个地方想请教楼主以及T大神测试或解惑一下。
JLINK.jpg (61.92 KB, 下载次数: 0) 下载附件 2016-7-15 16:14 上传
见图,我是读08000000开始的32字节,第一个32位是20开头应该是堆栈吧,第二个32位是08开头应该是复位向量吧。然后又读了下APP部分起头。应该是能证明已经OK了,我不做盗版,也就没必须全片读出了,帮你们验证了楼主是正确的,有心的自己去读全片吧。
那个修改BIN的读BOOT方法就懒得去验证了。

感叹一下,S公司居然留了一条这么粗暴的命令。。。直接指定地址和长度读取ROM,总归会被人分析出来的。不过一般人没谁有闲有技术去发现这个粗暴的后门。
另外感叹下S公司的固件居然没加密,被大家直接从DLL里提取BIN,还能把BIN修改后再倒进DLL去下载。
如果S公司不留这么粗暴的命令,把固件做上两层加密,下载时候丢给BOOT去解密。是不是大家就没得破解了?固件加密别说解密,先得猜出到底是什么加密算法吧,而解密代码在BOOT里没这条粗暴命令拿不出。


请thxlp和T大神解惑V8为什么用这条神奇的FE命令失败
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
65条回答
huangqi412
1楼-- · 2019-12-31 01:48
你可以用按键精灵这类软件录制动作代替手按 可以加速操作
iot1991
2楼-- · 2019-12-31 04:08
 精彩回答 2  元偷偷看……
huangqi412
3楼-- · 2019-12-31 08:26
iot1991 发表于 2017-2-12 19:39
按照你说的试了, 发现返回时 over run 是数据溢出, 是我手速太慢了吗

估计是跟不上 你用录制吧
32MCU
4楼-- · 2019-12-31 13:10
标记。看下命令。
iot1991
5楼-- · 2019-12-31 13:44
huangqi412 发表于 2017-2-13 08:46
估计是跟不上 你用录制吧

我换了一下思路, 我用vc的代码发送命令01,BUSHOUND 只用来读,可以读回2个字节的数据    70 00, 后面的数据就读不到了, 我就开始测试代码了, 但是代码死在了 WriteFile() 函数, 发现总线 抓取到了01 这个命令,没有回复
错误提示如下:
huangqi412
6楼-- · 2019-12-31 18:54
iot1991 发表于 2017-2-13 21:41
我换了一下思路, 我用vc的代码发送命令01,BUSHOUND 只用来读,可以读回2个字节的数据    70 00, 后面 ...

的,这个,你的目标是读固件研究还是测试下JLINK命令玩玩,  如果是读固件研究,还可以用木马方式。   也许你可以上传代码或工程让其他人帮你看看问题。  

一周热门 更多>