Android逆向(一)Android逆向工具(一)

    最近一周时间,在学习和研究Android逆向,接下来一段时间,写一系列Android逆向的博客,来总结和记录自己所掌握的知识,也希望为正在学习Android逆向的朋友带来一点帮助。

    首先,简单说一下自己对Android逆向的理解。Android逆向,就是把已经编译好的apk,通过使用一系列的工具,获取到“源代码”。获取到源代码后,我们可以替代和修改其中的一些代码,重新打包,生成新的apk。我们可以借鉴大牛的一些实现方式,也可以拿来干一些“有趣”的事情。当然,作为一名Android开发工程师,我还是不希望自己的app被别人反编译,被改的面目全非。因此,接下来的这一系列博客,仅作为自己的学习笔记吧。

    工欲善其事,必先利其器。想要做好一件事,必须使用好的工具,android逆向也是如此。这篇博客总结三款常用的android逆向工具,通过使用这三款android逆向工具,可以轻松实现反编译获取源码。

一、apktool

    apktool是一款反编译工具。通过使用apktool,可以获取apk源代码(smali代码)。修改smali代后,可以回编译生成新的apk。然后生成签名文件打包签名。apktool具体使用如下:

1.反编译

(1)下载apktool.jar。建议去官网下载最新的jar,官网下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads/。下载最新的版本,apktool_2.4.0.jar,下载完成后命名为akptool。我的apk路径为:D:\ApkReverseTool\apktool.jar

(2)把需要反编译的apk放在某一目录下,例如:F:\testapk\test.apk

(3)打开cmd,进入apktool所在目录:

扫描二维码关注公众号,回复: 5924269 查看本文章

(4)输入命令java -jar apktool.jar d apk路径,例如:

java -jar apktool.jar d F:\testapk\test.apk

默认在apktool所在目录下,生成反编译后的文件夹:

2.回编译

(1)输入命令java -jar apktool.jar b apk反编译后的路径,例如:

java -jar apktool.jar b D:\ApkReverseTool\test

重新编译成apk。新生成的apk默认位置:D:\ApkReverseTool\test\dist

(2)生成keystore。输入如下命令:

keytool -genkey -keystore F:\keystore\test.keystore -alias test -keyalg RSA -validity 10000

输入口令,再次输入口令,接下来输入一系列东西。最后输入Y,确认两次口令,生成test.keystore。

-keystore:生成keystore的路径

-alias:keystor的名字

-keyalg:加密方式

-validity:证书有效天数

(3)签名。输入如下命令:

jarsigner -verbose -keystore F:\keystore\test.keystore -signed jar F:\testapk\test2.apk D:\ApkReverseTool\test\dist\test.apk test

-keystore:keystore路径

-signedjar:签名后生成apk路径

                      回编译后apk路径

                      keystore的名称

二、dex2jar

dex2jar是将classes.dex转jar的工具。apk其实一种压缩文件,把apk修改zip或者rar并且压缩后,可以获取到classes.dex。classes.dex文件我们不能直接打开查看,需要转为jar文件。dex2jar的具体使用如下:

1.下载dex2jar(地址:https://files.cnblogs.com/files/onelikeone/dex2jar-tools-2.1.zip),并解压重命名为dex2jar,我的目录是:D:\ApkReverseTool\dex2jar

2.把需要转jar的apk命名为a.zip或者a.rar,并且解压缩,可以看到classes.dex。

2.将classes.dex复制到d2j-dex2jar.bat文件所在目录

3.打开cmd,进入d2j-dex2jar.bat所在目录。输入命令:d2j-dex2jar.bat classes.dex,理论上可以生成classes-dex2jar.jar。在公司电脑上确实生成了,但是在自己笔记本上面没有生成,报错了。这是因为我在自己笔记本上设置的sdk版本是27,也就是Android N ,我原先下载的dex2jar是dex2jar2.0,dex2jar2.0不支持Android N。因此,后来下载的dex2jar2.1,此问题解决:

 

三、jd-gui

jd-gui是查看jar文件的工具,具体使用如下:

1.下载jd-gui。官网下载地址:http://java-decompiler.github.io/#jd-gui-download。下载第一个或者第四个都可以。

2.双击打开jd-gui

3.拖动classes-dex2jar.jar到jd-gui,打开MainActivity.class,可以看到源代码:

四、Apk Analyzer

    Android Studio2.2版本之后,增加了Apk Analyzer功能,具体使用如下:

1、直接拖动需要反编译的apk到AndroidStudio:

   

2、在需要查看源代码的文件上右键,选择show bytecode,即可看到smali代码:

    最后,总结一下。其实,apktool这三款工具,用起来可以说是非常简单了。掌握了这三款工具的使用,基本可以破解绝大多数没有“加固”的apk。Android Studio2.2自带的Apk Analyzer可以一键拖动反编译apk,可以查看smali源代码,但是文件是只读的,不支持修改。在下一篇博客里,将会介绍一款功能强大的新的反编译工具。

猜你喜欢

转载自blog.csdn.net/qq_21154101/article/details/88650920
今日推荐