V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

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

  •  
  •   LeeReamond · 2021-07-30 13:50:30 +08:00 · 675 次点击
    这是一个创建于 972 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    8 条回复    2021-07-31 22:08:09 +08:00
    ysc3839
        1
    ysc3839  
       2021-07-30 14:47:19 +08:00
    为什么触发异常有可能导致代码泄露?
    LeeReamond
        2
    LeeReamond  
    OP
       2021-07-30 15:43:10 +08:00
    @ysc3839 异常会指示什么位置哪行代码出问题,不会导致泄露?
    O5oz6z3
        3
    O5oz6z3  
       2021-07-30 16:47:41 +08:00
    不懂 cython 。说的是不是 sys.excepthook ?
    LeeReamond
        4
    LeeReamond  
    OP
       2021-07-30 17:02:19 +08:00
    @O5oz6z3 印象中不是用这个实现的,不过这个可以用来拦截 exp 然后直接不输出任何信息到 stdout 对吧
    O5oz6z3
        5
    O5oz6z3  
       2021-07-30 18:32:38 +08:00
    @LeeReamond 我还以为触发异常泄露代码指的是异常堆栈打印,其他的方法我就不知道了。
    ysc3839
        6
    ysc3839  
       2021-07-30 19:12:56 +08:00
    @LeeReamond Cython 编译后就没有调用栈信息了吧?类似普通的 pyd 模块,遇到错误只能看到错误信息,没有具体代码信息的。
    ysc3839
        7
    ysc3839  
       2021-07-30 19:24:17 +08:00
    哦,不对,函数名还是有的。即使是普通的 pyd 模块,定义 Python 函数的时候也要设置函数名,出错的时候 Python 也会打印出函数名。这种情况可能没什么好办法,不过一般不会认为函数名很重要吧?没记错的话 Objective-C 编译后也能逆向出完整的函数名和参数信息。
    LeeReamond
        8
    LeeReamond  
    OP
       2021-07-31 22:08:09 +08:00
    @ysc3839 最好还是抹掉,你提到逆向那肯定知道逆向过程中函数名的作用非常重要。我印象中是可以去掉的,只是以前代码没保存,现在找不到了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3499 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:07 · PVG 19:07 · LAX 04:07 · JFK 07:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.