1、APP加固新方向-混淆和瘦身闵振飞(陵轩)2016.10目录CATALOG 传统加固 全量混淆 Q&A 优化瘦身 加固的意义加固的意义JAVA语言编写,开发门槛低,容易被反编译Android市场混乱,且可自签名,导致大量应用被二次打包,植入广告、木马手机Root后,利用HOOK等技术手段对应用进行动态攻击目录CATALOG 传统加固 全量混淆 Q&A 优化瘦身 加固的意义加固和脱壳技术的发展第一代1.Dex加密存储,解密时落地2.自定义DexClassLoader脱壳方法HOOK文件操作函数,read、write、delete第一代升级版1.Dex加密存储,解密时不落地2.自定义DexClas
2、sLoader脱壳方法加固和脱壳技术的发展内存dump法HOOK dvmDexFileOpenPartial第二代1.Dex Method方法抽离2.Dex加载不连续加固和脱壳技术的发展第三代1.Dex Method方法抽离2.Dex执行中动态解密DEX结构dex_headeru1 magic8;u4 checksum;u4 file_size;u4 string_ids_size;u4 stringIdsOff;u4 class_defs_size;u4 classDefsOff;DexClassDef_Itemu4 classIdx;u4 access_flag;u4 superClass
3、Idx;u4 interfacesOff;u4 sourceFileIdx;u4 annotations;u4 classDataOff;u4 statiValusOff;DexClassData_Itemu4 staticFieldSize;u4 instanceFieldSize;u4 directMethodSize;u4 virtualMethodSize;DexEncodedFieldList staticFieds;DexEncodedFieldList instanceFieds;DexEncodedMethodList directMethods;DexEncodedMetho
4、dList virtualMethods;EncodedMethoduleb128 method_idx_diff;uleb128 access_flag;uleb128 code_off;DexCodeu2 registersSize;u2 insSize;u2 outsize;u4 debugInfoOff;传统加固的挑战容易被脱壳,脱壳类教程非常多通用脱壳机可轻易脱大部分壳zjdroid:https:/ 传统加固 全量混淆 Q&A 优化瘦身 加固的意义ProGuard混淆全量混淆目录CATALOG 传统加固 全量混淆 Q&A 优化瘦身 加固的意义优化瘦身Dex文件debug信息清除,减少
5、编译器自动产生的函数,优化性能,减少体积。通过java层拦截技术,对so进行重新打包压缩,减少体积。修改 android 应用资源名称,减少应用体积,提高资源保护强度。开发7z工具,对签名后的apk包重新压缩,达到进一步减少体积的目的。优化瘦身注:基准包来源摩天轮打包平台和支付宝cp平台优化瘦身应用名原始大小(字节)优化后大小(字节)减少百分比微博49800 12.29%百度地图56679325 50210909 11.42%唯品会24585845 20744044 15.66%美团外卖21000244 17473964 16.81%今日头条23432134 1868112420.27%华为账号14526281 811784244.12%优酷视频38464866 28929039 24.78%大众点评19965701 15948756 21.18%百度视频2721012.32%目录CATALOG 传统加固 全量混淆 Q&A 优化瘦身 加固的意义