使用Python脚本强化LLDB调试器

本文介绍了如何利用Python脚本增强LLDB调试器的功能,包括获取方法偏移地址,设置断点,编写自动获取ASLR偏移的Python脚本,并详细展示了启动LLDB时自动加载脚本的步骤,简化iOS应用调试过程。
摘要由CSDN通过智能技术生成

1.     https://github.com/superkhung/lldbinit

#lldbinit Init script for lldb

##Install:

git clone https://github.com/superkhung/lldbinit ~/.lldb
echo "command script import ~/.lldb/lldbinit.py" >> ~/.lldbinit
echo "Done!"

##Features

##Screenshot 


LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应用时会使用LLDB来调试代码。在逆向应用时,也会用到LLDB来跟踪应用的执行过程。

LLDB还内置了一个Python解析器,使用Python脚本可以方便LLDB的调试,比如自动化执行一些命令,或者自动化处理数据之类的,具体说明可以参考官方的文档:LLDB Python Reference

以下就以一个具体的例子来演示一个Python脚本的编写过程:

一、获取方法的偏移地址

运行系统自带的计算器Calculator.app

可以看到计算器的菜单里有一个“关于计算器”的选项:

如果我们要在点击“关于计算器”事件断下来的话,就要给这个方法设置一个断点。

先找到计算器的可执行文件的路径,路径为:/Applications/Calculator.app/Contents/MacOS/Calculator
打开Hopper Disassembler反汇编调试器,将可执行文件拖进去,等待Hopper分析完成。

在左侧的搜索框输入”showabout”,会搜索到一个结果:

点击这个结果,会跳转到该方法的汇编代码处:

 
 
 
  1. -[CalculatorController showAbout:]:
  2. 00000001000093dd push rbp ; Objective C Implementation defined at 0x1000188d0 (instance)
  3. 00000001000093de mov rbp, rsp
  4. 00000001000093e1 mov rdi, qword [ds:objc_cls_ref_NSDictionary] ; objc_cls_ref_NSDictionary, argument "instance" for method imp___got__objc_msgSend
  5. 00000001000093e8 mov rsi, qword [ds:0x10001b6f0] ; @selector(dictionaryWithObject:forKey:), argument "selector" for method imp___got__objc_msgSend
  6. 00000001000093ef lea rdx, qword [ds:cfstring_2000] ; @"2000"
  7. 00000001000093f6 lea rcx, qword [ds:cfstring_CopyrightStartYear] ; @"CopyrightStartYear"
  8. 00000001000093fd call qword [ds:imp___got__objc_msgSend]
  9. 0000000100009403 mov rdi, rax
  10. 0000000100009406 pop rbp
  11. 0000000100009407 jmp imp___stubs__NSShowSystemInfoPanel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值