iOS App安全防范总结

多开检测:

http://bbs.iosre.com/t/ios/11611
https://www.cnblogs.com/huangzizhu/p/9361070.html

判断bundleId是否是多开应用

防止抓包篡改数据

https://blog.csdn.net/u011656331/article/details/81120420

防止反编译

阻止动态调试

https://blog.csdn.net/qq_25303213/article/details/78179492

第一、自己附加进程,先占坑,ptrace(PTRACE_TRACEME, 0, 0, 0)!
第二、签名校验不可或缺的一个选择,本地校验和服务端校验双管齐下!
第三、借助系统api判断应用调试状态和调试属性,最基础的防护!
第四、轮训检查android_server调试端口信息和进程信息,防护IDA的一种有效方式!
第五、轮训检查自身status中的TracerPid字段值,防止被其他进程附加调试的一种有效方式!

4.防止二次打包
https://segmentfault.com/q/1010000006819342
https://en.wikipedia.org/wiki/Ptrace

只修改资源文件是可以的,替换资源文件后重签名。

解压ipa得到 Payload/yourapp.app 文件夹,

  1. 进入.app目录把 embedded.mobileprovision 文件替换成你的打包证书文件,注意这个文件的名字不要改。
  2. 如果有 xxx.entitlements.xcent 文件,把里面的内容替换成你的。
  3. 增加、删除、替换你的资源文件,图标 图片等。
  4. 编辑 Info.plist,修改 bundle ID.
  5. 命令行 cd 到 Payload 目录里,然后执行 codesign -fs "iPhone Distribution: your company" yourapp.app

iPhone Distribution: your company 是打包的证书全名,Keychain 里可以看到,必须是未过期的证书。

如果是企业证书打包,再加个参数 --resource-rules="ResourceRules.plist"

ResourceRules.plist如下:

**<?xml version="1.0" encoding="UTF-8"?>**
**<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">**
<plist version="1.0">
<dict>
 <key>rules</key>
 <dict>
 <key>.*</key>
 <true/>
 <key>Info.plist</key>
 <dict>
 <key>omit</key>
 <true/>
 <key>weight</key>
 <real>10</real>
 </dict>
 <key>ResourceRules.plist</key>
 <dict>
 <key>omit</key>
 <true/>
 <key>weight</key>
 <real>100</real>
 </dict>
 </dict>
</dict>
</plist>

推荐阅读更多精彩内容