南京邮电大学移动互联网俱乐部

Android反编译入门与反编译防范

作者: 林翔宇

反编译Java代码

参考http://www.oschina.net/question/54100_33457

文中给出下载链接版本较老,其中dex2jar可能会出现java.lang.OutOfMemoryError的异常。请去官网下载两个工具的最新版。

简单来说,用dex2jar把apk文件解压得到的classes.dex转化为jar文件,然后用JD-GUI打开这个Jar文件,查看源码。

反编译apk生成程序的源代码和图片、XML配置、语言资源等文件

同样参考http://www.oschina.net/question/54100_33457

使用apktool https://code.google.com/p/android-apktool/

混淆代码防范反编译

参考 http://blog.csdn.net/sunboy_2050/article/details/6727640

2014.3.4更新,感谢俱乐部苏东生同学在评论区提醒

新版的SDK在创建工程目录的时候已经提供了默认的模板,将project.properties的中“# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉,再做一些定制就可以了。可以参考

http://blog.csdn.net/brokge/article/details/8989312

修改Android项目下default.properties文件,加上一句proguard.config=proguard.cfg。

当然同时目录下要有proguard.cfg文件,可以在android_sdk_path/tools/proguard/目录下找

其实似乎现在Android默认创建工程的时候就已经有了。。看一下default.properties注释就可以了。。。

注意

参考http://my.oschina.net/banxi/blog/55622

  • 当使用了除了android-support-v4这些API的时候,要添加相对应的声明
  • 可以让proguard帮我们忽略Log.d()这些语句

其他参考资料

Comments