解决jlink-ob仿真自动退出
- jlink-ob 各个版本都适用--jianqiang.xue
-
- 一、准备工具:
- 二、OD查找关键信息
- 三、修改JLinkARM.dll文件,解决问题
- 四、速成版本,直接替换JLinkARM.dll
jlink-ob 各个版本都适用–jianqiang.xue
一、准备工具:
- FishcOD (百度云,提取码:4131) CSDN (城域网盘,访问密码: 4634)
- UltraEdit (百度云,提取码:l9xz) CSDN (城域网盘,访问密码: 4634)
二、OD查找关键信息
- 打开OD,载入JFlash.exe. (x\JLink_Vxxx\JFlash.exe)
- 点击运行,此时,J-Flash会被打开。
- 随便创建一个项目,然后连接目标设备。
- 等等30s,直到J-Link弹窗警告。
- 然后返回OD界面,查看–可执行模块–JLinkARM.dll(双击打开)
- OD汇编窗口,右键–中文搜索引擎–智能搜索
- Ctrl+f,打开搜索框,并输入"The connected J-Link is",找到后,双击进入。
- 找到“提示框”位置。汇编讲解如下:
042392D5 85C0 test eax,eax
042392D7 75 59 jnz short JLinkARM.04239332
042392D9 6A 01 push 0x1
042392DB E8 C0100800 call JLinkARM.042BA3A0
042392E0 46 inc esi
042392E1 83C4 04 add esp,0x4
042392E4 81FE 88130000 cmp esi,0x1388
可以看到有个循环0x1388的地方(0x1388换算10进制为5000,实际上这里的含义是软件开启5000ms,即5s后弹出这个提示警告框),这个地方就是最初弹出的提示我们警告框的地方,我们将1388上面的这个JNZ修改为JMP指令,将它改为强制执行,对应的16进制就是75改为EB,这样警告框就不会再次弹出了。
记录当前16进制数据:85 C0 75 59 6A 01
- 找到仿真自动断开位置(隐藏暗桩)
04ED9368 85C0 test eax,eax
04ED936A 75 1A jnz short JLinkARM.04ED9386
04ED936C 6A 01 push 0x1
04ED936E E8 2D100800 call JLinkARM.04F5A3A0
04ED9373 46 inc esi
04ED9374 83C4 04 add esp,0x4
04ED9377 81FE 30750000 cmp esi,0x7530
0x7530换算10进制为30000,实际上这里的含义是软件开启30000ms,即30s后断开仿真),也是将JNZ修改为JMP,对应的16进制就是75改为EB,这样仿真再也不会自动退出了。
记录当前16进制数据:85 C0 75 1A 6A 01
三、修改JLinkARM.dll文件,解决问题
- UltraEdit打开JLinkARM.dll文件
- 搜索关键信息1:85 C0 75 59 6A 01,修改为 85 C0 EB 59 6A 01.
- 搜索关键信息2:85 C0 75 1A 6A 01,修改为 85 C0 EB 1A 6A 01.
- ctrl+s,保持文件
注:上述16进制数据,每个版本都不一致。
四、速成版本,直接替换JLinkARM.dll
仅对JLink_V682,生效,其他不一定能用。
补丁:CSDN下载
补丁:城域网盘下载,JLinkARM_V682补丁.zip: (访问密码: 4634)
JLink_V682下载