我用的是JLINK OB, 今天安裝了JLINK6.30g版本, 但仿真時 The connected J-Link is defective. Proper operation cannot be guaranteed...,提示個人JLINK是有缺陷的,我點肯定後仍然能正常運行。但總不能每次仿真都提示一下吧,決定償試一下能不能解決。
首先用OD載入JLINK.exe, 運行,一下子出現The connected J-Link is defective對話框
點OK後程序能夠正常運行。咱們知道JLink的驅動在JlinkARM.dll文件中,所以切換到模塊JLinkRAM. 在OD中右鍵-查看-模塊JLINKARM。
右鍵-分析-分析代碼
右鍵-查找-全部參考文本字串
在彈出的框中查找文本 The connected J-Link is
找到提示的語句, 在該行上,右鍵-反彙編窗口中跟隨
在彙編窗口中的該行上雙擊HEX數據列下斷點,按CTRL+F2,使程序從新運行,大約5秒後停在該行上
根據堆棧空間,和彙編代碼,函數的入口點應該在PUSH Warning以前,
所以在以前的PUSH ESI上下斷點,按CTRL+F2,使程序從新運行,而後乖乖停在該行上
按F8單步運行,發現有一個循環次數0x1388 的判斷過程,循環結束後將彈出The connected J-Link is defective對話框,若是在循環中條件成立則跳轉到JLinkARM.6FC0B4D6
嘗試使程序強制跳轉到JLinkARM.6FC0B4D6。雙擊該行,修改彙編JNZ 爲 JMP,而後繼續按F8單步運行,程序跳轉到JLinkARM.6FC0B4D6處
而後使程序全速運行,發現再也不提示The connected J-Link is defective對話框。
用UltraEdit打開JLinkARM.dll,查找85 C0 75 77 6A 01 E8, 發現只搜到一處,將75改爲EB後保存,直接運行JLINK.EXE, 再也不出現The connected J-Link is defective對話框, 問題解決
下面是修改過的JLinkARM.dll函數