android apk如何反编译和如何防止反编译

来源:互联网 发布:linux apache2 php7 编辑:程序博客网 时间:2024/05/21 12:41

android反编译

第一:准备工作:

1:下载反编译工具:apktool dex2jar jd-gui

                   apktool:反编译获取纲xml文件,读取应用程序的资源文件
                  dex2jar:把classes.dex文件转换成jar文件
                 jd-gui.exe:把jar文件转换成java文件

                官方下载网址:

                apktool官方下载网址:http://code.google.com/p/android-apktool/downloads/list

                 dex2jar官方下载网址:http://code.google.com/p/dex2jar/downloads/list

                 jd-gui官方下载网址:http://jd.benow.ca/

2:配置环境变量(为了使用方便,不需要每次都进入apktool和dex2jar的目录)

               如:配置adb(方便使用adb命令) ; 配置apktool (方便使用apktool d file.apk命令) 配置dex2jar(方便使用dex2jar.bat  file.apk)

              下面是我的配置:

              D:\Android\adt-bundle-windows-x86-20131030\adt-bundle-windows-x86-20131030\sdk\platform-tools;D:\Android\apkTool;D:\Android\apkTool\dex2jar;

如本人电脑配置截图:



第二:反编译XML文件

1:反编译:
命令说明:apktool d file.apk
apktool d为反编译命令,其中d代表decode


2:编译打包:(重新把修改过的文件打包为APK格式)
打包命令为:apktool b Ganji(Ganji为刚才的文件夹名称)
重新编译完成后,DJ文件夹内会新增一个dist文件夹,里面的DJ.apk文件就是重新编译好的apk
安装包,签名后即可安装。


第三:反编译classes.dex文件

1:先把Ganji.apk重命名为Ganji.rar,直接解压得到classes.dex,运行下面命令得到classes_dex2jar.jar

dex2jar.bat file.apk



2:把得到的classes_dex2jar.jar,用jd-gui打开就可以啦。


第三:如何防止我们的代码被反编译

由于apk是Android虚拟机加载的,它有一定的规范,加密apk后Dalvik无法识别apk了,完全避免是不可能的,总有人能够在破解你的代码。但是有几种方式来提高被反编译代码的难度。
1:关键代码使用jni调用本地代码,用C或C++编写,因此相对比较难于反编译。
2:代码混淆:混淆代码是不改变代码逻辑的情况下,增加无用代码,或者重命名,使反编译后的源代码难于看懂。
网上开源的java代码混淆工具比较多,一般是用ant的方式来编译的。



0 0