python逆向常规解题方法
(一)解包

有两种方式,其中py2exe只能用python版本
(在我的电脑上要先删除PYTHONHOME和路径才能用,删除该路径和path后打开py2exe所在文件夹,输入python2 unpy2exe.py exe路径即可)
pyinstaller:进入pyinstxtractor.py所在文件夹,输入python pyinstxtractor.py exe路径即可
(二)修补文件头
通常情况下struct中的文件头与pyc文件缺失的文件头前16位相同,复制粘贴进去即可

如上图例子,将bird加pyc后缀保存即可
(三)反编译
可以直接用pyc在线反编译,但用软件效果更好
(1)uncompyle6
只支持3.8及以下版本的python


图示为在kail和windos上的使用例子。
(2)pycdc
pycdc只支持3.9及以上版本的python
使用方法:进入pycdc可执行程序所在文件夹下,输入pycdc 加pyc文件路径即可
例:
#pycdc的打包方法可参考 https://blog.csdn.net/qq_63585949/article/details/127080253
(三)将pyc转换成字节码
Python 代码先被编译为字节码后,再由Python虚拟机来执行字节码, Python的字节码是一种类似汇编指令的中间语言, 一个Python语句会对应若干字节码指令,虚拟机一条一条执行字节码指令, 从而完成程序执行。Python dis 模块支持对Python代码进行反汇编, 生成字节码指令。
因此,根据语法可以把编译出来的python字节码手搓成源码。
字节码获取方法:使用pycdump。
进入pycdump文件夹下,运行 python dump.py + pyc文件路径

以上是写python逆向的常见方法步骤,欢迎补充~
浙公网安备 33010602011771号