LeeReamond
V2EX  ›  问与答

Cython 编译出的程序如何禁止异常冒泡?

  •  
  •   LeeReamond · Jul 30, 2021 · 1143 views
    This topic created in 1748 days ago, the information mentioned may be changed or developed.

    如题,cython 编译 python 代码似乎是一种常见的 py 分发加密方法,而触发异常有可能导致代码泄露,我印象中是能够关闭掉的,刚才百度搜了半天没搜到,好像关键字不太对,有没有大佬指点一下,谢谢。

    8 replies    2021-07-31 22:08:09 +08:00
    ysc3839
        1
    ysc3839  
       Jul 30, 2021
    为什么触发异常有可能导致代码泄露?
    LeeReamond
        2
    LeeReamond  
    OP
       Jul 30, 2021
    @ysc3839 异常会指示什么位置哪行代码出问题,不会导致泄露?
    O5oz6z3
        3
    O5oz6z3  
       Jul 30, 2021
    不懂 cython 。说的是不是 sys.excepthook ?
    LeeReamond
        4
    LeeReamond  
    OP
       Jul 30, 2021
    @O5oz6z3 印象中不是用这个实现的,不过这个可以用来拦截 exp 然后直接不输出任何信息到 stdout 对吧
    O5oz6z3
        5
    O5oz6z3  
       Jul 30, 2021
    @LeeReamond 我还以为触发异常泄露代码指的是异常堆栈打印,其他的方法我就不知道了。
    ysc3839
        6
    ysc3839  
       Jul 30, 2021
    @LeeReamond Cython 编译后就没有调用栈信息了吧?类似普通的 pyd 模块,遇到错误只能看到错误信息,没有具体代码信息的。
    ysc3839
        7
    ysc3839  
       Jul 30, 2021
    哦,不对,函数名还是有的。即使是普通的 pyd 模块,定义 Python 函数的时候也要设置函数名,出错的时候 Python 也会打印出函数名。这种情况可能没什么好办法,不过一般不会认为函数名很重要吧?没记错的话 Objective-C 编译后也能逆向出完整的函数名和参数信息。
    LeeReamond
        8
    LeeReamond  
    OP
       Jul 31, 2021
    @ysc3839 最好还是抹掉,你提到逆向那肯定知道逆向过程中函数名的作用非常重要。我印象中是可以去掉的,只是以前代码没保存,现在找不到了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5898 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 03:25 · PVG 11:25 · LAX 20:25 · JFK 23:25
    ♥ Do have faith in what you're doing.