暗桩和自杀分支
添加一些直观看上去有用的迷惑的方法到类中,并且看起来比较有用。
|
|
自杀分支不仅能够擦除用户数据,还可以混淆攻击者让他放弃攻击
进程调试检测
当一个应用程序被调试的时候,内核会自动设置一个进程状态标志表示进程正在被调试。我们可以检测这个标志,一旦知道自己程序被调试,我们就可以做一些相应的安全措施了。如退出程序、禁用功能等等。
|
|
阻挡调试器
保证我们程序不被调试,这个只能说增加了难度。如果一个专业的可以通过解密应用程序永久移除它等等的手段。所以我们要越狱检测、调试检测等等相互辅助才能达到最好的效果。
|
|
但是iPhone的环境中没有开发这个ptrace.h文件,所以只能使用dlopen来拿到
|
|
在工程的main.m中增加以下代码
运行时库类完整性检查
检查内存地址空间
恶意代码的注入,都是需要加载到内存地址空间中,所以可以检查方法的内存位置
通过dladdr函数检查
|
|
使用:
我们也可以通过runtime来实现验证类中所有的方法
注意点
- 函数命名未无法理解的函数
- 在不同位置检查类。因为攻击者可以在任意点上将代码注入
- 考虑检查通用类。比如NSStrin个、NSData等。这些类可以很轻易的劫持大量内存信息
内联函数
inline或__attribute__(always_inline)
内联函数式编译器将函数功能插入到每处代码被调用的地方,所以让攻击者看不到内联函数的调用。(声明内联要用static)它是增加文件的体积来提高程序性能。因为内联函数是没有函数调用的开销,可以有效提高性能;它也能够有效的复用代码。