反编译及手机平板apk提取

简介: 反编译apk获取apk相关内容

反编译与手机平板apk提取

反编译
    下载
    apktool.bat内容
    apktool相关参数
    操纵步骤:
            1.把设备中的framework-res.apk提取出来
            2.把framework-res.apk解析到对应文件夹
            4. 反编译apk
            5.搞定
提取设备系统apk
    用python写一个通用的apk提取代码

反编译与手机平板apk提取

仅用于安卓设备

反编译

本文只做介绍

下载

apktool官网:
https://ibotpeaches.github.io/Apktool/install/
    
apktool官方下载地址:
https://bitbucket.org/iBotPeaches/apktool/downloads/

apktool.bat内容

@echo off
set PATH=%CD%;%PATH%;
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

apktool相关参数

参数:
Apktool v2.5.0 - a tool for reengineering Android apk files
with smali v2.4.0 and baksmali v2.4.0
Copyright 2010 Ryszard Wi?niewski <brut.alll@gmail.com>
Copyright 2010 Connor Tumbleson <connor.tumbleson@gmail.com>

usage: apktool
 -advance,--advanced   prints advance information.
 -version,--version    prints the version then exits
usage: apktool if|install-framework [options] <framework.apk>
 -p,--frame-path <dir>   Stores framework files into <dir>.
 -t,--tag <tag>          Tag frameworks using <tag>.
usage: apktool d[ecode] [options] <file_apk>
 -f,--force              Force delete destination directory.
 -o,--output <dir>       The name of folder that gets written. Default is apk.out
 -p,--frame-path <dir>   Uses framework files located in <dir>.
 -r,--no-res             Do not decode resources.
 -s,--no-src             Do not decode sources.
 -t,--frame-tag <tag>    Uses framework files tagged by <tag>.
usage: apktool b[uild] [options] <app_path>
 -f,--force-all          Skip changes detection and build all files.
 -o,--output <dir>       The name of apk that gets written. Default is dist/name.apk
 -p,--frame-path <dir>   Uses framework files located in <dir>.

For additional info, see: https://ibotpeaches.github.io/Apktool/
For smali/baksmali info, see: https://github.com/JesusFreke/smali

操纵步骤:

1.把设备中的framework-res.apk提取出来

image-20220207112028169.png

adb pull /system/framework/framework-res.apk

2.把framework-res.apk解析到对应文件夹

apktool_2.5.0 if -p C:\Users\Lvan8\Desktop\temp  framework-res.apk
D:\G_Working\自动化小工具需求\性能工具\反编译工具\ApkToolBoxStudio_jb51\ApkToolBox Studio_v1.6.4\tool>apktool_2.5.0 if -p C:\Users\Lvan8\Desktop\temp  framework-res.apk
I: Framework installed to: C:\Users\Lvan8\Desktop\temp\1.apk1

3.反编译apk

  • 1.d 就是将apk反编译成文件夹的形式
  • 2.-p 后面跟的就是上一个步骤中framework指定的地址
  • 3.-f 理解为强制的意思
  • 4.最后接需要反编译的文件的名字(我放在和apptool同一个目录下)
apktool_2.5.0.bat d -p C:\Users\Lvan8\Desktop\temp -f setting.apk

反编译的时候想要放在别的目录下,需要加上 -o 参数 ,因为版本升级了

#把对应文件夹下面的apk反编译到主目录下的temp文件夹里面
#每次编译都会覆盖掉temp下面的所有内容
window_apk_path = '../resources/all_apk_files/IconPackCircularAndroidOverlay.apk'
save_path = '../temp/'
os.system(f'apktool_2.5.0.bat d -p {framework_path} -f {window_apk_path} -o {save_path}')
apktool反编译时经常会出现下面的信息

1.Input file  was not found or was not readable.

3.Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c fil..........

解决方案:

1和2是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o <folderPath>,参数具体的意思可以直接打apktool回车(windows)查看帮助

3是因为apktool版本过低导致,请升级到最新版本,地址: https://bitbucket.org/iBotPeaches/apktool/downloads

4.搞定

