不替换降低jlinkarm.dll版本,利用ollydug反汇编J-Flash,完美解决去掉The connected J-Link is defective提示框和解决不能仿真的问题

  首先需要说明的是,这篇博客并不是由本人完全原创,也是之前偶然在其他论坛看到一位大牛利用ollydug反汇编J-Flash,这篇博客也仅仅只是对他的一点补充,他的论坛文章(利用OllyDbg解决JLINK提示The connected J-Link is defective. Proper opera... (amobbs.com 阿莫电子论坛))主要解决的是jlink-ob,但是我在v8上按照他的步骤仅仅只是去掉了警告框,并没有从根本上解决断点仿真的问题,而本次我将这两个问题都已完美解决。

  大多数人手中的jlink v8都是淘宝买的盗版货,而盗版货经常就有个坏毛病,就是容易丢固件,丢固件的话我们就会去网上下载固件,还好v8固件比较多,刷固件的教程也很多,这里我就不多赘述了,网上资源很多,而很多我们刷入的新固件正常使用都没有问题,但是再遇到高版本的J-Flash驱动的时候会发现总是有个警告提示框

                                         

  若仅仅只是用J-Flash下载有个这个也无所谓,但如果我们需要仿真的话就会发现,仿真30s就会中断,网上针对这种处理的采用的最多的方法就是 降低JLinkARM.dll的版本,我自己之前也是采用这种方法,而今天主要着重讲解第二种手段,就是利用ollydbg来修改高版本J-Flash的JLinkARM.dll,使其能够在我们的低版本固件上使用。

  首先我们打开下载好的ollydbg

                               

 点击文件打开,载入JLINK.exe, 点击调试运行(点击2次才会出现JLINK.exe,弹框),给板子插好仿真器,点击Target,点击Connect,提示连接成功后,等待一会儿出现The connected J-Link is defective对话框,我们点击ok。

                                   

  点ok后程序可以正常运行。我们知道JLink的驱动在JlinkARM.dll文件中,因此切换到模块JLinkRAM。

  1.在ollydbg中右键-查看-模块JLINKARM。

  2.右键-分析-分析代码

  3.右键-查找-所有参考文本字串

  4.在弹出的框中查找文本 The connected J-Link is

  5.找到提示的语句, 在该行上,右键-反汇编窗口中跟随

                            

  上图中我的地址是0x5C66AF9F,这个地址并不是固定的,大家根据自己的固件查到什么就是什么, 我们往上拖一下 ,可以看到有个循环0x1388的地方(0x1388换算10进制为5000,实际上这里的含义是软件开启5000ms,即5s后弹出这个提示警告框),这个地方就是最初弹出的提示我们警告框的地方,我们将1388上面的这个JNZ修改为JMP指令,将它改为强制执行,对应的16进制就是75改为EB,这样警告框就不会再次弹出了。

                              

  同理,接下来我们要找到停止我们仿真的地方,我们往下翻一翻,会看到一个循环0x7530的地方(0x7530换算10进制为30000,实际上这里的含义是软件开启30000ms,即30s后断开仿真),也是将JNZ修改为JMP。

                             

   接下来,我们使用编辑软件来修改JLinkARM.dll,我这里是用UltraEdit,打开之前我们需要注意两组数,一个是修改警告框的JNZ,另一个则是断开仿真的JNZ,之前我们修改为JMP,对应16进制由75全部变成了EB,所以我们将这两个地方周围的数字一块记下,方便锁定位置,我这里16进制分别是85 C0 75 77 6A 01(警告框)和85 C0 75 1A 6A 01(断开仿真)。

                       

                    

  两处搜索均只有1处,将这两个地方的75全部修改为EB,并进行保存,我们将新修改的JLinkARM.dll放入IAR或者MDK的根目录中进行替换,然后打开一个程序工程进行测试。

                 

  经过10分钟的测试,没有弹出警告框,也没有再次断开仿真,已成功解决这两个问题,其实本方法最终也是需要替换JLinkARM.dll,本质上与操作替换低版本的JLinkARM.dll没任何区别,但这可以使高版本的J-FLASH驱动兼容你的JLINK,毕竟低版本的J-FLASH驱动是存在有些MCU的型号找不到的这个问题,比如STM32L4系列下的MCU。

  最后我将本文中所使用的工具(ollydbg)以及我之前使用的低版本JLinkARM.dll(V5.12e)和刚修改完的这个JLinkARM.dll(V6.30)都上传到CSDN,有需要的同学可以去进行下载。

