关于反编译的那些事

在Android开发中,有的时候,我们想要参考有名的app的设计,需要看下源码结构什么的,这个时候,反编译是很有必要的。我之前也在网上搜了一下关于如何反编译的使用,在使用方面,因为都是在网上搜索答案的,结果是有时候去反编译别人家的app的时候,会出错,要么是反编译不成功,要么就是忘记改怎么使用了。这会有点时间,就出来整理一下,方便大家,也为了避免自己反编译的时候,忘记改怎么操作了。
首先我们要下载反编译apk的工具,这里需要用到3个工具:
1,apktool 2,dex2jar 3,jd_jui
(这里说一下,本人写博客不是很久,所以可能会有点low,一些功能链接也没有做,如果想下这三个工具,可以自行下载,或者点击我文章下面给出的比我叙述更好的博客链接)
这里讲一下这三个工具的用途吧,第一个apktool,是用来获取项目中的资源文件的,就是项目中的res文件和其他的资源文件。第二个dex2jar是用来将apk反编译出来java源码(顾名思义dex2jar就是将classes.dex转成jar文件),第三个jd_jui,不用说这个肯定是用来查看jar源码的。有一点大家肯定也清楚,我们这里反编译apk只是仅限于没有做过混淆或者加密的apk,并且还原率也不可能是百分之一百的情况。我们工具下好之后,就是开始我们的反编译的重点了。我们先去下载我们想去反编译的apk,开始进行反编译。
从下载的apktool解压之后,把用到的apk放到apktool文件夹下,打开命令行,定位到当前文件夹下,然后执行”’apktool.bat d -f xxx.apk xxx ”’大致意思就是把apk中的资源文件放到某个文件夹下(后面的xxx自己随便命名)这个命令行可能已经过时了,有可能会有执行命令行出错,如果遇到下面的错误,就要用到新的命令行
apktool d [-s] -f xxx.apk -o xxx
错误代码:
*1.Input file was not found or was not readable.
2.Destination directory (C:\Users\user\a) already exists. Use -f switch if you want to overwrite it.**
有时候,你可能也会遇到这样的错误:Exception in thread “main“brut.androlib.AndrolibException: Could not decode ars c fil……….
这个是因为你的apktool是因为你下的版本过低,去官网更新个最新版本就好了。
如果,你执行代码行没有错误的话,在你的apktool文件夹下会生成xxx的文件夹,里面就是apk中所使用的资源文件了(里面有个重要的文件classes.dex)。其实这个资源文件的获得,有个更简单的,只要把apk的后缀名改成zip直接解压就可以得到资源文件了,也能拿到classes.dex。
我们拿到classes.dex之后,就用到第二个工具了dex2jar,把classes.dex放到dex2jar所在的文件夹下。同样也要使用命令行定位到dex2jar所在的文件夹下,执行命令dex2jar.bat classes.dex,如果出现
这里写图片描述
这就表示我们的jar文件已经生成了,你可以在你问价夹下会有个classes_dex2jar.jar文件。这个时候,我们的第二步也完成了。
第三步,就是看jar源码了,用jd_jui工具,在你解压的jd_jui问价夹下有一个jd-gui.exe直接双击打开,选择你刚刚生成的jar文件,如果这个apk没有进行混淆加密的话,你这个时候,就可以清晰的看到这个apk的代码结构,直接查看源码了。
我们的反编译工作已经搞完了,本人的技术也不是太好,博客也写也就那么回事,如果大家能通过我写的博客解决反编译的问题,是我的荣幸,如果没有解决,可以提一下意见,或者大骂一句垃圾,再重新找其他相关问题解决的资料。而我这里,只是为了整理我的记忆,不再出现这方面的问题不知所措。
下面是我查找的资料,希望对大家有帮助:
http://blog.csdn.net/vipzjyno1/article/details/21039349/
http://blog.csdn.net/xia09222826/article/details/37909421
谢谢!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值