APP的混淆加固及反编译

醉酒当歌 提交于 2020-11-03 00:21:42

  混淆用于让apk被反编译后获取的代码难理解,加固用于让apk难于被反编译。两种操作都是对项目的安全措施,两个操作是不冲突的,可以选择其一,也可以两个操作都做。

混淆:
针对项目代码,代码混淆通常将代码中的各种元素(变量、函数、类名等)改为无意义的名字,使得阅读的人无法通过名称猜测其用途,增大反编译者的理解难度。
虽然代码混淆可以提高反编译的门槛,但是对开发者本身也增大了调试除错的难度。开发人员通常需要保留原始未混淆代码用于调试。
操作时机:项目打包时
操作方法:Android Studio中找到你的项目module的build.gradle,将minifyEnabled设置为true
加固:
针对apk,加固是多维度的安全防护方案,包括反破解、反逆向、防篡改等,可以防止应用被各类常见破解工具逆向,安全性要远大于单纯的代码混淆。
操作时机:项目打包成的apk文件
操作方法:使用360加固或者梆梆助手、 key.store文件取
Android Studio下生成的 此加固工具还可以设置多渠道打包标识

 

 

反编译工具:

     三大神器:apktool  、dex2jar-2.0、jd-gui

一、apktool篇

1、apktool:在文件目录下敲cmd,进入控制台,然后输入 apktool d  XXX.APK (要反编译的apk)

 

 

 

 

 2、会在目录下生成对应apk的文件目录

 

 

 3、此目录下就可以对反编译的文件修改

  可以修改图片和页面布局、通过 AndroidManifest.xml文件找到对应的activity入口

 

 

 

 

 4、将包的内容修改为自己定义的后,重新打包生成新的apk

输入命令:apktool b [ 修改后的文件夹 ] -o [ 输出文件名 ]

 

 

 以上 就通过反编译,修改得出一个新包

 

二、dex2jar-2.0篇

此工具可以将apk解析为jar包

1、将需要反编译的apk后缀修改为zip,然后解压

 

 

 2、将解压后的文件夹,找到classes.dex文件。  在此工具目录下运行 d2j-dex2jar.bat classes.dex 得到classes-dex2jar.jar

 

 

 3、得到jar包

 

 

 4、对jar进行解析源码、    使用到下面的jd-gui工具

 

三、jd-gui篇

双击exe文件,将jar包拖进去就可以解析源码

 以下为反编译的源码 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!