刚才抽空细读了一下 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命令失败。
命令表官网有 百度RM08001-JLinkUSBProtocol
那帖子里也有CMD_XXXX那一堆。DLL也有部分,猜想证明即可
我对哪位的直接读取方式倒是感兴趣,可惜对USB实在不懂,卡在建立工程。
通过DLL读取倒是搞定了很多
另外,Se99er公司留这条命令是用于查看J-1ink的RAM的,方便调试。
话说当年发现这条命令后,用usb调试助手1.2一次成功读出firmware的兴奋,估计你们是体会不到了。 。 。
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
能感受到你的心情
一周热门 更多>