安卓加固APK防破解常用技术.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
安卓加固APK防破解常用技术

APK防破解常用技术汇总引言防破解技术汇集关键逻辑放服务端用 native code 替代 Java 代码代码混淆Java 代码混淆native code混淆运行前做完整性校验,防止重打包zip 加密位法dex 加密隐藏dex 嵌入异常汇编法资源混淆法禁止调试与模拟器检测附录资料安卓破解常用工具软件加固 apk 实例引言安卓应用防止破解和重打包可以选择梆梆加固、阿里聚安全、爱加密等成熟解决方案,他们的加固比较彻底,使用的技术也比较深层次,所以破解难度也很大,但是有可能带来应用不稳定的问题,所以周期长。如果不选择梆梆加固等的成熟方案,那么可以选择将一些防破解和重打包的对抗技术组合使用,虽然不如成熟方案层次深,但是使用简单,周期短,防住普通破解者也有不错的效果。这里将一些这样的防破解技术整理如下,仅供参考。每个技术都标注了易用性和防破解效果,易用性越高表明越容易实现,防破解效果越高表明攻击者越难破解。其中易用性越高表明越容易开发实现,防破解能力越高表明攻击者越难破解。防破解技术汇集关键逻辑放服务端尽可能将关键的逻辑代码放在服务端运行,减少敏感代码暴露在客户端。让客户端只做一些 API请求和界面交互。易用性:高防破解能力:中用 native code 替代 Java 代码将一部分关键的或者计算密集型的代码用 native code (Android NDK)来编写,不仅能提高运行效率,也能增加攻击者的逆向难度。易用性:中防破解能力:高代码混淆Java 代码混淆安卓标配了 proguard,推荐使用。易用性:高防破解能力:中native code混淆对 native code 做混淆,开源工具有:/obfuscator-llvm/obfuscator/wiki/obfuscator-llvm/obfuscator/wiki根据经验,这会让破解难度大大增加。易用性:中防破解能力:高运行前做完整性校验,防止重打包事先打包完成后,计算 dex 等文件的 hash 值,后续再植入原生代码进行校验,如果 hash 值不相等,那么程序一定被重打包执行。易用性:中(每次更新发布需要修改)防破解能力:低/中zip 加密位法讲 apk 的 zip 加密位置 1,在 android 解析 apk 时,由于忽略了加密 zip,直接跳过了加密头部的解析,因此通过修改 zip格式的加密标识,可以实现伪加密。易用性:低防破解能力:低/中dex 加密隐藏类似于梆梆加固类的方法,将 dex 文件加密隐藏,在程序加载之后,再从内存加载 dex 文件。易用性:低,需要开发大量代码防破解能力:高dex 嵌入异常汇编法这个方法主要目标就是让 apktool 或 dex2jar 等工具不能正常工作。举例如下:在最终 smali 汇编中嵌入如下函数,会让 dex2jar 工具崩溃,无法解析。.method public testdex2jarcrash(Ljava/lang/String;Ljava/lang/String;)V .registers 3 .param p1, test1 # Ljava/lang/String; .param p2, test2 # Ljava/lang/String; .annotation build Lcom/system/TestA; .end annotation .end param # 这里是引起崩溃的关键,注释掉就可以正常解析 return-void.end method易用性:较低防破解能力:高资源混淆法通过一定的方法构造资源文件,使 apktool 自动打包和解包失败。(目前已经具有相关能力)禁止调试与模拟器检测在安卓程序中禁止调试选项,主要有两个点需要覆盖。一,设置 AndroidManifest.xml 中的 android:debuggable=true, 则 ApplicationInfo().flags 被设置为 true。 使用 android.content.getApplicationInfo () 可以获取 AndroidManifest.xml 文件的信息。样例代码如下:if (getApplicationInfo().flags ApplicationInfo().FLAG_DEBUGGABLE != 0 ) { // some cracker is cracking this apk} 二,检测调试器是否连接在较隐蔽的代码处,调用如下函数获取是否被调试信息。if (Android.os.Debug.isDebuggerConnected()) { // some cracker is debugging this apk}为了达到更隐蔽的效果,可以使用 Java 的反射机制来动态找到这些方法调

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档