主要观点总结
本文介绍了常见的Python题型,包括直接反编译型、打包成exe的py文件、给pyc字节码(类汇编形式)和加花的pyc文件等四种类型,并详细阐述了每种题型的解决方案和涉及的Python知识点。
关键观点总结
关键观点1: 直接反编译型
除了直接获得题目内容的python文件外,出题人还可以给出题目python文件所对应的pyc文件。使用uncompyle6或Pycdc将pyc文件反编译成py文件。注意下载的uncompyle6的版本最好别高于所使用的python版本。
关键观点2: 打包成exe的py文件
使用Pyinstxtractor工具将exe文件进行解包,获得pyc文件,然后将其还原成py文件进行逆向。特殊情况需要保留原始的魔术数字和时间戳信息。
关键观点3: 给pyc字节码(类汇编形式)
使用dis模块反汇编Python字节码,显示每个字节码指令的操作码和操作数。不同python版本的pyc文件头不同,需要注意识别。可以使用marshal模块对字节码进行序列化和反序列化。
关键观点4: 加花的pyc文件
了解pyc的文件结构,包括文件头部分和PyCodeObject部分。在PyCodeObject中有一个部分需要注意,那就是字节码指令序列。数值代表了Pyc字节码的指令的字节数。如果我们对Pyc里面的指令进行了删减,那么在删减过后我们需要对PyObject *co_code数值也进行修改。
文章预览
讲述一下常见的python题型 一 第一种:直接反编译型 除了直接获得题目内容的python文件外,出题人也可以稍微加工一点点,给出题目python文件所对应的pyc文件,即python的字节码。 PYC 文件的定义 pyc 文件是 python 在编译过程中出现的主要中间过程文件。pyc 文件是二进制的,类似 java 的字节码,可以由 python 虚拟机直接执行的。 这个时候我们一般使用uncompyle6(适用于python3.8)或者Pycdc将pyc文件反编译成py文件。 Uncompyle6下载以及使用: https://github.com/rocky/python-uncompyle6 命令: pip install uncompyle6 安装完成后可以使用 uncompyle6 --version 查看是否安装成功,若成功显示版本号,则安装成功 (注意:下载的uncompyle6的版本最好别高于所使用的python版本) 使用命令: uncompyle6 -o output_file.py your_file.pyc -o 目标生成的Python文件名 原pyc文件名 pycdc下载以及使用: https://github.
………………………………