android 反编译APK文件

1、首先我们应当了解的是,对于反编译我们一共需要三个工具,它们分别是:APKTool,dex2jar,和jd-gui。

2、APKTool:用于解析apk的res文件以及AndroidManifest.xml文件。

3、dex2jar:用于把apk解压后生成的classes.dex文件解析为后缀为jar的文件,与下面的jd-gui工具联合使用则可以得到我们的核心Java代码。

4、jd-gui:将上一步所得到的jar文件解析为Java文件,从而得到软件的核心代码。

这就是反编译的核心流程,凡是没有被MD5算法加密,或者未被加固过的APK都可以利用这个方法来进行反编译破解。至于被加密或者加壳的,反编译的难道就大了,反正我是没试过。因此要防止自己的APK不被反编译,泄露源代码,该从什么地方入手就很明显了。

 

接下来就是正题,如何进行反编译了。

环境及工具下载

1、下载网址:https://ibotpeaches.github.io/Apktool/install/

第一个文件如果确实不会下载,新建一个apktool.bat文件,并将下面的代码拷贝到apktool.bat文件中即可

@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul

set java_exe=java.exe

if defined JAVA_HOME (
set java_exe="%JAVA_HOME%\bin\java.exe"
)

rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
    set BASENAME=apktool
    goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion

rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
    rem Directory, rebuild
    set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
    rem APK file, unpack
    set fastCommand=d
)

:load
%java_exe% -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %*

rem Pause when ran non interactively
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pause

2、然后把下载的两个文件都放在同一个文件夹下。同时我们也需要把下载的第二个文件apktool-2.X.X.jar更改成apktool.jar,不然是无法运行这个工具的。同时把需要反编译的apk文件移动到这个文件夹下。此时我们的文件夹下只有(apktool.jar,apktool.bat,XXX.apk)这三个文件。

3、开始反编译

win+R进入DOS界面,进入到刚才存放文件的文件夹下(ps:要是这个操作都不会,就别反编译了^_^)。然后输入以下命令

apktool d 您拿到这个文件夹下的需要反编译的apk文件名.apk

如下图所示(图是借的):

这样我们的反编译过程就完成了。此时文件夹中就会多了一个和apk的文件名相同的文件夹,资源文件就被反编译出来了。

其中的res文件夹是程序当中的所有资源文件,smali文件夹下存放了程序所有的反汇编代码。apktool这个工具主要是用来解析资源res和资源AndroidManifest.xml的,除此之外的,我们还需要另外的工具来解析Java源码,利用下以下两个工具则可以用于解析Java源代码,它们分别是:dex2jar和jd-gui.

1、首先我们把刚刚用于解析的apk文件的后缀改为zip或者rar,然后把它解压就可以了

2、在解压文件中找到一个classes.dex文件,这就是需要解析的源代码文件包。

3、利用dex2jar工具把dex文件解析成后缀为jar的文件

  (1)dex2jar的下载网址是:https://bitbucket.org/pxb1988/dex2jar/downloads/

  (2)下载dex2jar到我们刚刚安装apktool的文件夹下,然后解压,更改解压后的文件名为dex2jar;

  (3)将刚刚所得到的classes.dex文件拷贝到dex2jar文件夹下

  (4)打开命令行cmd模式,利用cd命令将目录切换到dex2jar的文件夹下,同时键入以下代码

d2j-dex2jar.bat classes.dex

此时dex2jar文件夹中,在classes.dex文件后面就会多一个classes_dex2jar.jar文件。

  (5)使用将jd-gui工具将此jar文件打开,即可查看源代码

jd-gui工具下载地址:https://github.com/java-decompiler/jd-gui/releases/

注:如果被混淆过,源代码看起来就有点头疼了,如下图:

附工具包下载地址 工具包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值