您的位置:首页 > 移动开发 > Android开发

Android 如何反编绎APK文件&如何防止我们的代码被反编译

2014-04-11 18:58 288 查看

如何反编绎APK文件

安装ApkTool工具,该工具可以解码得到资源文件,但不能得到Java源文件。

安装环境:需要安装JRE1.6

1> 到http://code.google.com/p/android-apktool/下载apktool1.3.2.tar.bz2 和apktool-install-windows-2.2_r01-3.tar.bz2 文件。解压两个文件,然后把解压后的文件放在一起,如:c:\apktool

2> 在系统变量PATH中添加进aapt.exe,如:;c:\apktool\aapt.exe

3> 在DOS窗口下进入apktool.jar所在目录。执行DOS命令:apktool d -s c:\soft\xxx.apk c:\soft\source。

命令格式:apktool d [opts] <file.apk> [dir]  中的d代表解码,[opts]代表选项,-s选项代表不解码源文件。

Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具Dex2Jar,该工具可以把dex文件转换成jar文件。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件

下载地址:http://code.google.com/p/dex2jar/。

 1> 把APK安装包中的classes.dex解压到某个目录下,如:c:\soft

 2> 在DOS窗口下进入dex2jar.bat所在目录,执行DOS命令:dex2jar.bat c:\soft\source\classes.dex c:\soft\source,命令生成classes.dex.dex2jar.jar文件。

安装jd-gui工具,该工具可以把jar文件反编译成Java源文件

下载地址:http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip。

运行该软件,直接打开classes.dex.dex2jar.jar文件即可看到java源代码。

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

由于apk是Android虚拟机加载的,它有一定的规范,加密apk后Dalvik无法

识别apk了。完全避免是不可能的,总有人能够破解你的代码。但是有几种

方式来提高被反编译取代码的难度。

1 关键代码使用jni调用本地代码,用c或者c++编写,因此相对比较难于反

   编译

2 混淆java代码。混淆是不改变代码逻辑的情况下,增加无用代码,或者重

   命名,使反编译后的源代码难于看懂。

   网上开源的java代码混淆工具较多,一般是用ant的方式来编译的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 反编译 加密