D:\G_Working\自动化小工具需求\性能工具\反编译工具\ApkToolBoxStudio_jb51\ApkToolBox Studio_v1.6.4\tool>apktool_2.5.0.bat d -p C:\Users\Lvan8\Desktop\temp -f setting.apk
I: Using Apktool 2.5.0 on setting.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Lvan8\Desktop\temp\1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

D:\G_Working\自动化小工具需求\性能工具\反编译工具\ApkToolBoxStudio_jb51\ApkToolBox Studio_v1.6.4\tool>
15

image-20220207112825146.png

完整得资源文件

image-20220207112837253.png

提取设备系统apk

adb pull system/app test 
adb pull system/priv-app test 
adb pull data/app test

#注解:
/system/app 存放rom本身附带的软件即系统软件;
/data/app 存放用户安装的软件;


#注意:
/system/priv-app/下的apk不用系统签名,就能够获取signatureOrSystem权限。
/system/app/下的apk,要获取signatureOrSystem权限,必须用系统签名才行。
/data/app下面的apk无法提取,需要把它复制到别的目录下,在下载到电脑
adb shell cp /data/app/com.xueqiu.android-TKqF3b6wXa1KQ3KyKK6o6Q==/base.apk /sdcard/temp123


#获取apk包名
aapt dump badging PartnerBookmarksProvider.apk

#获取包名所在路径
adb shell pm path 包名

用python写一个通用的apk提取代码

import os

#获取apk的包名
import time

class Pull_apk():

    def __init__(self,package_name,windows_apk_path):
        """
        : package_name : apk的包名
        : windows_apk_path : 指定电脑存储apk的路径
        """
        self.get_package_name = package_name
        self.self.windows_apk_path = windows_apk_path

    def pull_select_apk(self):
        #获取apk所在的路径
        apk_path_cmdshow = os.popen(f"adb shell pm path {self.get_package_name}").read()
        apk_path = apk_path_cmdshow.split(":")[1].strip()
        apk_name = apk_path.split("/")[-1]
        windows_apk_path = self.windows_apk_path
        #尝试提取到windows系统,如果提取不了,则复制到设备的sdcard目录中,再提取到Windows
        try:
            msg = os.popen(f'adb pull {apk_path} {windows_apk_path} ').read()
            print("----------------")
            if "1 file pulled" in msg:
                print("apk复制成功")
            else:
                #复制到sdcard目录下
                os.system(f'adb shell cp {apk_path}  /sdcard/')
                time.sleep(3)
                os.system(f'adb pull /sdcard/{apk_name} {windows_apk_path}')
                print("else分支,apk复制成功")
        except Exception as e :
            print(e)
        return apk_name
相关文章
|
7月前
|
安全 Java 图形学
Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
85 0
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
54 1
|
2月前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
158 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
3月前
|
vr&ar 图形学 UED
电子沙盘VR模型大屏平板手机微信使用方案
数字孪生电子沙盘和VR模型被广泛应用在房地产等行业,为不同设备定制不同版本的模型是常见做法。然而,通过实时云渲染技术,可以将PC端的VR模型转化为网页版,使用户能够在平板或手机上流畅浏览详细信息,无需开发多个版本。这不仅提升了用户体验,还简化了模型提供商的工作流程,降低了成本。尤其在新楼盘发布时,可通过公众号或广告链接快速吸引潜在客户。成本主要取决于并发用户数及显卡性能要求,但该技术显著提高了跨设备访问的便利性。
53 1
|
6月前
|
PHP
驾校在线考试系统源码 手机+PC+平板自适应
Thinkphp在线考题源码 驾校在线考试系统 手机+PC+平板 自适应,机动车驾驶培训学校驾校类网站源码带手机端 运行环境:php+mysql
183 11
驾校在线考试系统源码 手机+PC+平板自适应
|
5月前
|
JavaScript
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
134 0
|
7月前
|
Ubuntu Java Shell
反编译apk文件,得到其源代码的方法!!
反编译apk文件,得到其源代码的方法!!
124 1
|
7月前
|
Java
Mac环境下反编译apk
Mac环境下反编译apk
138 0
|
7月前
|
监控 安全 数据可视化
【Java】智慧工地云平台源码支持多端展示(PC端、手机端、平板端)
【Java】智慧工地云平台源码支持多端展示(PC端、手机端、平板端)
72 0
|
6月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
5008 2