在Python中反编译加密的pyc文件
2022/2/14 9:41:36
本文主要是介绍在Python中反编译加密的pyc文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在反编译python生成可执行文件exe时,引用的类库文件经常遇到使用Crypto 模块AES算法加密,解包生成的并不是pyc文件,而是加密的pyc. encrypted文件,当然它也无法查看编译。当然,它也是可以解密的。
解密流程
第一步,获取Crypto 的key,这是打包时由开发者指定的。解包完成后将在根目录形成名为"pyimod00_crypto_key.pyc"的文件,将它转为py文件即可查看key文件;
第二步,编写解密处理的脚本代码
import glob import zlib import tinyaes from pathlib import Path CRYPT_BLOCK_SIZE = 16 # key obtained from pyimod00_crypto_key key = bytes('MySup3rS3cr3tK3y', 'utf-8') for p in Path("PYZ-00.pyz_extracted").glob("**/*.pyc.encrypted"): inf = open(p, 'rb') # encrypted file input outf = open(p.with_name(p.stem), 'wb') # output file # Initialization vector iv = inf.read(CRYPT_BLOCK_SIZE) cipher = tinyaes.AES(key, iv) # Decrypt and decompress plaintext = zlib.decompress(cipher.CTR_xcrypt_buffer(inf.read())) # Write pyc header # The header below is for Python 3.8 outf.write(b'\x55\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0') # Write decrypted data outf.write(plaintext) inf.close() outf.close() # Delete .pyc.encrypted file p.unlink()
在前一步中获取的key是必须文件,否则无法进行解密;对于不同pyton版本头文件(header)也不相同,2.7~3.10如下所示:
Python 2.7: \x03\xf3\x0d\x0a\0\0\0\0
Python 3.0: \x3b\x0c\x0d\x0a\0\0\0\0
Python 3.1: \x4f\x0c\x0d\x0a\0\0\0\0
Python 3.2: \x6c\x0c\x0d\x0a\0\0\0\0
Python 3.3: \x9e\x0c\x0d\x0a\0\0\0\0\0\0\0\0
Python 3.4: \xee\x0c\x0d\x0a\0\0\0\0\0\0\0\0
Python 3.5: \x17\x0d\x0d\x0a\0\0\0\0\0\0\0\0
Python 3.6: \x33\x0d\x0d\x0a\0\0\0\0\0\0\0\0
Python 3.7: \x42\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0
Python 3.8: \x55\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0
Python 3.9: \x61\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0
Python 3.10: \x6f\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0
第三步,执行脚本文件,即可将加密的pyc. encrypted文件转成不加密的pyc文件。
参考资料
python exe文件解包方法总结-软件逆向
Frequently Asked Questions · extremecoders-re/pyinstxtractor Wiki · GitHub
[CISCN2021]华北区_ctf_re_imnotavirus - 简书 (jianshu.com)
这篇关于在Python中反编译加密的pyc文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享