####年底了(明明是17年初了?) , 也总结下自己看到, 学到的关于逆向的知识体系, 欢迎大家补充和指正
####1.攻击一个app 通常有六个手段
1.静态分析 2.动态调试 3.动态注入 4.中间人攻击 5.资源篡改 6.重签名 复制代码
#####1.1:静态分析
1.hopper 2.ida 3.class-dump 复制代码
#####1.2:动态调试
1.LLDB 2.Cycript 3.introspy 复制代码
#####1.3:动态注入
1.tweak注入 2.非越狱环境下的dylid注入 3.fishook和Method Swizzling 复制代码
#####1.4:中间人攻击
1.中间人代理 复制代码
#####1.5:资源篡改
1.替换Mach-O 2.替换资源图片,视频,音频等 复制代码
#####1.6:重签名
1.codesign 签名 复制代码
####2.每种攻击的防护方案 #####2.1:静态分析防护
1.对抗hopper和ida的分析可以修改macho文件的某些偏移量(具体的自己查吧), 让hopper和ida无法分析造成闪退 2.对抗class-dump 和工具分析可以方法名类名混淆,混淆方案大致三种 1.编译前用脚本批量做宏定义替换 2.LLVM混淆(不会) 3.对Mach-O__objc_classnamehe __objc_methname 3.逻辑混淆(花指令) 复制代码
#####2.2:动态分析防护
1.ptrace ,syscall sysctl,dlsym等 2.cycript的防护还不会 3.introspy的也不会 复制代码
#####2.3:动态注入防护
1.__RESTRICT关联main函数 2.dladdr查看函数的内存空间信息, 验证函数的指针来自程序, 还是苹果的库, 还是未知. 复制代码
#####2.4:中间人攻击防护
1.用https 2.传递数据加密 复制代码
#####2.5:资源篡改防护
1.对资源做加密运算, 使用时候和编译前的值做比对 复制代码
#####2.6:重签名防护
1.拿到当前的签名文件的签名信息和编译前的签名信息比对 复制代码
####3.一些注意事项
1.调用需要弄成内联 2.最好用C或者C++写 复制代码
####4.没有破解不开的程序, 就是看时间成本值不值得去硬刚(肛),欢迎大家给我提一些宝贵的意见和方案 我会一直维护这个文章, 一直更新下去, 希望大家多补充
复制代码