浅谈Android中的反编译

写在前面:

众所周知,Android最终可运行在手机上的是以.apk结尾文件,实际上它是一个文件压缩包,也就是说我们可以解压得到其中的文件,但是解压后只能得到其中的图片资源,而一些其他的资源布局和JAVA源代码是无法看到的。但是有的时候我们需要用到反编译的,比如我们看到一很不错的APP想学习一下其中的代码,这时候就可以需要用到反编译的知识了。

反编译所需要的工具:

1、apktool.rar压缩包:它的作用主要是初步实现反编译,用于获取到一些资源文件,例如布局文件的代码,自定义属性、动画属性等一些XML资源文件。

2、dex2jar.zip压缩包:它的作用主要是获取到源码文件,而此时获取到的源码文件还不能直接查看,因为它是一个jar包。

3、jd-gui.zip压缩包:它的作用主要是查看源码文件,可直接查看到源码文件。它可以打开一个jar包文件,并且查看到其中的源码。

反编译的基本步骤:

>

一、利用apktool.rar获取到XML资源文件的代码

1、首先,解压apktool.rar压缩包,并且打开命令行窗口(Windows+R),输入cmd,然后定位到解压后的文件所在的位置:cd C:\Users\zhongqihong\Desktop\Android反编译\apktool,然后按回车。

2、然后,在C:\Users\zhongqihong\Desktop\Android反编译\apktool>,并且把我们需要反编译以.apk文件结尾的应用程序包,放入到解压后的文件夹apktool中。

3、接着在定位好的文件命令对话窗口中,输入C:\Users\zhongqihong\Desktop\Android反编译\apktool>apktool.bat d -f weishike.apk

4、最后、将会产生一个weishike文件夹,里面就有初步反编译的到的资源文件
5、补充:如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b weishike(你编译出来文件夹)便可,效果如下:

6、之后在之前的weishike文件下便可以发现多了2个文件夹:
build
dist(里面存放着打包出来的APK文件)

二、利用dex2jar.zip获取到java源代码

1、先解压weishike.apk文件,然后可以从中得到一个classes.dex文件,将其拷出,放入到刚解压的dex2jar文件夹中

2、然后、并且打开命令行窗口(Windows+R),输入cmd,然后定位到解压后的文件所在的位置:cd C:\Users\zhongqihong\Desktop\Android反编译\dex2jar-0.0.9.15,然后按回车。

4、最后、就会在同目录下产生一个新的jar包,该jar包中就含有我们反编译所需的源代码。

三、利用jd-gui.zip查看java源代码

1、解压jd-gui-0.3.5.windows.zip,然后双击打开jd-gui.exe

2、并把新产生的jar包,放入jd-gui-0.3.5.windows文件夹中,然后在exe应用程序中打开该jar包就可以查看源码了

四、android反编译的一般流程图

写在最后

注意,有时候我们知道如何去反编译,所以我们必须懂得如何去防止别人进行反编译:

解决方法:
2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的。

2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。
Android - proguard混淆器使用,有引用第三方jar包的时候报错:
You may need to specify additional library jars (using ‘-libraryjars’)
处理方法:在proguard.cfg文件顶部加入
-dontwarn com.motorola.**
-keep class com.motorola.* { ;}
说明:-dontwarn和-keep结合参数使用来保持第三方库中的类而不乱,-dontwarn com.motorola.意思是保持com.motorola.这个包里面的所有类和所有方法而不混淆
-keep class com.motorola.* { ;}意思是ProGuard不要警告找不到com.motorola.**这个包里面的类的相关引用。对应包名改成你对应的jar包顶层package

更多相关文章

  1. Android(安卓)NDK Hello + JNI 与 NDK区别
  2. Android开发中使用矢量图
  3. Android分享文件到微信和QQ功能的实现(兼容android 7.0以上的共享
  4. Android热修复之AndFix
  5. 系统总结归纳一下android
  6. app在android studio的构建过程
  7. android的文件操作
  8. 分享几点Android(安卓)开发中的小技巧吧。不知道算不算?
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android resources
  2. TextView中style的应用
  3. Android 解决Handler在运行时加载报空指
  4. Android各版本的SDK Platforms和API Leve
  5. Android旋转屏幕不销毁数据的方法
  6. 你需要知道的Android拍照适配方案
  7. Android 文件存储的简单实现
  8. Android Password Manager
  9. Android之SurfaceView实现视频播放
  10. android 保持屏幕唤醒状态