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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@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

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

img

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

![img](https://cdn.jsdelivr.net/gh/RytterMohn/img/$S0KE2]{M@4519F@$