在安全测试中,特别是测试app的同学,肯定考虑到反编译,反编译是什么?可能有些人还是不知道,反编译是将app的开发者,把app打包好的apk进行反编,其作用是反编出来能否看到源码,这就关乎安全性的问题咯,你想想啊,源码这么容易被人看到,机密不是泄露了,在这竞争激烈的社会,关乎生死存亡。
所以研发人员打包好的apk前要对代码进行混淆,混淆就是把代码关键内容或变量等进行重命名,所以很多apk反编译出来的代码显示的只是a、b、c、d这样的,目的是让人读不懂代码。
说了那么多,怎么验证研发有没有把代码进行混淆,就是我们反编译出来的源码看看
反编译有两种,一是要看源码,就要反编译Class文件(即APK先解压),需要dex2jar-2.0这个工具;二是要看XML文件,需要直接反编译APK,需要apktool工具。
一、反编译class文件
第一步:事前准备
百度下载两个工具(百度要求下载3个,我这里要两个就够用了)
1.dex2jar-2.0---这个是用来反编译的
2.jd-gui ----这个是用来查看反编译出来的文件的,类似查看文档的辅助工具
注:百度有些教学可能还要叫你多下载”apktool“这个工具,这个工具是解压apk的安装包用的,而我觉得不用下载,直接和普通zip解压包一样,用右键解压即可;
第二步:解压
类似解压zip压缩包一样,用右键直接解压apk,得出一个”classes.dex“这个文件
第三步:开始反编译
1.把”classes.dex“这个文件放到 dex2jar-2.0 工具目录下;
2.cmd进入到dex2jar-2.0工具目录下;
3.输入:d2j-dex2jar.bat classes.dex文件路径(即直接把该文件拖进去即可)----这时成功后会出现:”classes-dex2jar.jar“
第四步:插件反编译出来的文件
1.打开jd-gui工具;
2.把”classes-dex2jar.jar“拖入到jd-gui工具中即可完成反编译全过程;
可以查看这个APK的源码了
最后一步:查看反编译的源码是否混淆,一般有a、b、c、d、ab、ac这样显示的类或者变量都是做了混淆,否则是源码没有混淆。
二、反编译XML文件
事前先说下血泪史,命令敲错了,整个文件夹被删了,而且无法恢复,欲哭无泪!
好了,我们继续,
准备工具apktool,网上自行下载,我下载了两个版本
第一步:先进去到工具目录,cd E:\学习资料\aaaa\软件区\反编译\解压后\apktool_2.1.1
第二步:把APK放到这个目录下,如 按键精灵.apk
第三步:输入命令 java -jar apktool_2.1.1.jar d -f 按键精灵.apk -o D:\软件\APK
第四步:进入D:\软件\APK目录下查看反编译后的内容
进入\res\values\strings.xml,这个用Notepad++打开,如下图,看看是不是要找的内容?
这里注意几个问题:
1.第二步可以省略,可以直接第三步:java -jar apktool_2.1.1.jar d -f D:\软件\APKtest\按键精灵.apk -o D:\软件\APK
2.我们也可以直接跳过第一步,在任何路径下直接:java -jar E:\学习资料\aaaa\软件区\反编译\解压后\apktool_2.1.1\apktool_2.1.1.jar d -f D:\软件\APKtest\按键精灵.apk -o D:\软件\APK
但是命令要了解清楚,不然跟我一样的血泪史,注意路径,路径,路径的区别,重要事情说三遍
这1是工具的路径,你可以cd到该路径下,选择这个工具名称即可
这2是apk的路径,你可以把apk复制到工具根目录下,直接输入APK名即可
这3是反编译后,生成文件输出的路径
(3不要写错,因为生成的路径是会替换你这个路径的所有内容,这就是为什么我的文件被删的原因)
---------------------------------完,不明白的给我留言·······················