静态分析是在程序尚未运行的状态下进行的逆向分析 。主要使用反汇编、伪代码、流程图、代码修改等方式,常用的静态分析工具有、IDA Pro等 。
/ IDA Pro能够将Mach-O文件的机器语言代码反编译成汇编代码、OC伪代码或者swift伪代码 。
/IDA Pro的地址都是未使用ASLR的VM。
以为例,通过我们可以查看可执行文件里的所有方法 。如果我们对某个方法感兴趣,只要一搜就能看到,但只能看到汇编代码或者OC伪代码实现;我们看到该app有很多比如这样的函数名,说明该app对大量方法名使用了代码混淆的防护手段 。
5.4.攻击手段四:动态分析
动态分析,简单来说就是,我们可以直接使用LLDB调试别人的程序,在静态分析中必须联系上下文进行分析与猜测,而动态分析时只需要把相关寄存器或栈内容打印出来便一目了然,甚至可以直接修改返回值来验证结果的准确性 。
LLDB只能运行在macOS上,若要调试iOS应用,需要先在设备上运行一个叫做的工具 。
扮演服务器的角色,把在macOS端执行的各种LLDB指令传递给设备端,并把设备端的结果反馈到macOS终端,这种调试方式称为远程调试 。
5.4.1.如何配置?
如果当前的iOS设备进行过真机调试,那么会被自动安装到/usr/bin目录,可以通过爱思助手将其导出到macOS上
由于缺少权限,所以只能调试自己的应用,如果要调试第三方应用,就需要对进行处理,在iOS11运行还需要加上-权限 。
具体步骤:
a. 在导出的同级目录下创建一个名为“ent.xml”的文件,并输入以下内容
b.在终端使用进行签名
-f -s - -- ent.xml ./
c.将签名后的复制到设备 /usr/bin/ 目录下,并添加执行权限
chmod +x /usr/bin/
把复制到“/usr/bin/”目录的好处是,在任意目录下都可以直接运行 。
开启
// *:端?号
// *代表接受任意IP的连接,使?的某个端?启动服务(只要不是保留端?号就?)
// -a 进程
// 输?APP的进程信息(进程ID或者进程名称)
$*:端?号 -a 进程
a.10011端口映射
b.让设备中的附加到进程
c.打开一个新的终端,使LLDB连接到
比如调试 [. :],只要知道方法的起始地址,就可以给方法设置断点,我们可以在中找到这个方法的地址 。
但是由于ASLR机制,使得进程每次启动时,地址空间都会被简单地随机化,相当于在Mach-O起始地址前会增加一段随机地址值,所以中的方法地址并不是真正的地址
真正的地址 = ASLR偏移值 + 方法地址
用以下命令查看应用的ASLR偏移值
image list -f -o
如下图,偏移值为
在找到:的静态地址
计算出方法的真实地址,打断点 ( set -- ASLR偏移地址+方法静态地址) 。
set -- +
5.5. 攻击手段五:Theos
Theos是一个跨平台的越狱开发工具包,它为开发者准备好了一些代码模板、预置了一些基本的脚本,方便开发插件 。
Theos相当于对的封装,因此能实现对-C运行时的Hook,也能实现对C语言函数的Hook 。
简单来说,Theos可以通过修改二进制文件里某个方法的实现,以达到破解的目的 。
以上是逆向工程中常用的攻击手段,有一点需要注意的是,当我们成功修改完可执行文件之后,直接替换原文件安装到手机上是运行不了,这时候就需要用到重签名了 。
5.5.1.重签名
一旦修改了应用的二进制文件,或者增加、修改了应用里面的资源,应用本身的签名就会被破坏,由于iOS内核中强制部署了许多代码签名机制,运行修改后的应用会闪退甚至安装不成功,这样就可以避免攻击者在用户的设备上传播并运行不受信的代码 。
- ios13 是什么意思
- express搭建接口,使用axios发起post请求不到数据
- axios发送Post请求后端接收为null
- XS建议升级16系统吗
- iphone14出厂ios16点几
- IOS NSXML解析,数据不完整问题
- 40课 WEB攻防必备视频教程
- ipad4能不能升级ios13
- ipad5处理器
- ios能更新到指定版本吗