反向工程 .pyo Python 文件

3 投票
4 回答
7949 浏览
提问于 2025-04-15 22:35

我有两个 .pyo 的 Python 文件,我可以把它们转换成 .py 的源代码文件,但转换后并不是完全正确,decompyle 的验证结果也提示了这一点。

通过查看源代码,我发现 config.pyo 里简单地把一些变量放在了一个数组里:

ADMIN_USERIDS = [116901, 141, 349244, 39, 1159488]

我想对原始的 .pyo 文件进行一些处理,或者进行反汇编,以便能修改其中的一个 ID。

或者……

在 model.pyo 文件中,源代码显示有一行:

if (productsDeveloperId != self.getUserId()):

我只想把这个 != 改成 == ……用一个 Windows 的程序来做这个很简单,但我找不到合适的 Python 反汇编工具。

欢迎任何建议……我对读取字节码和 Python 都是新手。

4 个回答

0

我不知道这是否能直接帮到你,但Python 已经有一个字节码反汇编工具

如果你想做相反的事情,也就是生成字节码,有几个选择。一方面,你可以使用 标准的编译器包,另一方面,还有一个 BytecodeAssembler库,可能更适合你的需求。

0

IDA 6.0 之前的版本没有可以将 .pyc 文件反编译的功能模块。

0

把 .pyo 文件转换成 .py 文件,然后编辑 .py 文件,接着用 Python 运行这些 .py 文件。Python 会重新生成 .pyo 文件。不要去编辑 .pyo 文件。

我对 Python 的字节码不太了解,但我怀疑 .pyo 文件里不会出现字符串 == 或 1=。

其实更好的办法是直接获取原始的 .py 文件并使用它们。如果他们提供的程序有问题,比如想把 != 改成 ==,你可以要求供应商来修复这个错误。

撰写回答