iOS逆向
文章平均质量分 81
Holothurian
千里之行跬步起、江海之成小流积。有志始知蓬莱近、无为总觉咫尺远。
展开
-
23、iOS逆向防护
反调试拒绝进程附加该函数防护的特点: 程序被Xcode安装运行直接闪退终端附加会失败用户正常启动能运行破解ptrace; 通过fishhook函数勾住ptrace; 判断参数1: 如果是拒绝就直接return反调试sysctl这个函数里面去检查进程状态sysctl(查询信息的数组,数组大小,接受信息结构体指针,结构体大小的指针,和3、4参数一样)在接受的结构体中,kp_proc属性中有一个标记 p_flag;原创 2023-04-24 18:33:26 · 1791 阅读 · 1 评论 -
22、Tweak原理及部分逆向防护
App可以被lldb动态调试,因为App被设备中的debugserver附加,它会跟踪我们的应用进程(trace process), 而这一过程利用的就是ptrace 函数ptrace是系统内核函数,它可以决定应用能否被debugserver附加.如果我们在项目中,调用ptrace函数,将程序设置为拒绝附加,即可对lldb动态调试进行有效的防护.ptrace在iOS系统中,无法直接使用,需要导入头文件ptrace函数的定义:request: 请求ptrace执行的操作。原创 2023-04-24 18:19:10 · 1385 阅读 · 0 评论 -
21、越狱调试
4.1 Reveal4.2 USB启动debugserver4.3 Xcode 附加程序4.4 debugserver权限问题4.5 class-dump4.6 lldb手动砸壳4.7 Tweak修改系统行为4.8 MonkeyDev搭建Tweak插件原创 2023-04-24 18:08:16 · 2178 阅读 · 0 评论 -
20、Theos越狱调试Wallet
Cycript越狱手机安装Cycript插件,依赖于adv-cmds插件依附进程,使用cycript -p 进程id/名称导入cy文件将自定义cy文件,放入 /usr/lib/cycript0.9目录中为了不重名,让入com目录中,创建自己组织的文件夹加载时,使用 @import com.组织名称.文件名称theos是一个越狱开发工具包可以创建Tweak项目,动态Hook第三方程序搭建theos插件。原创 2023-04-24 17:42:22 · 1672 阅读 · 0 评论 -
19、iOS砸壳概述
使用过的砸壳方式有四种,根据防护手段不同、所以有些砸壳方式并不是万能的.原创 2023-04-24 17:07:45 · 8699 阅读 · 0 评论 -
18、越狱
越狱概述通过破解 : iOS安全启动链的漏洞,拿到iOS的root权限完美越狱:每次系统重新启动,都会再次进入越狱状态非完美越狱:没有完全破解,一般重启后会失去越狱环境OpenSSHSSH是一种网络协议OpenSSH是一款软件SSH登录过程远程主机(服务器)收到用户的登录请求,将自己的公钥发给客户端客户端使用公钥,将自己登录的密码加密发送给服务器远程主机(服务器)使用私钥解密登录密码,如果密码正确,就同意登录中间人攻击。原创 2023-04-24 16:57:59 · 1211 阅读 · 0 评论 -
17、Logos使用摘要
本篇将讲述如何将WX的设置界面添加两个自定义的UI行: 包含是否启用某功能的开关,以及手速设置.并且如何定位到修改的代码。原创 2023-04-24 16:48:05 · 436 阅读 · 0 评论 -
24、LLVM编译流程
Clang是LLVM项目中的一个子项目. 它是基于LLVM架构的轻量级编译器,诞生之初是为了替代GCC,提供更快的编译速度. 它是负责编译C、C++、Objective-C语言的编译器,它属于整个LLVM架构中的,编译器前端.对于开发者来说,研究Clang可以给我们带来很多好处.当编译器决定支持多种源语言或多种硬件架构时,LLVM最重要的地方就来了,其他的编译器如GCC, 它方法非常成功,但由于它是作为整体应用程序设计的,因此它们的用途受到了很大的限制.那么在执行这段代码时,它的编译流程具体是如何体现呢?原创 2023-04-23 12:06:21 · 999 阅读 · 0 评论 -
16、Cycript&Logos
Logos语法其实就是Cydia Substrate框架提供的一组宏定义语法%hook、%end勾住某个类,在一个代码块中直接写需要勾住的方法用于分组: 一般用于不同的系统中做不同的hook内容每一组都需要%ctor()函数初始化通过%init(组名)进行初始化%log输出方法的详细信息(调用者、方法名、方法参数)%orig调用原始方法.可以传递参数,接收返回值%c类似getClass函数,获得一个类对象%new添加某个方法关于xm文件, .xm代表支持OC、C/C++语法。原创 2023-04-20 12:36:15 · 411 阅读 · 0 评论 -
15、虚拟内存&LLDB高级调试
ASLR(Address Space Layout Randomization): 是一种针对缓存区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的.大部分主流的操作系统已经实现了ASLR原创 2023-04-20 12:12:27 · 646 阅读 · 0 评论 -
14、lldb调试指令
LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具.标准的lldb提供了一组广泛的命令,旨在与老版本的GDB命令兼容.除了使用标准配置外,还可以很容易地自定义lldb以满足实际需要原创 2023-04-20 12:02:27 · 1394 阅读 · 1 评论 -
13、fishhook原理&Dobby
Dobby原理: 运行时对目标函数的汇编代码替换,修改的是内存中MachO的代码段Dobby替换汇编代码时,对原始函数的调用,会影响栈的拉伸和平衡在真实HOOK场景中,我们拿不到符号名称,只能对地址进行HOOKHOOK地址时,需要加上PAGEZERO和ASLR。原创 2023-04-20 11:57:10 · 1624 阅读 · 0 评论 -
12、HOOK原理下
如何防护他人Hook:需要保留自己的HOOK方法;如果要使用fishhook做防护,那么需要在framework里边去实现;因为framework里边的load加载会比主工程的代码更快.注入的HOOK代码在framework代码之后,主工程之前.所以要切入这个时机点去做防护原创 2023-04-20 11:56:25 · 863 阅读 · 0 评论 -
11、HOOK原理上
HOOK,中文译为“挂钩”或“钩子”.在iOS逆向中是指改变程序运行流程的一种技术.通过hook可以让别人的程序执行自己所写的代码. 在逆向中经常使用这种技术重点要了解其原理,这样能够对恶意代码进行有效的防护.原创 2023-04-20 11:55:50 · 1149 阅读 · 0 评论 -
10、Dyld总结
Dyld: 动态链接器,加载所有的库和可执行文件原创 2023-04-20 11:55:31 · 620 阅读 · 0 评论 -
9、MachO简介
Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件、目标代码、动态库的文件格式.作为 a.out格式的替代,MachO提供了更强的扩展性原创 2023-04-19 17:03:51 · 844 阅读 · 0 评论 -
8、代码注入
一般修改原始的程序,是利用代码注入的方式,注入代码就会选择利用Framework和Dylib等三方库的方式注入.原创 2023-04-19 17:00:15 · 529 阅读 · 0 评论 -
7、应用重签名
删除插件和带有插件的 .app包(比如Watch)对Frameworks里面的库进行重签名给可执行文件 +x(可执行)权限添加描述文件(新建工程,真机编译得到,而且要运行,将描述文件安装到手机)替换BundleID(info.plist文件. BundleID要和描述文件中的ID保持一致)通过授权文件 (Entitlements)重签 .app包原创 2023-04-19 16:58:40 · 1574 阅读 · 0 评论 -
iOS逆向汇总
iOS逆向手段系列指引原创 2023-04-19 16:53:19 · 427 阅读 · 0 评论 -
6、苹果签名原理
代码签名是对可执行文件或脚本进行数字签名,用来确认软件在签名后未被修改或损坏的措施. 和数字签名原理一样,只不过签名的数据是代码.原创 2023-04-19 16:43:44 · 919 阅读 · 2 评论 -
5、Hash&对称加密
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数原创 2023-04-19 16:41:19 · 1356 阅读 · 0 评论 -
4、RSA&终端指令
RSA的安全系数非常高(因为整个业务逻辑非常安全);加密效率非常低(不能做大数据加密);用来加密关键数据.原创 2023-04-19 16:33:20 · 1250 阅读 · 0 评论 -
3、循环选择判断
获取全局变量和常量时,会出现adrp和add两条指令获取一个地址的情况原创 2023-04-19 16:24:08 · 936 阅读 · 0 评论 -
2、函数的本质
栈是一种具有特殊的访问方式的存储空间原创 2023-04-19 16:15:37 · 1050 阅读 · 0 评论 -
1、汇编基础
借助助记符代替机器指令的一种编程语言.汇编和机器指令是一一对应的关系, 拿到二进制就可以反汇编.由于汇编和CPU的指令集是对应的,所以汇编不具备移植性.原创 2023-04-19 16:09:36 · 641 阅读 · 0 评论