安卓apk逆向之crc32检测打补丁包crc32_patcher.py

运行 crc32_patcher.py 脚本,并传入两个参数:

第一个参数:您已打补丁并构建的 APK 文件

第二个参数:原始 APK 文件

crc32_patcher.py

python 复制代码
import zipfile
import binascii
import sys


def crc_patch(crc: int):
    def inner_crc(*args):
        return crc

    return inner_crc

orig_crc_binascii = binascii.crc32

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print(f"Usage {sys.argv[0]} patched.apk original.apk")
    patched_file = ".".join(sys.argv[1].split("/")[-1].split(".")[:-1]) + "_Patched.apk"
    with zipfile.ZipFile(sys.argv[2]) as orig:
        with zipfile.ZipFile(sys.argv[1]) as patched:
            with zipfile.ZipFile(
                patched_file, "w"
            ) as patched_patched:
                for i, file in enumerate(patched.filelist):
                    a = patched.read(file.filename)
                    try:
                        crc = list(filter(lambda x: x.filename == file.filename, orig.filelist))[0].CRC
                        setattr(zipfile, "crc32", crc_patch(crc))
                    except:
                        pass
                    patched_patched.writestr(file, a)
                    setattr(zipfile, "crc32", orig_crc_binascii)
    print(f"Successfully generated crc32 patched file in {patched_file}")
相关推荐
计算机魔术师1 分钟前
Anthropic S-1 披露:半年前发布的模型,已贡献不了多少收入了
前端
得物技术7 分钟前
Jev 实战:为AI工作流引入轻量决策层 x10倍提速|得物技术
python·llm·测试
qq_3646821513 分钟前
录音APP怎么切换语言?多语言版本如何使用
java·服务器·前端
reasonsummer15 分钟前
【教学类-07-12】20261028大3班破译电话号码html(手机按钮版本)
python·html
Wang's Blog17 分钟前
Java 项目实战: 交友项目 - 用户体系集成:根据环信id查询用户详情
java·lua·交友
摇滚侠22 分钟前
《On Java 中文版 基础卷》阅读笔记 复用 13
java·笔记·python
2601_9689007724 分钟前
玻璃深加工的工艺窗口:4 道工序的温度与时间参数边界
android·java·javascript
志尊宝25 分钟前
AI原生前端开发(037):AI辅助的Vue 3开发最佳实践
前端·vue.js·ai-native
用户2986985301428 分钟前
Python 将 Word 文档转换为 XML 的实践要点
后端·python·api
中科三方30 分钟前
AI时代新攻击面:悬空DNS记录正在成为黑客的低成本入侵入口
服务器·前端·人工智能