GDB 通过 JTAG 在没有源代码的 ARM 硬件目标上

逆向工程 艾达 数据库 调试 手臂 标签
2021-06-24 07:34:33

有没有其他解决方案可以在没有 IDA 的情况下连接到远程 ARM 目标?这是问题,下面我给出了我尝试过的设置示例,如果有人感兴趣的话。

更新:更新了远程 gdb 的 Codeworks 测试

更新: GDB 设置已修复

我一直在研究 ARM 硬件目标,并使用 J-Link 建立了稳定的 JTAG 连接。尝试通过 JLinkGDBServer 使 IDA 与目标良好配合失败。JLinkExe 工作得很好。作为 JlinkExe 的基线,我可以停止、前进和单步执行。在 IDA 连接时,它尝试停止并且没有注意到 PC(程序计数器)不在 0x0。此时它会失去同步并导致设备停止或跳转到设备的错误循环,并且 IDA 无法让 PC 正确跟随它。

所以我一直在寻找其他解决方案:GDB 直接、Eclipse、Codeblocks。

GDB->JlinkGDBServer - 稳定:到目前为止运行良好

Eclipse->JlinkGDBServer - init 问题:从http://download.eclipse.org/tools/cdt/releases/helios添加硬件 GDB 调试器后,我可以设置一个空项目的调试器指向 GDBServer 但任何时候我尝试附加或调试它抱怨它无法启动目标。我不确定如何在没有目标源代码的情况下使其工作。

Codeblocks->GDB->JlinkGDBServer - 有效:codeworks 设置空项目时是否支持远程 GDB。远程设置位于项目设置中。(远程 gdb 未启动全局调试设置)。尽管代码块中的反汇编窗口不起作用,但稳定性类似于 GDB。可能只是我。

目前我回到 IDA 并可能基于http://idaproarmdebug.sourceforge.net为它编写我自己的 JLink 调试器插件

1个回答

来自 google 的 binnavi 可以很好地与 gdb 远程协作,但它确实需要一些设置,并且还需要 IDA 来创建 IDB,然后将其转换为 navi 数据库格式。

https://github.com/google/binnavi/tree/master/debug/client/gdb