vscode汇编插件_LidaDbg汇编级跨机跨架构调试

在《LidaDbg-源码级跨机跨架构调试》一文中,我们详细介绍了如何使用LidaDbg+VSCode组合进行源码级调试。这篇文章,我们以iOS越狱环境的调试为例,分享如何使用LidaDbg+IDA进行高级别的汇编级调试。如果你能把下面介绍的方法操作熟练,我想一定可以为你的工作带来很大的便利。 首先是iOS手机端的调试服务器的安装和运行。安装如下deb插件至手机端:

60e329bb4034ef95caa034d9747d9549.png

安装完LidaDbgServer.deb之后,就可以在ssh shell中随时启动调试服务:
lidadbg-server &
然后通过setup.py这个脚本将LidaDbg插件安装至IDA插件目录:

0ad9aa1a7a5596958fb9d65bd73e071a.png

至此,所有的前置准备工作就算结束了。下面我们以调试iOS akd进程为例,看看LidaDbg+IDA有啥magic的地方。 将akd进程主文件拖进IDA,待分析完毕以后,通过如下菜单命令打开LidaDbg主操作界面。

cf19fe5a49e0a731ee72b65427afb4ca.png

由于LidaDbg调试输出是在IDA的Output窗口,所以将界面布局设置成如下,更方便可视化调试。

9cef5e626d2462f5a93fadc146e3700a.png

在进行远程操作以前,先通过按键‘C’或者单击‘Config’打开远程参数配置,在这里调试iOS的参数如下:

a962b386211945a7e5703492c588ae18.png

正常连上远程调试服务器之后,得到如下的Output信息:

a34d463c6ad7f453895c2a2b4e4bddc6.png

然后,我们就可以通过按键‘A’或者点击’Attach‘附加要调试的目标进程akd了。

defdec3e38e9c528e40bcf54f85c43ee.png

等到Output窗口出现如下信息,说明Attach成功。

ac75152c510542f0e8e082f9eb57b939.png

通过按键‘M'或者点击’Modules‘可以查看当前进程加载的模块列表。

4c5573f6181f306d40aa0036e6184abb.png

其他的线程列表和切换、堆栈列表和栈帧与此类似,通过‘T’、‘F’实现。如果我们想查看akd进程栈帧处的代码,则在堆栈回溯列表中找到akd进程的栈帧,然后双击就可以跳转到对应的指令地址。

c1bd0e064983561bb415055ff029ca89.png

如果想看其他模块的代码,比如Foundation,那么需要另外开一个IDA实例,然后按照akd模块的步骤一样的操作即可。相当于一个IDA实例对应一个模块,LidaDbg的整体工作架构如下:

0e6d94b3bfabd6f76f7da63b6315bf17.png

具体的调试过程与我们的老朋友OllyDbg/GikDbg调试器是一样的,即“F2 Breakpoint, F3 Backtrace, F4 Run to Cursor, F5 Continue, F7 Step In, F8 Step Out, F10 Go to PC, F12 Pause. ”。唯一需要注意的地方是,为了最小化干扰IDA的工作,LidaDbg的快捷键必须是在自己是焦点窗口时才会有效。比如,我们需要设置断点的时候,第一步是在IDA汇编窗口点击断点地址行,让该行为焦点行,然后再在LidaDbg窗口按F2,就可以在该焦点行下断点了。

5555fae7ab94f235f6e64c8392a2c874.png

以上操作就是LidaDbg最为基础的功能,是每一个需要汇编级调试的朋友都应该掌握的技巧。而下面继续介绍的就是LidaDbg更为有用的高级技巧了。IDA有个Script Command的功能,如下:

bd51ec3103142f0637162c61c59e642a.png

打开这个窗口,我们新增了LLDB脚本选项:

9a415956ea8beee796403e6c9835fba5.png

有了这个功能,我们就可以创建各种LLDB Script Snippet代码,并且这些代码是随着idb数据库永久保存的。这将为我们调试工作的持续化带来极大的方便,不然我们每次都是拿个小本本记录一堆br set、p、po、watch set等调试命令,实在是低效。

0d8ed80f0151dd31945191917b0318ce.png

同时,如果第一条命令是‘#mul’,那么就可以顺序执行这段Snippet的所有命令,没有则执行最后一条命令。同样的道理,如果LidaDbg主界面没有符合你要求的操作,那么这个扩展命令窗口,也是进一步满足你需求的最终接口。聪明的你,意会到它的强大和方便了吗? OK,至此,我们就简要的将LidaDbg+IDA最核心的部分介绍到这里了。调试技巧和能力的提升是一个长期的过程,大力出奇迹,熟能生巧也可以出奇迹。希望各位朋友的调试技能越来越精湛,以更好的为研发工作服务,么么哒。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值