android应用是否混淆过和apktool的使用
1.应用是否混淆过?
方案一:
一、 下载dex2jar包,解压
二、把apk包的后缀名改为.zip
三、把apk压解压拿到classes.dex文件,并放到dex2jar所在的目录下
四、运行命令dex2jar.exe classes.dex
五、下载jd-gui
六、把jar包加载到jd.gui,查看源码,源码中的类名,方法名,变量名是否已经改变
方法二:
一、下载apktool工具
二、运行apktool.bat d xxx.apk,把apk反编译成smali
三、如果想要进一步查看源码,可下载smali2java
四、使用smali文件的文件名进行分析,如果存在1个或1个以上的资源类的smali文件,就可以证明该apk没有被混淆过。如下图所示:
备注:是apk的核心代码下的资源文件在混淆后不应该出现上述文件,反之则说明该apk没有进行混淆;使用方案一也是要进入核心代码
2.apktool的使用
下载地址:https://ibotpeaches.github.io/Apktool/install/
备注:网址内是英文,如果小伙伴英文不好,可以使用google浏览器有中英文转换,配置步骤在下载页面可以看到
第一步:检测是否配置成功:在cmd命令行中输入apktool
这是配置成功的界面
第二步:将要反编译的apk存放在一个文件夹中,并在命令行中切换到文件夹路径
接下来为apktool安装框架。
在命令提示符窗口输入
apktool if framework-res.apk 回车
这样框架就会自动安装好。
下面可以正常进行apk的反编译和回编译了。命令如下
apktool d xxx.apk →这是反编译命令。xxx.apk就是在E:/apktool目录下欲反编译的apk文件
apktool b xxx →这是回编译命令。xxx就是反编译后的文件所在文件夹,这个文件夹一般是以之前反编译的文件名为名称,例如我反编译SystemUI.apk,就会在E:/apktool目录下生成一个SystemUI文件夹,回编译命令就可以这样写“apktool b SystemUI”。回编译完成会在SystemUI文件夹生成一个dist文件夹和一个build文件夹。dist文件夹里面存放的就是回编译后不带有签名的apk文件,build文件夹里面还有一个apk文件夹,里面存放的就是回编译后没有打包成apk的文件。