Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作

有个一周没有写博客了,最近一直都在忙于公司的业务开发,没有多少时间来和大家分享技术,好不容易逮到一个时间,抽空写一下博客,那么就让我们赶快开始今天的学习把!

上面的博客中,我们学习了smali语法的相关知识,以及动态调试smali代码的操作,不知道你是否已经学会了,还不是很熟悉的小伙伴希望你加把劲赶上来,毕竟以后还会继续给大家讲解逆向分析,跟上步伐不要掉队哦。

今天给大家讲解一下逆向工程中所用到的相关工具。主要讲解以下工具的配置和使用:dex2jar,jdgui.exe,apktool,Android Killer。下面我们就针对以上经常使用到的工具一一进行讲解。

首先我们先讲解dex2jar和jdgui.exe。

说到dex2jar就要提到jdgui.exe,这就是两个兄弟一样,在平常的逆向工程中,经常需要他们两个配合使用。dex2jar的功能主要是把classes.dex文件打包成jar文件,jar文件中主要包含的是根据smali代码翻译成的java代码,然后打包成的jar文件就可以在jdgui.exe中打开,以方便开发者进行相关的逆向分析。

dex2jar的下载地址:dex2jar下载,点击链接进入官网下载,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第1张图片

点击绿色背景的“Download”按钮跳转到下载页面:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第2张图片

等待几秒后将会开启下载:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第3张图片

下载的文件名为“dex2jar-2.0.zip”,点击下载,等待下载完成。

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第4张图片

下载完成后,在D盘中新建文件夹,或者别的盘也行,文件夹名字随意, 将压缩包中的dex2jar-2.0文件解压到新建的文件夹内。dex2jar的使用不需要相关的配置,只需要解压就好了。下面我们开始下载jdgui.exe:

jdgui.exe的下载地址:jdgui.exe下载,点击链接进入下载页面:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第5张图片

点击:“download”,进入下面的选择页面:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第6张图片

点击第一条:“Softpe dia Secure Download(US)” ,进入到下载页面,等待几分钟将会开启下载:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第7张图片

下载的文件名为:“jd-gui-windows-1.4.0.zip” ,下载完成后,打开压缩包:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第8张图片

 将其中的jd-gui-windows-1.4.0文件夹解压到刚才新建的文件夹内,和dex2jar文件放在同一目录。jdgui.exe的使用同样不需要进行相关的配置,直接运行jd-gui-windows-1.4.0文件夹内的jd-gui.exe即可。

下面讲解具体的使用流程:

首先针对需要进行反编译的Apk文件,修改后缀名“.apk”为“.zip”,然后对Apk文件进行解压处理。博主这里演示的是百度手机助手:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第9张图片

 我们看到压缩包里有一个“classes.dex”文件,将这个文件解压至我们dex2jar-2.0文件夹内,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第10张图片

注意,这里一定要和d2j-jar2dex.bat在同一目录下,因为具体的打包jar工具就是“d2j-jar2dex.bat” 。

下面打开cmd命令提示符,进入到dex2jar-2.0文件夹目录下,然后输入命令:

d2j-dex2jar classes.dex

开始执行反编译和打包操作:

 Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第11张图片

打包完成后将会在 dex2jar-2.0文件夹内生成一个jar文件,名字为“classes-dex2jar.jar”,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第12张图片

dex2jar的工作就到此结束了,下面就轮到jdgui.exe登场了!我们首先打开 jd-gui-windows-1.4.0文件夹:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第13张图片

直接点击运行“jd-gui.exe”文件,运行出现下面界面:

 Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第14张图片

点击“文件夹”图标,弹出选择路径,这里选择的路径就是刚才生成的jar文件所在的路径,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第15张图片

 点击打开,你就可以看到翻译过来的java代码了,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第16张图片

这里还要说一下,通过dex2jar反编译Apk文件,将不会生成相关的smali代码,它这是把生成的smali代码有翻译打包成了jar文件;jdgui.exe只是一个展示的作用,只提供java代码的展示,你将不能对代码进行删减,添加或者修改等操作。

下面我们讲解Apktool工具。同过上面dex2jar的学习,我们知道了 dex2jar并不会生成smali代码,那么如果我们需要看smali代码怎么办呢?别急,这就是我要将的Apktool的功能,它专门负责把Apk文件反编译成smali文件!下面就让我们赶快去了解它吧~

Apktool下载:首先我们需要填写apktool.bat文件,打开链接:apktool.bat文件内容,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第17张图片

在桌面上新建一个txt文件,讲这段代码复制粘贴进去,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第18张图片 然后保存文件,修改文件名为“apktool.bat”。

下面我们下载apktool.jar文件:Apktool官网 ,打开链接,向下滑动页面到如图所示位置:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第19张图片

 我们下载最新的版本:Apktool v2.3.3。点击“Download”开始下载,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第20张图片

下载的文件是“apktool_2.3.3.jar”,点击下载。

下载完成后,修改文件名为“apktool.jar”,连同刚才我们创建的“apktool.bat”文件,一同放入C盘的Windows目录下:如图所示

 Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第21张图片

下面我们来测试一下Apktool是否正常,打开cmd命令提示否,直接输入命令:apktool,如下图所示:

 Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第22张图片

出现上图就代表着成功了。

