动态调试及LLDB技巧集合

本文介绍了在非越狱逆向开发中如何结合静态分析和动态调试来深入理解程序运行。重点讲解了LLDB动态调试,包括环境设置、调试指令集如断点设置、流程控制、内存断点等,并提到了LLDB导入Python脚本增强调试能力。
摘要由CSDN通过智能技术生成

学习背景:在非越狱逆向开发的过程中,我们可以从界面(Reveal)、类与方法(class-dump)、或者网络(Charles)等方面及一个应用的功能点入手去寻找一些需要实现功能的入口线索。但是在未知源代码的情况下,想要精确定位一个功能点的实现位置及实现原理,就需要结合静态分析和动态调试来分析程序运行的动态和行为实现。

静态分析

静态分析是指在程序没有运行的情况下进行程序分析的一种方法,一般分为以下三种:

  • 基于ipa和app包静态分析
  • 基于文件格式的静态分析
  • 基于二进制反汇编的静态分析

在二进制反汇编静态分析的过程中,我们可以两种反汇编的工具,一个是Hopper,一个是IDA。两者的功能都非常强大,可以显示被分析文件的反汇编代码、流程图及伪代码。其中常用的功能有字符串搜索,跳转地址,变量重命名等。

动态调试

动态调试和静态分析是相辅相成的。静态分析只能分析静态的函数内部执行。要想动态获取程序在运行时的参数传递、执行流程及寄存器内存等信息,就需要使用动态调试的方法。

LLDB动态调试

我们都知道,LLDB是Xcode自带的调试工具,既可以在本地调试Mac应用程序,也可以远程调试iPhone真机。我们平时在开发中调试程序接口和运行状态时也会经常使用。
其实原理是这样的:当使用Xcode调试真机App时,Xcode会将debugserver文件复制到手机中,以便在真机上启动一个服务,等待Xcode进行远程连接调试。所以只有当设备连接计算机真机调试App后,debugserver文件才会安装到设备的/Developer/usr/bin目录下。但是,debugserver文件默认只能调试自己开发的应用,在调试从App Store下载应用时会出现"unable to start the exception thread"错误。

LLDB调试环境设置

不过既然知道了原理就可以试着去对debugserver去做一些权限处理就可以了,下面是具体的步骤:

1.准备工作

为了调试其他应用,需要给debugserver文件富裕task_for_pid权限。在调试前需要做如下准备工作。

(1)复制debugserver文件

使用scp命令将debugserver文件从手机复制到Mac计算机上。

scp -P 2222 root@localhost:/Developer/usr/bin/debugserver ./
(2)签名权限

新建一个entitlement.plist文件,在其中写入如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值