Android反编译工具的使用(保姆级教程)

Android反编译工具的使用(保姆级教程)

网上关于Android反编译的文章很多,但是好多都比较杂,就打算自己写一下,顺便也能加深一下印象。

一、常用反编译文件的介绍

apktool

apktool也算是一个老牌的反编译软件了,可以提取出apk中的源代码,图片,XML配置,还有语言的资源,这个软件是没有gui页面的所以需要你利用命令行进行使用,也正是这个原因,我们可以很容易的将其放到Linux服务器上,然后进行自动的反编译并进行恶意性分析的操作。

官网:https://ibotpeaches.github.io/Apktool/

dex2jar

这个工具的主要功能是将dex文件转化为包含class文件的jar文件。至于dex文件,这个其实就是Android系统的可执行文件,包含应用操作的全部指令和运行时的数据,当Java编译成class文件后,我们以通过dx工具将class文件整合成一个dex文件,目的是让文件结构更加紧凑,大小更小,dex 文件可以分为3个模块,头文件、索引区、数据区(有点熟悉是不是)。

github网页:https://github.com/pxb1988/dex2jar

JD-GUI

相比于上面的两个反编译文件,JD-GUI的有点就是拥有GUI界面,使用起来会比较的方便。JD-GUI的主要功能是将class的jar包反编译成.java文件。可以和上面的dex2jar文件合起来使用。

github网页:https://github.com/java-decompiler/jd-gui

二、安装工具

apktool的安装

apktool的安装有点复杂,安装apktool的话需要java 1.8以上

首先我们下载apktool的jar包,然后将其重新命名为apktool。然后还要下载windows下的脚本,我直接将脚本代码贴在下面了,新建一个txt文件,将脚本贴进去,然后改文件名为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

之后我们将两个文件放到一个文件夹里

Android反编译工具的使用(保姆级教程)_第1张图片

之后我们需要添加环境变量

这样我们的apktool就安装好了,直接双击apktool可以看到它的基础信息和简单的用法,然后我们还可以在命令行运行一下试试

D:\Environment\apktool>apktool.bat -version
2.6.1

显示的结果,说明没有问题

dex2jar

这个东西我们可以直接在官网上下载,我下载的v2.1的版本。
Android反编译工具的使用(保姆级教程)_第2张图片

然后将其解压就可以了

Android反编译工具的使用(保姆级教程)_第3张图片

JD-GUI

这个的安装也同样比较简单,我们在其官网上找到下载连接,下载和你系统相匹配的文件。

Android反编译工具的使用(保姆级教程)_第4张图片

我们解压后直接运行jd-gui.exe就可以了。

Android反编译工具的使用(保姆级教程)_第5张图片

吼,到这时我们就把所有的文件都给安装完成了。

三、开始逆向

apktool的逆向

我们首先使用apktool进行逆向,获取相应文件。

首先,我们把需要逆向的apk放到apktool的目录中

Android反编译工具的使用(保姆级教程)_第6张图片

然后打开命令行,输入以下命令

apktool d app-release.apk

然后我们就发现出现了一个文件夹,里面就是我们反编译后获得的结果

里面就包含我们的布局文件。

Android反编译工具的使用(保姆级教程)_第7张图片

dex2jar的逆向

我们找到dex2jar解压的目录,将刚才的apk放入到其中,打开命令行,然后输入以下命令

d2j-dex2jar.bat -f app-release.apk

然后我们可以得到结果

dex2jar app-release.apk -> .\app-release-dex2jar.jar

这就表明成功了,我们可以在目录中发现一个叫app-release-dex2jar.jar的一个文件,这就是我们反编译后得到的jar包。

jd-gui的逆向

我们上面得到jar包后,打开jd-gui.exe,然后将jar包放进去,当当当当~我们就可以得到java源代码了

Android反编译工具的使用(保姆级教程)_第8张图片

而且如果这个代码没有被混淆的话,我们是可以清晰的看到它的变量名的。这样就完成了我们的逆向,然后我们就可以分析这个文件或者开发相应的游戏mod等。

欢迎访问我的博客:www.xuanworld.top一起交流一起进步

你可能感兴趣的:(Android,android,java,开发语言,数据挖掘)