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

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

目录

一、前言

二、apktool

1.反编译

2.回编译

三、dex2jar

四、jd-gui

五、Apk Analyzer


一、前言

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

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

二、apktool

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

1.反编译

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

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

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

(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。官网下载地址:Java Decompiler。下载第一个或者第四个都可以。

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源代码,但是文件是只读的,不支持修改。在下一篇博客里,将会介绍一款功能强大的新的反编译工具。

以下是一些常用的Android逆向分析工具,它们可以用于反编译、调试、内存分析、Hook等方面: 1. jadx:一款开源的Java反编译工具,可以将Android应用程序的APK文件反编译为Java源代码,方便进行分析和修改。 2. APKTool:一款开源的反编译和重新打包工具,可以将Android应用程序的APK文件解压为资源文件和代码文件,方便进行修改和重新打包。 3. Dex2jar:一款用于将Android应用程序的DEX文件转换为JAR文件的工具,可以用于反编译和分析Android应用程序。 4. Frida:一款跨平台的动态插桩工具,可以用于修改应用程序的行为和数据,具有强大的Hook和脚本化功能。 5. Xposed:一款基于Frida的Android插件框架,可以用于Hook应用程序的Java层和Native层代码,实现各种功能。 6. Burp Suite:一款流行的渗透测试工具,可以用于拦截和修改Android应用程序的网络请求和响应,进行漏洞挖掘和安全测试。 7. JD-GUI:一款Java反编译工具,可以将Android应用程序的APK文件反编译为Java源代码,方便进行分析和修改。 8. Android Debug Bridge (ADB):一个调试工具,可以用于与Android设备建立连接,进行调试、文件传输、进程管理等操作。 9. Android Studio:一款集成开发环境,可以用于开发、调试、构建和打包Android应用程序,具有强大的调试和分析功能。 当然,这里列举的只是一些常用的Android逆向分析工具,还有很多其他的工具和库,如IDA Pro、Ghidra、Radare2、JEB等,都可以用于Android逆向分析和漏洞挖掘。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个玩游戏的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值