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

Android逆向(一)Android逆向工具(一)最近一周时间 在学习和研究 Android 逆向 接下来一段时间 写一系列 Android 逆向的博客 来总结和记录自己所掌握的知识 也希望为正在学习 Android 逆向的朋友带来一点帮助 首先 简单说一下自己对 Android 逆向的理解 Android 逆向 就是把已经编译好的 apk 通过使用一系列的工具 获取到 源代码 获取到源代码后 我们可以替代和修改其中的一些代码 重新打包 生成新

    最近一周时间,在学习和研究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,官网下载地址:iBotPeaches / Apktool / Downloads — Bitbucket。下载最新的版本,apktool_2.4.0.jar,下载完成后命名为akptool。我的apk路径为:D:\ApkReverseTool\apktool.jar

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

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

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

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

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

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

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

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

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

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。

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

-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的名称

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

二、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。

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

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,此问题解决:

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

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

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

三、jd-gui

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

1.下载jd-gui。官网下载地址:Java Decompiler。下载第一个或者第四个都可以。

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

2.双击打开jd-gui

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

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

四、Apk Analyzer

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200409.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:54
下一篇 2026年3月20日 上午10:54


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号