apk逆向分析源码

apk逆向分析源码

apk提取

在手机安装了APP但是无法获取APP来源时,可以使用adb工具在手机提取安装的apk
1.下载adb工具包,解压进入到adb.exe文件夹下用cmd打开命令行。
2.手机打开开发者模式,允许usb调试
3. 开启adb服务在命令行输入命令

adb start-server
  1. 查看当前连接设备
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源代码进行分析。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值