Android APK安全: 代码混淆且加壳防止反编译
2017-11-23 15:41
666 查看
最近学习了下APK安全防止反编译,目前还只初步阶段。以下是经过实践,现在做一下简要实践步骤总结。
用到工具
2、添加花指令
3、代码混淆
4、 apk打包:通过Android Studio 进行编译打包apk。生成包是经过代码混淆的
5、修改dex十六进制地址
通过IDAProv6.8。反编译apk里的classes.dex文件,找到BadCode class函数执行入口地址。
通过C32Asm工具 使用十六进制打开 classes.dex文件,按快捷键“Ctrl + G”,定位到BadCode class函数执行入口地址 改为“12 01 38 01 03 00 FF FF 00 00 00 00 00 00” 并保存
6、修复DEX:把修改后的dex文件拖入DexFixer工具进行修复
7、 重新签名:把修复后的dex文件覆盖apk原有的dex文件,删除META-INF签名文件,使用签名工具Windowssigntool,对apk重新签名。
8、 反编译新apk包:至此,混淆与加壳都已完成,并可以使用Android手机进行安装。用dex2jar-0.0.9.15反编译会报错。
9、 android安装新apk包:在android能正常运行。
用到工具
Android Studio jd-gui-0.3.5.windows dex2jar-0.0.9.15 apktool IDAProv6.8 C32Asm DexFixer Windowssigntool.zip
2、添加花指令
添加花指令:在Android项目添加一个永不能执行到class;如下。也可以通过proguard-android.txt配置文件配置需要保留的class。参考https://developer.android.com/studio/build/shrink-code.html 测试示例: package com.example.oscar.oscarapp; /** * Created by oscar on 2017-11-06. */ import android.support.annotation.Keep; @Keep //混淆代码时保留完整class代码 public class BadCode { public void sCode(){ System.out.println("111111"); System.out.println("111111"); System.out.println("222222"); System.out.println("222222"); } }
3、代码混淆
设置编译时进行代码混淆:修改build.gradle 文件minifyEnabled true;如下 buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
4、 apk打包:通过Android Studio 进行编译打包apk。生成包是经过代码混淆的
5、修改dex十六进制地址
通过IDAProv6.8。反编译apk里的classes.dex文件,找到BadCode class函数执行入口地址。
通过C32Asm工具 使用十六进制打开 classes.dex文件,按快捷键“Ctrl + G”,定位到BadCode class函数执行入口地址 改为“12 01 38 01 03 00 FF FF 00 00 00 00 00 00” 并保存
6、修复DEX:把修改后的dex文件拖入DexFixer工具进行修复
7、 重新签名:把修复后的dex文件覆盖apk原有的dex文件,删除META-INF签名文件,使用签名工具Windowssigntool,对apk重新签名。
8、 反编译新apk包:至此,混淆与加壳都已完成,并可以使用Android手机进行安装。用dex2jar-0.0.9.15反编译会报错。
9、 android安装新apk包:在android能正常运行。
相关文章推荐
- android学习笔记-Android如何防止apk程序被反编译代码混淆
- Android代码混淆防止反编译APK获取源码
- APP安全之代码混淆防止反编译查看真实的头文件
- 详细讲解Android对自己的应用代码进行混淆加密防止反编译
- Android安全防护之旅---带你把Apk混淆成中文语言代码
- Android 代码混淆 防止反编译
- 为Android的apk应用程序文件加壳以防止反编译的教程
- 为Android的apk应用程序文件加壳以防止反编译的教程
- Android apk反编译及AS代码混淆方法
- android apk 防止反编译技术第一篇-加壳技术
- 利用android proguard混淆代码 防止反编译,优化代码
- android apk 防止反编译技术第一篇-加壳技术
- Proguard android代码混淆 防止反编译
- androidSdk2.3的proguard混淆代码工具,防止反编译
- Android APK之代码混淆与反编译
- android apk 防止反编译技术第一篇-加壳技术
- Android安全防护之旅---带你把Apk混淆成中文语言代码
- Proguard android代码混淆 防止反编译
- 防止 apk反编译 jocky-- java混淆代码