前言:这是我写的第一篇博客
我之前一直就想写一些博客,来记录一下平常学习到的知识,但是一直怕自己写的不好,所以一直没有写.我写的不好或者错误的地方还请大家多多指教,我会及时改正.
关于class-dump
class-dump的作用就是将Mach-O文件的class信息给导出来,生成对应的.h头文件.
官方网址
但是class-dump只能导出Objective-c编写的头文件,如果是Swift编写的头文件就会报错,如下图所示
解决方法就是下载第三方写好的支持导出Swift的class-dump改进版,下载完成从新拖进/usr/bin目录即可使用.下载地址
关于脱壳
脱壳工具:请各位按照手机越狱版本自行选择脱壳工具
Clutch、dumpdecrypted(iOS11以下系统)
bfinject(iOS11及以上版本)
CrackerXI(iOS11~iOS13)
但是我遇到了一个问题,就是利用iFunBox从手机上将脱壳后的ipa文件拖入到Mac上的时候,解压的时候无法解压,见图:
我反复试了好多次,都是同样的结果.我在终端用file命令查看脱壳文件
如下:
如果是正确的ipa文件用file命令查看如下:
我想是不是我直接拖拽的问题,然后使用scp命令试试
scp -P 10086 root@localhost:目标文件路径 电脑存储路径
目标文件名尽量简洁,不要有特殊字符或者中文字符
10086: 连接ssh映射的端口
root: 用户名
localhost: 手机本机ip地址(也可写127.0.0.1)
这样使用scp命令导出的脱壳文件就可以正常使用了
关于class-dump导出的.h头文件
我们利用cycript或者Reveal查看需要hook的类,然后查看导出的.h头文件中需要hook的方法.但是有时候在导出的头文件中找不到我们要hook的类.以某视频软件为例,我需要hook QNBPlayerVideoAdsViewController这个类,但是我在导出的头文件中找不到这个类.原因是我们导出的是主模块的头文件,我们需要hook的类可能在某个动态库里,经过查找QNBPlayerVideoAdsViewController这个类在QNBAutomatic这个动态库里.我们依然可以使用class-dump导出动态库的头文件,因为动态库也属于Mach-O类型的文件.
关于LLDB动态调试
在利用debugserver动态调试App时,报错
Failed to get connection from a remote gdb process.
解决方式:删除debugserver 的以下权限,重新签名。
以下为要删除的权限
com.apple.security.network.server
com.apple.security.network.client
seatbelt-profiles