文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Android安全】从xapk中提取apk并进行重命名

2023-09-24 15:55

关注

关于xapk格式

XAPK文件是由APKPure首创的

它是一种文件扩展格式,包含了单独的APK文件和OBB cache assets文件。这种格式节省了文件大小以助于开发者能够在最大限制100 MB内上传他们的安卓应用到谷歌商城。APKPure APP是提供在安卓下载和安装XAPK文件的最受信任的来源之一。

参考:https://m.apkpure.com/cn/how-to/how-to-install-xapk-apk

核心:xapk中,解压之后,有一个apk的名字是包名(称为main apk,或者main application package),将这个main apk提取出来,进行后续分析即可

术语参考:https://filext.com/file-extension/XAPK

任务描述

当前文件夹下有一些xapk文件
原始文件名 例如:PA01-0018-com.nra.flyermaker-90.xapk
希望从中解压并提取出主apk 例如:com.nra.flyermaker.apk
并将com.nra.flyermaker.apk命名为PA01-0018-com.nra.flyermaker-90.apk

解决方案

Xapk2Apk.py

import osimport zipfileimport shutil# 原始文件名:例如PA01-0018-com.nra.flyermaker-90.xapk# 希望从中解压并提取出主apk:com.nra.flyermaker.apk# 并将com.nra.flyermaker.apk命名为PA01-0018-com.nra.flyermaker-90.apk# 获取当前目录下所有.xapk文件xapk_files = [file for file in os.listdir('.') if file.endswith('.xapk')]# 循环处理每个文件for file in xapk_files:    print(file)    # PA01-0018-com.nra.flyermaker-90.xapk    # 解压缩到当前目录下的与文件同名的文件夹中    with zipfile.ZipFile(file, 'r') as zip_ref:        folder_name = os.path.splitext(file)[0]        zip_ref.extractall(folder_name)    # 在解压缩后的文件夹中找到apk文件并进行重命名    folder_files = os.listdir(folder_name)    apk_files = [name for name in folder_files if name.endswith('.apk')]    for apk_file in apk_files:        # 找到解压后的主apk        if os.path.splitext(apk_file)[0] in os.path.splitext(file)[0]:            print(apk_file)              # com.nra.flyermaker.apk            apk_path = os.path.join(folder_name, apk_file)            print("old apk name : " + apk_path)             # old apk name : PA01-0018-com.nra.flyermaker-90/com.nra.flyermaker.apk            new_apk_path = os.path.join(folder_name, folder_name+'.apk')            print("new apk name : " + new_apk_path)             # new apk name : PA01-0018-com.nra.flyermaker-90/PA01-0018-com.nra.flyermaker-90.apk            os.rename(apk_path, new_apk_path)            # 将./PA01-0018-com.nra.flyermaker-90/PA01-0018-com.nra.flyermaker-90.apk 移动至 ./PA01-0018-com.nra.flyermaker-90.apk            shutil.move(new_apk_path, "./"+folder_name+'.apk')            # 删除./PA01-0018-com.nra.flyermaker-90/文件夹            shutil.rmtree(folder_name)

参考:
https://chat.openai.com/

来源地址:https://blog.csdn.net/qq_39441603/article/details/130329745

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