收藏 分销(赏)

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

上传人:天**** 文档编号:4329265 上传时间:2024-09-06 格式:DOC 页数:4 大小:35.50KB 下载积分:5 金币
下载 相关 举报
安卓加固APK防破解常用技术.doc_第1页
第1页 / 共4页
安卓加固APK防破解常用技术.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
安卓加固APK防破解常用技术 APK防破解常用技术汇总 引言 防破解技术汇集 关键逻辑放服务端 用 native code 替代 Java 代码VsID5hN。eBqEtNx。 代码混淆 Java 代码混淆 native code混淆 运行前做完整性校验,防止重打包 zip 加密位法 dex 加密隐藏 dex 嵌入异常汇编法 资源混淆法 禁止调试与模拟器检测 附录资料 安卓破解常用工具软件 加固 apk 实例 引言 安卓应用防止破解和重打包可以选择梆梆加固、阿里聚安全、爱加密等成熟解决方案,他们的加固比较彻底,使用的技术也比较深层次,所以破解难度也很大,但是有可能带来应用不稳定的问题,所以周期长。z2olKNi。XYO7XgX。 如果不选择梆梆加固等的成熟方案,那么可以选择将一些防破解和重打包的对抗技术组合使用,虽然不如成熟方案层次深,但是使用简单,周期短,防住普通破解者也有不错的效果。8qHbwLF。QtJG648。 这里将一些这样的防破解技术整理如下,仅供参考。 每个技术都标注了易用性和防破解效果,易用性越高表明越容易实现,防破解效果越高表明攻击者越难破解。其中易用性越高表明越容易开发实现,防破解能力越高表明攻击者越难破解。5zfhQaK。g1CMI14。 防破解技术汇集 关键逻辑放服务端 尽可能将关键的逻辑代码放在服务端运行,减少敏感代码暴露在客户端。让客户端只做一些 API请求和界面交互。ihL1eeS。d7Ba3h0。 易用性:高 防破解能力:中 用 native code 替代 Java 代码 将一部分关键的或者计算密集型的代码用 native code (Android NDK)来编写,不仅能提高运行效率,也能增加攻击者的逆向难度。4c2QKaW。c4r3uCw。 易用性:中 防破解能力:高 代码混淆 Java 代码混淆 安卓标配了 proguard,推荐使用。 易用性:高 防破解能力:中 native code混淆 对 native code 做混淆,开源工具有: 根据经验,这会让破解难度大大增加。 易用性:中 防破解能力:高 运行前做完整性校验,防止重打包 事先打包完成后,计算 dex 等文件的 hash 值,后续再植入原生代码进行校验,如果 hash 值不相等,那么程序一定被重打包执行。tqvpCVS。MnEqE2u。 易用性:中(每次更新发布需要修改) 防破解能力:低/中 zip 加密位法 讲 apk 的 zip 加密位置 1,在 android 解析 apk 时,由于忽略了加密 zip,直接跳过了加密头部的解析,因此通过修改 zip格式的加密标识,可以实现伪加密。JbCbxsW。lHZINv3。 易用性:低 防破解能力:低/中 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 文件的信息。Q70BAS3。R8VVsLF。 样例代码如下: 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 的反射机制来动态找到这些方法调用,而不是直接调用,调用之后也不要直接退出程序,而是设置变量让后续逻辑知晓,这都可以让破解难度变大。vUdDYAR。w9zK0AO。 三,模拟器检测 公开发布版本不在运行在模拟器中执行,一旦发现就立刻退出。模拟器检测方法有很多,常见的如:模拟器的操作系统 code name 为 generic,可以通过以下几种方法来检测。VEXqxw3。YHWf4rW。 直接代码方法,android.os.Build类中。包括了这样的一些信息。可以直接调用 而不需要添加任何的权限和方法。直接检测 Landroid/os/Build;->MODEL 是否为 “sdk”,如果是,则为模拟器。AJMHV0v。MjX4i48。 使用系统工具方法,如下表: $ adb shell getprop [ro.kernel.qemu]: [1] [ro.hardware]: [goldfish] [ro.build.tags]: [test-keys] [ro.product.model]: [sdk] [ro.product.brand]: [generic] [ro.product.name]: [sdk] [ro.product.device]: [generic] [ro.product.board]: [] [ro.product.manufacturer]: [unknown] [ro.board.platform]: [] [ro.build.product]: [generic] [ro.build.fingerprint]: [generic/sdk/generic:2.3.1/GSI11/93351:eng/test-keys] 易用性:高 防破解能力:中 附录资料 安卓破解常用工具软件 1. apktool 2. dex2jar 3. smali/baksmali 4. JEB 5. Virtuous Ten Studio 加固 apk 实例 1. 2015阿里移动安全挑战赛的题目 2. 梆梆加固客户 apk 开源项目
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服