iOS

iOS-逆向

2018-12-07  本文已影响60人  李永开

一.常识

二.cycript(动态调试app)

三.class-dump(导出app的头文件)

钉钉虚拟打卡

四.Hopper Disassembler(反编译app)

五.加壳&脱壳

六.theos(注入自己的代码)

1.%c() 等同于NSClassFromString:()
2.%ctor{}加载自己写的动态库的时候调用
3.%dtor{}应用关闭时调用
4.%new 生成新的方法, 然后在@interface lyk @end里面生命一下,就可以用了.
5.%log 打印方法的信息
6.logify.pl

七.SpringBoard

八.ldid(权限问题)

九.debugServer(调试app的工具)

十一.ALSR(防止别人访问你的函数、变量地址)

十二.汇编

寄存器
void main{
void test();
void next();
}

当进入test函数时,lr会记录next()函数的地址,这样在test() return的时候就可以找到 将要调用的函数了.

底层小知识

十三.iOS签名机制

总结一下流程:

1.在官网创建appID
2.本地用钥匙串生成request文件
其实就是拿到mac的公钥
3.上传request文件到apple官网,得到cer文件(apple充当CA角色)
其实就是apple用自己的fir私钥将**mac的公钥**进行签名
4.官网填写device等信息,得到mobileProvision.profile文件
其实就是apple用自己的sec私钥将**第一个签名 + app id + devices **进行签名
5.在xcode安装好pp文件,编译
其实就是 1.xcode用mac的私钥对代码进行签名 2.用apple的sec公钥验证sec私钥,如果一致就说明没有被篡改,得到**第一个签名 + app id + devices **,然后对比当前真机是否在devices列表里面或者appid是否一致 3.第二部没有问题,就用apple的fir公钥验证第一个签名(apple用自己的fir私钥将**mac的公钥**进行签名),如果一致就能拿到mac的公钥,然后用mac的公钥验证代码是否被篡改
6.如果是在appstroe下载的app,那么只需要fir签名就行了.(因为已经过了苹果的审核,所以不需要pp文件等....)

十四:重签名

上一篇下一篇

猜你喜欢

热点阅读