验证了一下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条回答
boboo
1楼-- · 2019-12-28 00:28
huangqi412 发表于 2016-7-15 16:33
哪位大神能出一份整理的命令格式表就好了     能写软件用JLINK自由的实现各种调试想法。 ...

命令表官网有  百度RM08001-JLinkUSBProtocol

那帖子里也有CMD_XXXX那一堆。DLL也有部分,猜想证明即可

我对哪位的直接读取方式倒是感兴趣,可惜对USB实在不懂,卡在建立工程。
通过DLL读取倒是搞定了很多
dreambox
2楼-- · 2019-12-28 00:34
 精彩回答 2  元偷偷看……
sblpp
3楼-- · 2019-12-28 04:30
读出来的也没卵用,这个boot只能用于自个的jlink v9上,烧写到别的上面不识别的。还有一大段代码是和唯一ID做校验处理的。。我曾经读出了三个jlink v9的boot,分析了半天没弄明白是什么加密原理。。。
taoist
4楼-- · 2019-12-28 06:58
呵呵,当年我公布CMD_READ_EMU_MEM时用的是周立功的usb调试助手1.2,根本不需要写代码,自己试吧,只能用在winxp下。
另外,Se99er公司留这条命令是用于查看J-1ink的RAM的,方便调试。
话说当年发现这条命令后,用usb调试助手1.2一次成功读出firmware的兴奋,估计你们是体会不到了。 。 。
taoist
5楼-- · 2019-12-28 07:49
命令表:

01  1       CMD_VERSION
02  2       CMD_RESET_TRST
03  3       CMD_RESET_TARGET
04  4       CMD_GET_INFO
05  5       CMD_SET_SPEED
06  6       CMD_UPDATE_FIRMWARE
07  7       CMD_GET_STATE
08  8       CMD_SET_KS_POWER
09  9       CMD_REGISTER
0A  10      CMD_INDICATORS
0B  11      CMD_PERMIT
0C  12      CMD_PCODE
0D  13      CMD_PROT_VERSION
0E  14      CMD_SET_EMU_OPTION
0F  15      CMD_HANDLE_BMI
10  16      CMD_HANDLE_GPIO
11  17      CMD_MERGE_COMMANDS
12  18      CMD_WRITE_CONFIG_EX
13  19      CMD_WRITE_OTS_EX
14  20      CMD_UPDATE_FIRMWARE_EX
15  21      CMD_SPI
16  22      CMD_HANDLE_OTSX_CONFIGX
17  23      CMD_HANDLE_C2
18  24      CMD_0x18
19  25      CMD_0x19
1A  26
1B  27
1C  28
1D  29
1E  30      CMD_FILE_IO


64  100     CMD_TRACE_START
65  101     CMD_TRACE_STOP
66  102     CMD_TRACE_READ

BA  186     CMD_HW_SWD_SET_DIR_OUT
BB  187     CMD_HW_SWD_SET_DIR_IN
BC  188     CMD_HW_SWD_ENABLE_SWCLK
BD  189     CMD_HW_SWD_DISABLE_SWCLK
BE  190     CMD_SEND_CONFIG_DATA
BF  191     CMD_GET_CONFIG_DATA_CRC
C0  192     CMD_GET_SPEEDS
C1  193     CMD_GET_HW_INFO
C2  194     CMD_GET_COUNTERS
C3  195     CMD_TEST_NET_SPEED
C4  196     CMD_CPU2_SET_CONFIG
C5  197     CMD_CPU2_EXEC_CMD
C6  198     CMD_GET_CPU2_CAPS
C7  199     CMD_HW_SELECT_IF
C8  200     CMD_HW_CLOCK
C9  201     CMD_HW_TMS0
CA  202     CMD_HW_TMS1
CB  203     CMD_HW_DATA0
CC  204     CMD_HW_DATA1
CD  205     CMD_HW_JTAG
CE  206     CMD_HW_JTAG2
CF  207     CMD_HW_JTAG3
D0  208     CMD_HW_RELEASE_RESET_STOP_EX
D1  209     CMD_HW_RELEASE_RESET_STOP_TIMED
D2  210     CMD_ECODE_DOWNLOAD
D3  211     CMD_ECODE_EXEC
D4  212     CMD_GET_MAX_MEM_BLOCK
D5  213     CMD_HW_JTAG_WRITE
D6  214     CMD_HW_JTAG_GET_RESULT
D7  215     CMD_POWERTRACE
D8  216     CMD_HW_JTAG_ENABLE_IF
D9  217     CMD_HW_JTAG_DISABLE_IF
DA  218     CMD_HW_TCK0
DB  219     CMD_HW_TCK1
DC  220     CMD_HW_RESET0
DD  221     CMD_HW_RESET1
DE  222     CMD_HW_TRST0
DF  223     CMD_HW_TRST1
E0  224     CMD_HW_FINE_WRITE_READ
E1  225     CMD_CDC_EXEC
E2  226     CMD_CDC_SET_HOOK_FUNCS
E3  227
E4  228     CMD_WRITE_CLONE_INFO
E5  229     CMD_GET_CPU2_CAPS_DLL_VERSION
E6  230     CMD_READ_OTS
E7  231     CMD_WRITE_OTS
E8  232     CMD_GET_CAPS
E9  233     CMD_GET_CPU_CAPS
EA  234     CMD_EXEC_CPU_CMD
EB  235     CMD_SWO
EC  236     CMD_RAWTRACE
ED  237     CMD_GET_CAPS_EX
EE  238     CMD_EMUCOM
EF  239     CMD_TEST_NET
F0  240     CMD_GET_HW_VERSION
F1  241     CMD_WRITE_DCC
F2  242     CMD_WRITE_CONFIG
F3  243     CMD_READ_CONFIG
F4  244     CMD_WRITE_MEM
F5  245     CMD_READ_MEM
F6  246     CMD_MEASURE_RTCK_REACT
F7  247     CMD_WRITE_MEM_ARM79
F8  248     CMD_READ_MEM_ARM79
F9  249     CMD_RUN_STOP
FA  250     CMD_READ_DCC
FB  251     CMD_WRITE_DCC_EX
FC  252     CMD_USER
FD  253     CMD_SHORTEN_LIFE
FE  254     CMD_READ_EMU_MEM
FF  255     CMD_USBTEST
霸气侧漏
6楼-- · 2019-12-28 10:36
taoist 发表于 2016-7-15 21:00
呵呵,当年我公布CMD_READ_EMU_MEM时用的是周立功的usb调试助手1.2,根本不需要写代码,自己试吧,只能用在 ...

能感受到你的心情

一周热门 更多>