讲解Android逆向工具的配置和使用
今天给大家讲解一下逆向工程中所用到的相关工具。主要讲解以下工具的配置和使用:dex2jar,jdgui.exe,apktool,Android Killer。下面我们就针对以上经常使用到的工具一一进行讲解。首先我们先讲解dex2jar和jdgui.exe。
说到dex2jar就要提到jdgui.exe,这就是两个兄弟一样,在平常的逆向工程中,经常需要他们两个配合使用。dex2jar的功能主要是把classes.dex文件打包成jar文件,jar文件中主要包含的是根据smali代码翻译成的java代码,然后打包成的jar文件就可以在jdgui.exe中打开,以方便开发者进行相关的逆向分析。
dex2jar的下载地址:(https://sourceforge.net/projects/dex2jar/),点击链接进入官网下载,如图所示:
点击绿色背景的“Download”按钮跳转到下载页面:
等待几秒后将会开启下载:
下载的文件名为“dex2jar-2.0.zip”,点击下载,等待下载完成。
下载完成后,在D盘中新建文件夹,或者别的盘也行,文件夹名字随意, 将压缩包中的dex2jar-2.0文件解压到新建的文件夹内。dex2jar的使用不需要相关的配置,只需要解压就好了。下面我们开始下载jdgui.exe:
jdgui.exe的下载地址:(http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml),点击链接进入下载页面:
点击:“download”,进入下面的选择页面:
点击第一条:“Softpe dia Secure Download(US)” ,进入到下载页面,等待几分钟将会开启下载:
下载的文件名为:“jd-gui-windows-1.4.0.zip” ,下载完成后,打开压缩包:
将其中的jd-gui-windows-1.4.0文件夹解压到刚才新建的文件夹内,和dex2jar文件放在同一目录。jdgui.exe的使用同样不需要进行相关的配置,直接运行jd-gui-windows-1.4.0文件夹内的jd-gui.exe即可。
下面讲解具体的使用流程:
首先针对需要进行反编译的Apk文件,修改后缀名“.apk”为“.zip”,然后对Apk文件进行解压处理。这里演示的是百度手机助手:
我们看到压缩包里有一个“classes.dex”文件,将这个文件解压至我们dex2jar-2.0文件夹内,如图所示:
注意,这里一定要和d2j-jar2dex.bat在同一目录下,因为具体的打包jar工具就是“d2j-jar2dex.bat” 。
下面打开cmd命令提示符,进入到dex2jar-2.0文件夹目录下,然后输入命令:
> d2j-dex2jar classes.dex
开始执行反编译和打包操作:
打包完成后将会在 dex2jar-2.0文件夹内生成一个jar文件,名字为“classes-dex2jar.jar”,如图所示:
dex2jar的工作就到此结束了,下面就轮到jdgui.exe登场了!我们首先打开 jd-gui-windows-1.4.0文件夹:
直接点击运行“jd-gui.exe”文件,运行出现下面界面:
点击“文件夹”图标,弹出选择路径,这里选择的路径就是刚才生成的jar文件所在的路径,如图所示:
点击打开,你就可以看到翻译过来的java代码了,如图所示:
这里还要说一下,通过dex2jar反编译Apk文件,将不会生成相关的smali代码,它这是把生成的smali代码有翻译打包成了jar文件;jdgui.exe只是一个展示的作用,只提供java代码的展示,你将不能对代码进行删减,添加或者修改等操作。
下面我们讲解Apktool工具。同过上面dex2jar的学习,我们知道了 dex2jar并不会生成smali代码,那么如果我们需要看smali代码怎么办呢?别急,这就是我要将的Apktool的功能,它专门负责把Apk文件反编译成smali文件!下面就让我们赶快去了解它吧~
Apktool下载:首先我们需要填写apktool.bat文件,打开链接:(https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat),如图所示:
在桌面上新建一个txt文件,讲这段代码复制粘贴进去,如图所示:
然后保存文件,修改文件名为“apktool.bat”。
下面我们下载apktool.jar文件:(https://ibotpeaches.github.io/Apktool/) ,打开链接,向下滑动页面到如图所示位置:
我们下载最新的版本:Apktool v2.3.3。点击“Download”开始下载,如图所示:
下载的文件是“apktool_2.3.3.jar”,点击下载。
下载完成后,修改文件名为“apktool.jar”,连同刚才我们创建的“apktool.bat”文件,一同放入C盘的Windows目录下:如图所示
下面我们来测试一下Apktool是否正常,打开cmd命令提示否,直接输入命令:apktool,如下图所示:
出现上图就代表着成功了。
下面讲解Apktool具体的使用方法,使用很简单,Apktool并没有图形化界面,所以所有的操作都只能通过cmd命令提示符来完成。在cmd中进入你需要反编译的Apk文件的目录下,执行命令:
> apktool d xxx.apk
xxx.apk是你想要反编译的apk文件,比如,博主这里需要反编译QQ,QQ的apk文件是QQ_884.apk,我把它放在了D盘中的AndroidDecompiling文件夹内,我首先打开cmd,cd进入到QQ_884.apk文件所处的目录下,然后执行命令:apktool d QQ_884.apk,接下来就会进行反编译QQ的Apk文件工作,然后等待操作完成,如下图所示:
这里说明一下,具体反编译所用的时长和Apk文件的大小有关,文件越大反编译所需要的时间越长,QQ_884.apk文件还是蛮大的,这里反编译它花费了有一分多钟的时间。反编译完成后,会在Apk文件所处的目录下生成一个与Apk文件同名的文件夹,这里博主反编译的是QQ_884.apk文件,那么也就在QQ_884.apk文件的同目录中生成了一个名字为“QQ_884”的文件夹,我们看一下,如图所示:
这个新生成的文件夹内包含的就是反编译出来所有的Smali文件,还有这个Apk文件所包含的相应的资源,xml文件,图片,文本等等,这里我们点开QQ_884文件夹看一下:
res文件夹内都是资源信息,我们还看到了Apk的核心配置文件,剩余的是Smali文件,反编译的效果还是不错的。
Apktool不仅仅可以对Apk进行反编译,它还可以对反编译后的Apk进行重新打包处理,这个也是它最主要的一个功能!例如,你对其中的某处smali代码做出了修改,想看看修改后的运行效果,你就需要对修改后的Smali代码重新打成一个Apk,放进你的手机内运行一下。具体Apktool打包命令为:
> apktool.bat b xxxx
xxx是反编译生成的那个文件夹,例如博主这里重新打包QQ文件,就执行命令:apktool.bat b QQ_884
这里说明一下,使用Apktool重新打包生成的Apk文件是无法直接运行的,你还需要对其进行重新签名,签名后才可以正常运行。Apktool只能是重新打个包,具体签名的操作还需要另请高明,使用签名工具来为它签名。这里也算是Apktool的一个遗憾之处吧。签名工具这里不再多说,网上有很多的例子。
还有一点特别提醒,你在使用Apktool重新打包的时候,需要注意重新打包的那个文件必须是由Apktool反编译生成的,否则将会报错失败,如图所示:
这里的报错意思是找不到apktool.yml文件。在使用Apktool反编译时,Apktool会在反编译生成的文件夹内放入Apktool.yml文件,以作为相应的标识,在重新打包的时候检测文件内是否存在Apktool.yml文件,不存在该文件说明这个文件不是由Apktool反编译生成的,那么就停止打包工作报错。
下面我们开始学习AndroidKiller工具,这个是一大神器,集齐反编译,翻译,打包,签名于一体,具有良好的操作界面,从它的名字上就可以看出来,这是真正的Android大杀器。实质上AndroidKill工具是把上面我们讲到的dex2jar,jdgui.exe,Apktool,还有adb进行了包装融合处理,使得我们可以更便捷的使用它们的功能。那么就让我们赶快学习它是如何使用的吧!
首先我们还需要去下载:(https://down.52pojie.cn/Tools/Android_Tools/AndroidKiller_v1.3.1.zip)
上面的链接来自吾爱破解的爱盘,点击链接即可下载,如图所示:
这里我们下载的版本为“AndroidKiller_v1.3.1”,需要告诉一声,AndroidKiller的作者目前已停止更新了AndroidKiller的版本,这是普遍使用的一版。下载完成后,打开压缩包:
在D盘内新建一个文件夹,名字为:AndroidKiller,将我们下载的压缩包解压至AndroidKiller目录下。AndroidKiller.exe 就是软件的启动程序,我们点击它打开AndroidKiller界面,这里会弹出一个警告框,告诉你没有检测到JDK路径,因为我们还没有在AndroidKiller内配置JDK,所以会弹出来。不用管它,点击确定,打开后如下图所示:
首先第一步我们就要先去配置JDK路径,点击“配置”,选择java,如图所示:
我们在这里选择你JDK的安装路径,路径选择正确,会在下面展示JDK的版本信息,然后点击确定。例如这里:
配置里面我们就只需要配置JDK路径即可,剩下的不要动,按照默认的形式。下面我们还需要配置一个地方:配置Apktool。这个是重中之重。我们点击最上栏中的“Android”选项,如图所示:
点击“功能”区域中的“APKTOOL管理器”,打开后如图所示:
在这里我们需要添加Apktool工具,点击最右边的“添加”,如图所示:
名称是随意填写,这里我们填写“apktool”,路径选择的是“apktool.jar” 的路径,参数不需要写东西。还有最后一步别忘了!
看见最下面的“选择默认的Apktool版本”,点击下拉列表:
这里选择我们刚才添加的“apktool”,然后关闭即可。这样就完成了AndroidKiller所有的配置。
下面我们学习使用方法。点击最上栏中的"主页",点击“打开”,在这里选择你需要反编译的Apk文件,如图所示:
点击打开,开始进行反编译操作,所需要的时间视Apk文件大小而定,静静等待几分钟,等待一切操作全部完成,如图所示:
我们可以很清除的看到,这个App的图标,标签,还有它的包名,以及入口主活动,一目了然。 我们翻看一下这里的目录:
这里把分割成四个部分,第一个部分为Activity,第二为Receiver,第三为Service,第四为涉及到的权限。真的很方便,很清晰有木有!我们可以随意点开一个Activity中的Smali代码:
这里展示的都是Smali代码,如果你想看对应的java代码,就点击那个java标志的小图标“”,就会展示出相应的Java代码,如图所示:
你会感觉很熟悉,咦,这不就是jdgui.exe的图标吗!没错,这里就是jdgui.exe,还记得刚才我说过的么,AndroidKiller正是集成了上面我们讲到的dex2jar,jdgui.exe,Apktool三者的功能。
使用AndroidKiller还是很简单,点击最上栏中的“Android”,点击最左边的“编译”,就可以一键打包自动签名,生成一个全新的Apk啦!这里没有修改代码,就不进行演示了。
页:
[1]