【问题标题】:Hack python code破解python代码
【发布时间】:2018-06-15 12:20:03
【问题描述】:

我一直听说 python 是一种对猴子补丁很友好的语言......现在我需要猴子补丁并且不知道该做什么。

我特别需要禁用解析异常的“引发”,以查看 iso 解析库是否正常运行。这不是那么简单,因为我正在使用 libmirage(它是一个 cdemu 一个 cd 模拟器底层库,用于处理任何类型的 mode2 形式 1 的第一个轨道或像 iso 一样混合,以便 iso 解析器库 pycdlib 可以读取它。

这几乎可以完美运行,除了...我正在测试的 redump 集合中的一些 psx cd 在 pycdlib 中由于各种解析错误而引发异常:

PyCdlibInvalidISO: data in 3rd unused field not zero

\

ValueError: year is out of range

\

PyCdlibInvalidISO: File structure version expected to be 1

等等

我真正想要的是在解析期间禁用引发异常,因为我正在寻找的信息与 iso 验证没有太大关系——基本上是单个 txt 文件中的序列号——以及那些 iso无论如何都要经过redump的审查。

有没有办法在不自己导入和编辑库的情况下做到这一点?

【问题讨论】:

  • 不能只捕获异常吗?
  • 捕获它们会阻止解析在 pycdlib 库代码中继续进行(它会将它们抛出)。我不控制图书馆,否则我已经破解了它。它是通过其 github 上的 pip 安装的。最终我想将程序或脚本分发给其他人。
  • 你不能禁止加注。您需要提取模块源并直接修改它,也就是 fork 它。

标签: python exception monkeypatching


【解决方案1】:

好吧,因为没有分叉就无法做到这一点,我想最好的方法是使用 git 克隆 repo 并使用 pip -e ~/fork 安装修改版本(或者可能只是将 repo 复制到本地dir 因为它是纯 python)或说服上游在解析过程中更加宽容。

我都做了。

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    相关资源
    最近更新 更多