使用 importlib 导入 pyarmor 混淆代码

简单的

假设我有 2 个模块 - 其中一个已被 PyArmor 混淆。另一个导入混淆模块并使用它:

# obfuscated.py
def run_task(conn):
    conn.send_msg("Here you go")
    print(conn.some_val + 55)
    return 0
# Non obfuscated (user) code
import importlib.util


class conn:
    some_val = 5
    
    def send_msg(msg):
        print(msg)

def main():
    # import obfuscated # This works...but I need to dynamically load it:

    # This does not:
    spec = importlib.util.spec_from_file_location("module.name", r'c:\Users\me\obfuscated.py')
    obfuscated = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(swdl)
    ret = obfuscated.run_task(conn)
    print("from main: ", ret)

if __name__ == "__main__":
    main()

如果我使用import导入混淆文件就可以了。但是我需要使用importlib动态导入混淆文件。importlib 不起作用 - 我得到:

AttributeError: module 'module.name' has no attribute 'obfuscated'

这个想法是,用户可以使用内部可用的 API 编写脚本,obfuscated.py但需要从系统上的任何位置加载模块。

有没有办法实现这一目标?

简单的

我想我有一个基于我在这里读到的内容的方法:https : //pyarmor.readthedocs.io/en/latest/mode.html#restrict-mode

我在用户代码和混淆代码之间使用代理。

  • 用户代码可能会或可能不会被混淆
  • 混淆后的代码显然被混淆了!
  • 不得混淆代理(为简单起见,我混淆了所有内容,然后将原始文件复制proxy.py到混淆后的文件上)

因此,现在用户代码导入proxy.pyusingimportlib而不是obfuscated.py.

代理仅导入obfuscated.py

# proxy.py
import obfuscated

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:使用importlib从字符串动态导入模块的代码

如何使用importlib从模块导入*?

使用importlib导入的模块的别名

如何实现一个可以使用importlib即时修改源代码的导入挂钩?

使用importlib动态导入包含相对导入的模块

在从importlib导入的模块上使用“经典”导入的ModuleNotFoundError

是否可以使用 Pyarmor 将混淆文件合并为一个文件?

Python:使用importlib导入任意命名的源文件

如何使用importlib.import_module在Python中导入模块

PyTest:修补使用“importlib.import_module()”导入模块的方法

Python使用importlib从包目录中导入模块

python importlib从错误的目录导入

在python3中使用importlib进行动态导入时出错

如何使用importlib.LazyLoader?

从另一个文件(importlib)导入变量?

无法为 rest_framework.urlpatterns 导入名称 importlib

Python:如何使用Importlib创建类对象

使用Gradle将代码样式导入Eclipse

使用包执行Java代码并导入

将Java源代码导入Eclipse以避免混淆引用的正确方法是什么?

使用proguard混淆JAXB代码期间发生IllegalAnnotationsException

如何判断我是否正在使用Proguard混淆代码?

如何使用混淆代码为Android创建Cordova插件?

删除了交互式模块的功能。如何重新导入?importlib.reload没有帮助

在Python 2.7中,importlib可以一次导入多个模块吗?

序列化由 importlib 导入的 dict 时,无法腌制/删除 SwigPyObject

导入模块上的python混淆

如何将 pyfakefs 与 importlib.resources.path 结合使用

使用importlib.util检查库时出错