下载地址:JLink反汇编工具及其修改后的JLinkARM.dll驱动文件,使高版本IAR|MDK支持低版本的JLINK_修改JLinkARM.dll-硬件开发文档类资源-CSDN下载icon-default.png?t=LA92https://download.csdn.net/download/yekui6254/10880111

  • 22
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: jlink是一款常用的调试和烧录工具,同时也支持反汇编功能。使用jlink反汇编工具可以将目标设备中的代码转化为汇编语言,进而进行分析和调试。 jlink反汇编工具的使用需要jlink驱动支持,其中jlinkarm.dll是jlink驱动中的关键组件之一。为了实现更多的功能,有些开发者甚至对jlinkarm.dll进行了修改,从而增加更多的自定义功能和定制化操作。 自定义的jlinkarm.dll驱动文件可以用于不同的环境和需求,例如用于自动化测试、用于处理特殊类型的程序等等。不过,在使用自定义的驱动文件时需要注意一些安全问题,避免对目标设备的损害和意外发生。 总之,jlink反汇编工具及其修改后的jlinkarm.dll驱动文件是开发者日常工作中不可或缺的工具,能够帮助开发者更好地理解和处理目标设备中的代码,提高工作效率和开发质量。 ### 回答2: JLink反汇编工具是一款功能强大的反汇编软件,可用于分析和修改ARM芯片的代码。它能够读取和解析各种格式的ELF、COFF、S-record和Intel HEX文件。此外,它还支持标准的ARM和Thumb指令集,允许用户以汇编语言形式查看CPU的指令执行过程。 在使用JLink反汇编工具时,需要注意几点。首先,软件需要与JLink调试器配合使用,才能实现调试和烧录操作。其次,用户需要了解ARM芯片的指令集和寄存器结构,才能正确地解析和分析反汇编结果。最后,用户需谨慎使用修改功能,以免导致系统故障或数据损失。 针对JLink反汇编工具的修改,主要是对其驱动文件jlinkarm.dll进行优化和定制。通过修改驱动文件,用户可以增加或修改JLink调试器的功能,例如支持新的芯片型号、优化烧录速度、增加调试接口等。要修改驱动文件,需要具备一定的编程能力和相关知识,同时必须遵守软件使用和代码保护规定。 总之,JLink反汇编工具及其修改后的jlinkarm.dll驱动文件是ARM芯片开发和调试过程中的重要工具,用户可以根据需要选择合适的版本和配置,以提高工作效率和代码质量。 ### 回答3: jlink是基于ARM架构的仿真器,可以用于调试和开发处理器相关的程序。而反汇编工具是一种将二进制代码转化为汇编代码的工具。jlink反汇编工具就是针对jlink仿真器设计的反汇编工具。 jlink可以运行不同的固件,针对不同的处理器,而jlinkarm.dll驱动文件是jlink仿真器的驱动文件之一,用于加载不同的固件。这个驱动文件是可修改的,可以根据需要进行适当的更改。例如,可以修改驱动文件以支持新的处理器或新的调试接口,也可以修改驱动文件以添加一些调试功能。 但是需要指出的是,修改驱动文件可能会带来风险和不稳定性,可能会导致调试错误或设备故障。因此,建议只有在有经验并且遵循相关的安全措施的情况下,才尝试修改jlinkarm.dll驱动文件。 总的来说,jlink反汇编工具及其修改后的jlinkarm.dll驱动文件是对于ARM架构开发者非常有用的工具,在开发、调试、优化处理器相关的程序时,可以大大提高效率和准确性。但是,需要注意的是,使用这些工具需谨慎,尤其是在修改驱动文件时,需要谨慎操作,以避免不必要的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值