apk逆向分析源码
apk提取
在手机安装了APP但是无法获取APP来源时,可以使用adb工具在手机提取安装的apk
1.下载adb工具包,解压进入到adb.exe文件夹下用cmd打开命令行。
2.手机打开开发者模式,允许usb调试
3. 开启adb服务在命令行输入命令
adb start-server
- 查看当前连接设备
adb devices
5.看到当前手机已经连接上了,可以关闭所有APP,打开要提取APP,查看启动APP包名
adb shell dumpsys activity activities
6.找到目标apk,后看apk所在位置
adb shell pm path <包名>
7.复制包名所在位置,提取apk
adb pull <apk位置> <要拉到的本地位置>
例如: adb pull d/app/com.tencent.mine==/base.apk D:\apk.apk
apk逆向
-
首先我们想要比较完整的解析一个apk需要三个工具:
apktool (用于资源文件获取)
dex2jar (用于获取源码)
jd-gui (用于源码查看) -
附上链接
apktool官网 https://ibotpeaches.github.io/Apktool/
dex2jar官方github仓库 https://github.com/pxb1988/dex2jar
jd-gui Google Code仓库(直接下载) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/innlab/jd-gui-0.3.3.windows.zip
这里jd-gui其实是比较次要的,因为大多数情况到不了看代码这一步,dex2jar就解析不了了
- apktool安装和使用
apktool官网讲解安装方法非常详细---->>https://ibotpeaches.github.io/Apktool/install/
首先先检查java环境,然后把下面这一段放在文本文档里面改个后缀改成 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
两个文件(apktool.bat和jar)放在同一个文件夹下面,然后把要反编译的apk也放进来,之后用cmd在该文件夹下面执行命,将ck.apk反编译到ck文件夹下,AndroidManifest.xml文件解码文档可以在编辑器中查看
apktool d .\ck.apk -o ck
- dex2jar安装和使用
dex2jar官方github仓库里面进入下载最新版的SNAPSHOT,把apk文件的后缀改成zip再解压获取classes文件,将classes.dex粘贴到dex2jar下,在该目录下打开命令行
d2j-dex2jar.bat classes.dex
jd-gui打开反编译出来的jar文件,即可对apk源代码进行分析。