关于apk文件的反编译与防反编译

         对于一只程序猿来说,有时候看到一个很不错的应用软件恨不得马上把它解体,看看是怎么写出来的。今天在写一个手电筒应用小程序查资料时,在360手机助手里看到一个很不错的手电筒的小程序,然后很想看看是它怎么写出来的,学习下前辈的经验。于是就这样开始了今天对于反编译的研究。在网上查看了一些资料,然后自己进行了下总结,顺便和大家分享下。反编译的详细过程如下:
1.下载工具
        需要如下四个反编译工具:
dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot  
        下载地址:http://code.google.com/p/innlab/   页面的Downloads下可以找到对应的工具

         

 2.解压apk文件
        apk格式的文件其实也是一种压缩文件,利用一般的解压工具可以直接进行解压。如:

  解压前:解压后:

3.反编译.dex文件
        
解压下载的dex2.jar,把解压后的文件夹放到系统盘根目录下并把这个目录加到系统path变量中,就可以直接用dex2jar.bat转换dex文件
     配置系统path变量:右击我的电脑->属性->高级->环境变量,然后在系统的path变量下加;xxx。xxx表示dex2.jar的目录。
        在dos下跳到dex2.jar的解压目录下,然后输入如下命令:
dex2jar.bat classes.dex。
        如:

这时你会发现之前的dex2.jar 解压目录下多了一个classes_dex2jar.jar 的文件。

 4.反编译.jar文件
     
打开压缩文件JD-GUI,运行jd-gui.exe,打开之前生成生成的.jar文件,就可看到源代码了。

5.反编译xml文件
        通过以上步骤虽然说可以看到程序的源代码,但当你打开其中的xml文件想看看程序是如何布局的时候,你会发现仍然是乱码,所以这时我们需要反编译xml文件。
     将下载的 
apktool、apktool-install-windows-r05-ibot 解压到同一个文件夹中,使之可以看到以下3个文件:


 同样配置好该目录的path变量,如第三步。打开dos跳到该目录下,输入:apktool d C:\a.apk C:\a。注意apk文件名或目录名最好不要是中文并且不能带空格,之前我就是因为这样出现了坑爹的错误,然后将手电筒 2.0.1.apk改名为a.apk错误才解决。
解释:c:\a.apk为要反编译的文件,c:\a表示反编译后的存放的目录,若存在该目录可以输入apktool d -f C:\a.apk C:\a进行覆盖。


 进行了该操作之后我们就可以看到c:\a下了有反编译后的文件,打开xml文件发现也不再是乱码。

 好了,通过以上一些步骤就可以自己对原作者的代码进行肆意修改了。 
            
            有时候某些作者为了防止被反编译,使用了混淆工具,会让代码让人很难以看懂,但是一般花点时间还是能看懂大概的。
            其实使用混淆比较简单,只要在exlipse的配置文件中加入一句代码就ok:
proguard.config=proguard.cfg。

 如图:

(这篇文章是我以前在自己空间写的,现在放在csdn博客,分享给大家,希望能给需要的人带来帮助!有不当的地方也请大家指正,谢谢!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值