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

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

img

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

img

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

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

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

dex2jar

这个东西我们可以直接在官网上下载,我下载的v2.1的版本。
在这里插入图片描述

然后将其解压就可以了

在这里插入图片描述

JD-GUI

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

在这里插入图片描述

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

在这里插入图片描述

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

三、开始逆向

apktool的逆向

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

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

在这里插入图片描述

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

apktool d app-release.apk

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

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

在这里插入图片描述

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源代码了

在这里插入图片描述

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

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

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
apktool.jar是APKTOOL这个反编译工具必须用到的必备jar包,同时也附上apktool.jar的使用方法,有兴趣的朋友们就来下载使用吧。 使用方法 一.APKTOOL使用环境配置 1.安装JAVA并设置环境变量。 下载安装都很简单,关键是安装完后还需要亲自设置环境变量以方便其他程序能够条用JAVA。 以WIN7为例,在桌面上右键点击计算机——>属性——>高系统设置——>环境变量——>在下边的系统变量里新建一个变量,变量名为JAVA_HOME,值为JAVA的安装路径,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26 二.APKTool的安装 1.其实这个谈不上安装,不过如果你愿意的话可以把下载到的APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令. 2.可能有些人下载的APKTOOL里有个安装的bat文件,并且有另外两个方便使用的bat文件。 三.APKTool的使用 1.decode 该命令用于进行反编译apk文件,一般用法为 apktool d <file.apk> <dir> <file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk <dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer 如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令 apktool d –f <file.apk> <dir> 这样就会强行覆盖已经存在的文件 2.build 该命令用于编译修改好的文件,一般用法为 apktool b <dir> 这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。 3.install-framework 该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值