####年底了(明明是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.没有破解不开的程序, 就是看时间成本值不值得去硬刚(肛),欢迎大家给我提一些宝贵的意见和方案 我会一直维护这个文章, 一直更新下去, 希望大家多补充
复制代码