关于移动安全的一点总结

488 阅读2分钟

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