解決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下載下傳