提取手机所有apk

提取APK路径

使用adb shell中的pm指令,可以获取到所有应用的安装路径

adb shell pm list package -f

结果是类似于这种

package:/vendor/overlay/WifiResMainlineOverlay/WifiResMainlineOverlay.apk=com.android.wifi.mainline.resources.overlay
package:/product/overlay/DisplayCutoutEmulationTall/DisplayCutoutEmulationTallOverlay.apk=com.android.internal.display.cutout.emulation.tall
package:/data/app/~~JwpHJZ8nzv5pbUlphtekiw==/in.amazon.mShop.android.shopping-iWC3XFdrdoPcAoaxOo1Uhg==/base.apk=in.amazon.mShop.android.shopping
package:/system/priv-app/MtkMmsService/MtkMmsService.apk=com.android.mms.service

如果单个提取的话就直接pull就好了,如果很多的话还是用脚本来处理吧

import subprocess
import os

def extract_apks():
    # 执行adb shell命令获取手机上安装的所有应用包名
    package_names = subprocess.check_output(["adb", "shell", "pm", "list", "packages", "-f"]).decode("utf-8").splitlines()
    
    apk_path_base = {}
    apk_paths = []
    
    # 提取包名中的apk路径并保存到列表中
    for line in package_names:
        if line.startswith("package:"):
            path = line.rsplit("=", 1)[0].split(":")[1]
            if path.endswith("base.apk"):
                apk_path_base[path] = line.rsplit("=", 1)[1].replace(".", "_") + ".apk"
            else:
                apk_paths.append(path)
                

    # 创建保存APK文件的目录
    output_dir = "extracted_apks"
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 使用adb pull命令将APK文件从手机中提取到本地目录
    for apk_path in apk_paths:
        apk_file_name = os.path.basename(apk_path)
        output_path = os.path.join(output_dir, apk_file_name)
        subprocess.call(["adb", "pull", apk_path, output_path])
        print(f"Extracted: {output_path}")
        
    print("------------------------------------")
        
    for apk_path, value in apk_path_base.items():
        #apk_file_name = os.path.basename(apk_path)
        apk_file_name = os.path.basename(value)
        output_path = os.path.join(output_dir, apk_file_name)
        subprocess.call(["adb", "pull", apk_path, output_path])
        print(f"Extracted: {output_path}")

if __name__ == "__main__":
    extract_apks()

解压所有apk

还是用脚本对提取出来的apk进行解压

import os
import zipfile

def extract_apks(source_folder, target_folder):
    # 遍历match文件夹下的所有文件
    for file_name in os.listdir(source_folder):
        if file_name.endswith('.apk'):  # 如果文件是APK文件
            # 获取APK文件的路径
            apk_path = os.path.join(source_folder, file_name)

            # 创建解压后的文件夹路径
            folder_name = os.path.splitext(file_name)[0]  # 移除文件扩展名
            target_path = os.path.join(target_folder, folder_name)

            # 创建目标文件夹
            if not os.path.exists(target_path):
                os.makedirs(target_path)

            # 解压APK文件到目标文件夹
            with zipfile.ZipFile(apk_path, 'r') as zip_ref:
                zip_ref.extractall(target_path)
                print(f"Extracted: {apk_path} to {target_path}")

if __name__ == "__main__":
    source_folder = "extracted_apks"  # 包含所有APK文件的文件夹路径
    target_folder = "extracted_zips"  # 解压后的文件夹路径

    extract_apks(source_folder, target_folder)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提取AutoJS打包APK的源码,你需要完成以下步骤: 第一步,确保你的手机上已经安装了AutoJS并启用了无障碍服务。你可以在应用商店中下载并安装AutoJS应用程序。 第二步,打开AutoJS应用并创建一个新的脚本项目。你可以点击右下角的“+”按钮,然后选择“新建项目”。 第三步,编写你的脚本代码。你可以使用AutoJS的API实现不同的功能,例如模拟用户操作、操作系统设置等等。在编写脚本时,可以参考AutoJS的官方文档或搜索网络上的教程。 第四步,完成你的脚本后,点击AutoJS界面上的“生成APK”按钮。接下来,你需要根据提示进行一些设置,例如应用名称、包名、版本等。这些设置将影响生成APK的最终效果。 第五步,生成APK后,你可以在AutoJS应用中找到它。选择你的项目,然后点击右上角的“导出APK”按钮。 第六步,导出APK后,你可以使用文件管理器在手机的存储位置中找到它。将APK文件复制到你的电脑中,以便进一步处理。 最后,你可以使用Java开发工具(如Android Studio)来提取APK的源代码。打开Android Studio,并从菜单中选择“导入项目”。选择你复制到电脑上的APK文件,并按照Android Studio的指导进行操作。在导入的过程中,Android Studio会自动解压APK文件并提取代码。 总结起来,要提取AutoJS打包APK的源码,你需要先创建并编写脚本,然后生成APK并导出到电脑。最后,使用Android Studio或其他适用的开发工具提取源码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值