下面讲解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文件工作,然后等待操作完成,如下图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第23张图片

这里说明一下,具体反编译所用的时长和Apk文件的大小有关,文件越大反编译所需要的时间越长,QQ_884.apk文件还是蛮大的,这里反编译它花费了有一分多钟的时间。反编译完成后,会在Apk文件所处的目录下生成一个与Apk文件同名的文件夹,这里博主反编译的是QQ_884.apk文件,那么也就在QQ_884.apk文件的同目录中生成了一个名字为“QQ_884”的文件夹,我们看一下,如图所示:

 Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第24张图片

这个新生成的文件夹内包含的就是反编译出来所有的Smali文件,还有这个Apk文件所包含的相应的资源,xml文件,图片,文本等等,这里我们点开QQ_884文件夹看一下:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第25张图片

 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反编译生成的,否则将会报错失败,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第26张图片

这里的报错意思是找不到apktool.yml文件。在使用Apktool反编译时,Apktool会在反编译生成的文件夹内放入Apktool.yml文件,以作为相应的标识,在重新打包的时候检测文件内是否存在Apktool.yml文件,不存在该文件说明这个文件不是由Apktool反编译生成的,那么就停止打包工作报错。 

下面我们开始学习AndroidKiller工具,这个是一大神器,集齐反编译,翻译,打包,签名于一体,具有良好的操作界面,从它的名字上就可以看出来,这是真正的Android大杀器。实质上AndroidKill工具是把上面我们讲到的dex2jar,jdgui.exe,Apktool,还有adb进行了包装融合处理,使得我们可以更便捷的使用它们的功能。那么就让我们赶快学习它是如何使用的吧!

首先我们还需要去下载:AndroidKiller下载

上面的链接来自吾爱破解的爱盘,点击链接即可下载,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第27张图片

这里我们下载的版本为“AndroidKiller_v1.3.1”,需要告诉一声,AndroidKiller的作者目前已停止更新了AndroidKiller的版本,这是普遍使用的一版。下载完成后,打开压缩包:

 Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第28张图片

在D盘内新建一个文件夹,名字为:AndroidKiller,将我们下载的压缩包解压至AndroidKiller目录下。AndroidKiller.exe 就是软件的启动程序,我们点击它打开AndroidKiller界面,这里会弹出一个警告框,告诉你没有检测到JDK路径,因为我们还没有在AndroidKiller内配置JDK,所以会弹出来。不用管它,点击确定,打开后如下图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第29张图片

 首先第一步我们就要先去配置JDK路径,点击“配置”,选择java,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第30张图片

我们在这里选择你JDK的安装路径,路径选择正确,会在下面展示JDK的版本信息,然后点击确定。例如博主这里:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第31张图片

 配置里面我们就只需要配置JDK路径即可,剩下的不要动,按照默认的形式。下面我们还需要配置一个地方:配置Apktool。这个是重中之重。我们点击最上栏中的“Android”选项,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第32张图片

点击“功能”区域中的“APKTOOL管理器”,打开后如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第33张图片

在这里我们需要添加Apktool工具,点击最右边的“添加”,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第34张图片

名称是随意填写,这里我们填写“apktool”,路径选择的是“apktool.jar” 的路径,参数不需要写东西。还有最后一步别忘了!

看见最下面的“选择默认的Apktool版本”,点击下拉列表:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第35张图片

这里选择我们刚才添加的“apktool”,然后关闭即可。这样就完成了AndroidKiller所有的配置。

下面我们学习使用方法。点击最上栏中的"主页",点击“打开”,在这里选择你需要反编译的Apk文件,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第36张图片

 点击打开,开始进行反编译操作,所需要的时间视Apk文件大小而定,静静等待几分钟,等待一切操作全部完成,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第37张图片

我们可以很清除的看到,这个App的图标,标签,还有它的包名,以及入口主活动,一目了然。 我们翻看一下这里的目录:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第38张图片

这里把分割成四个部分,第一个部分为Activity,第二为Receiver,第三为Service,第四为涉及到的权限。真的很方便,很清晰有木有!我们可以随意点开一个Activity中的Smali代码:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第39张图片 这里展示的都是Smali代码,如果你想看对应的java代码,就点击那个java标志的小图标“”,就会展示出相应的Java代码,如图所示:

Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作_第40张图片

你会感觉很熟悉,咦,这不就是jdgui.exe的图标吗!没错,这里就是jdgui.exe,还记得刚才我说过的么,AndroidKiller正是集成了上面我们讲到的dex2jar,jdgui.exe,Apktool三者的功能。

使用AndroidKiller还是很简单,点击最上栏中的“Android”,点击最左边的“编译”,就可以一键打包自动签名,生成一个全新的Apk啦!这里博主没有修改代码,就不进行演示了。

好了,一下子讲了这么多,下面小伙伴们就自己好好练习一下吧,接下来我们就要开始正式的App逆向分析实战了,这些工具能够助我们一臂之力,提高我们的效率。在接下来的实战中,我会具体的使用这些工具,给大家讲解该如何进行逆向分析,希望大家要好好学习昂!

再见!如果引用本文请标明出处,谢谢!

你可能感兴趣的:(Android逆向工程:讲解相关逆向工具的配置和使用,带你快速熟悉逆向操作)