精华内容
下载资源
问答
  • 有什么方法可以反编译dll和/或.pyd文件以提取用Python编写的源代码?提前致谢是。 它之前被问过,所以我投票关闭它,这里是参考-stackoverflow.com/questions/5287253/不是相同的问题(dll不是.pyc文件)! 我的想法...

    有什么方法可以反编译dll和/或.pyd文件以提取用Python编写的源代码?

    提前致谢

    是。 它之前被问过,所以我投票关闭它,这里是参考-stackoverflow.com/questions/5287253/

    不是相同的问题(dll不是.pyc文件)! 我的想法不行! 也许转换为汇编代码,但是如何遵循数据/功能树?

    谢谢你的协助。

    @Torxed这确实不是一个相同的问题,pyd文件由Cython产生。 与pyc / bytecode不同,pyd文件是不包含原始python源的二进制文件。 尽管它不能防止逆向工程,但确实会使它变得困难得多,并阻止某人获得您代码的确切原始资源。

    我假设.pyd / .dll文件是在Cython中创建的,而不是在Python中创建的?

    无论如何,通常是不可能的,除非有专门针对文件最初使用的语言设计的反编译器。虽然我了解C,C ++,Delphi,.NET和其他一些反编译器,但我还没有听说过Cython反编译器。

    当然,Cython要做的是先将您的Python [esque]代码转换为C代码,这意味着您可能更幸运地找到了C反编译器,然后根据反编译的C代码划分原始Python代码。至少,通过这种方式,您将处理从一种(相对)高级语言到另一种高级语言的翻译。

    最坏的情况是,您必须使用反汇编程序。但是,从反汇编程序的输出中重新创建Python代码并不容易(这完全类似于从构成其细胞的蛋白质的化学式中区分大脑的生物学功能)。

    您可能会在有关各种反编译器和反汇编程序的想法和建议上查看此问题,然后从那里进行调查。

    感谢您的有用回复,病态请务必做一些额外的研究。

    @YoussefImam我不同意此答案,请参阅我的答案stackoverflow.com/a/41075212/1422096

    @Basj阅读更新的答案后,似乎Cython编译的.pyd文件毕竟没有嵌入源代码。如果您能证明是相反的话,我会很感兴趣,但是在那之前,我会坚持我的回答。

    你是对的@Lav。

    @Basj,是否可以对C代码进行逆向工程,那么,我需要对该软件进行逆向工程,它是用Python编写的,并且具有.pyd文件。

    所以我认为我们可以使用。用于混淆的Pyd文件。 Py文件

    我不同意接受的答案,似乎可以,即使在.pyd中也可以访问源代码的内容。

    例如,让我们看一下如果出现错误会发生什么:

    1)创建此文件:

    whathappenswhenerror.pyx

    A = 6

    print 'hello'

    print A

    print 1/0 # this will generate an error

    2)用python setup.py build编译:

    setup.py

    from distutils.core import setup

    from Cython.Build import cythonize

    setup(ext_modules = cythonize("whathappenswhenerror.pyx"), include_dirs=[])

    3)现在,将.pyd文件导入标准的python文件中:

    testwhathappenswhenerror.py

    import whathappenswhenerror

    4)让我们用python testwhathappenswhenerror.py运行它。这是输出:

    hello

    6

    Traceback (most recent call last):

    File"D:\testwhathappenswhenerror.py", line 1, in

    import whathappenswhenerror

    File"whathappenswhenerror.pyx", line 4, in init whathappenswhenerror (whathappenswhenerror.c:824)

    print 1/0 # this will generate an error

    ZeroDivisionError: integer division or modulo by zero

    如您所见,将显示.pyx源代码中的代码行print 1/0 # this will generate an error!甚至显示评论!

    4之二)如果在步骤3)之前删除(或移到其他地方)原始.pyx文件,则不再显示原始代码print 1/0 # this will generate an error:

    hello

    6

    Traceback (most recent call last):

    File"D:\testwhathappenswhenerror.py", line 1, in

    import whathappenswhenerror

    File"whathappenswhenerror.pyx", line 4, in init whathappenswhenerror (whathappenswhenerror.c:824)

    ZeroDivisionError: integer division or modulo by zero

    但这是否意味着它不包含在.pyd中?我不

    移动pyx表示回溯使用了从pyd(在Linux中为so)到pyx中的行的某种链接。该代码不在pyd中。

    @Basj,如果pyx文件位于同一位置,并且在执行import whathappenswhenerror时,如何知道其导入.pyd而不是pyx?可能是其导入pyx,因此代码显示错误。

    通过查看回溯(File"whathappenswhenerror.pyx", line 4),可以确定它正在使用pyx文件。

    展开全文
  • Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。...但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd...

    Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。那么要对Python代码进行混淆、加密保护。

    混淆代码,我准备使用pyminifier。而加密处理,就比较麻烦。

    Python有py、pyc、pyw、pyo、pyd等文件格式。

    其中,pyc是二进制文件。但很容易被反编译。

    pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。

    pyo和pyc差不多,也容易被反编译。

    最后剩下pyd格式。pyd格式是D语言(C/C++综合进化版本)生成的二进制文件,实际也会是dll文件。该文件目前位置没找到可以被反编译的消息,只能被反汇编。Sublime text编辑器也是使用该格式。

    Python的py文件生成pyd文件步骤如下。

    1、安装Cython

    可以使用pip命令安装Cython。

    pip install cython

    2、处理vcvarsall.bat

    若不处理,可能会出现“Unable to find vcvarsall.bat”错误。

    安装Cython之后,还需要指定vcvarsall.bat的位置。

    vcvarsall.bat是VC编译Python环境的文件之一。而vcvarsall.bat需要安装VC For Python2.7。我的Python是2.7,刚好可以使用这个。至于3.x版本不知道微软更新了没有。

    安装成功之后,再修改设置。让Cython可以找到vcarsall.bat。此处有两种方案。

    我采用方案1,亲测可用。方案2未测试,看似可用。

    3、创建工作目录并生成pyd文件

    这里有一个坑。程序所在的目录路径不能包含中文文字。所以我在E盘下创建一个test文件夹,用于放置要处理的python文件。

    简单写了一个测试文件(命名为test.py):

    #coding:utf-8

    defhello():

    print("Hello world")

    input("")

    在该目录下,再新建一个py文件(命名为setup.py):

    fromdistutils.core importsetup

    fromCython.Buildimportcythonize

    setup(

    name =‘Hello world app‘,

    ext_modules =cythonize("test.py"),

    )

    接着,再打开cmd,跳到该目录并执行如下命令:

    python setup.py build_ext --inplace

    最终生成pyd文件

    其中,build是生成过程使用到的临时文件。test.c也是临时文件,可以打开看看传说中的D语言代码。

    test.pyd是我们所需的文件。

    pyd文件可以像平常一样使用import引入模块的方式正常使用。

    后来,我尝试使用py2exe打包pyd文件。还需要创建一个入口脚本(命名为index.py):

    importtest

    if__name__=="__main__":

    test.hello()

    为了方便打包,我重新创建一个目录。把index.py和test.pyd复制到该目录。

    如何安装和使用py2exe这里我就不说了,自行百度一下。

    分别用test.pyd和未处理的test.py打包效果如下:

    1)用test.pyd

    直接可以在index.exe对应的位置找到该文件。

    2)用test.py

    在该目录下没有test.py文件。该文件在library.zip中。

    测试结果,用py2exe可以正常使用pyd文件。

    ps:若用Cython出现如下错误,说明文件的编号和python脚本设置 #coding设置的编码不一致。保存一致编码即可解决该问题。

    Decoding error, missing or incorrect coding= at top of source (cannot decode with encoding ‘utf8‘: invalid start byte)

    展开全文
  • 让我们看一下如果出现错误会发生什么:1)创建此文件:whathappenswhenerror.pyxA = 6print 'hello'print Aprint 1/0 # this will generate an error2)使用python setup.py build编译它:setup.pyfrom distutils....

    我不同意接受的答案,似乎是的,即使在.pyd也可以访问源代码的内容。

    让我们看一下如果出现错误会发生什么:

    1)创建此文件:

    whathappenswhenerror.pyx

    A = 6

    print 'hello'

    print A

    print 1/0 # this will generate an error

    2)使用python setup.py build编译它:

    setup.py

    from distutils.core import setup

    from Cython.Build import cythonize

    setup(ext_modules = cythonize("whathappenswhenerror.pyx"), include_dirs=[])

    3)现在在标准python文件中导入.pyd文件:

    testwhathappenswhenerror.py

    import whathappenswhenerror

    4)让我们用python testwhathappenswhenerror.py运行它。 这是输出:

    hello

    6

    Traceback (most recent call last):

    File "D:\testwhathappenswhenerror.py", line 1, in

    import whathappenswhenerror

    File "whathappenswhenerror.pyx", line 4, in init whathappenswhenerror (whathappenswhenerror.c:824)

    print 1/0 # this will generate an error

    ZeroDivisionError: integer division or modulo by zero

    正如你可以看到代码行print 1/0 # this will generate an error ,显示在.pyx源代码中! 甚至显示评论!

    4 bis)如果我在步骤3)之前删除(或移动到其他地方)原始的.pyx文件,那么原始代码print 1/0 # this will generate an error ,不再显示:

    hello

    6

    Traceback (most recent call last):

    File "D:\testwhathappenswhenerror.py", line 1, in

    import whathappenswhenerror

    File "whathappenswhenerror.pyx", line 4, in init whathappenswhenerror (whathappenswhenerror.c:824)

    ZeroDivisionError: integer division or modulo by zero

    但这是否意味着它不包含在.pyd中? 我不确定。

    展开全文
  • 这段时间做接口自动化测试,用python直接调用接口,sign值是经过系列复杂算法加密后生成的字符串,保密级别高,不能直接以py文件供大家调用~~pyc文件呢,很容易就被反编译了,pyd文件和一般dll类似,不容易被反编译...

    这段时间做接口自动化测试,用python直接调用接口,sign值是经过系列复杂算法加密后生成的字符串,保密级别高,不能直接以py文件供大家调用~~

    pyc文件呢,很容易就被反编译了,pyd文件和一般dll类似,不容易被反编译。

    生成pyd很容易,网上百度一堆堆,但是调用pyd文件会遇到好多错误。

    在此贴一下生成pyd到调用pyd文件的方法供参考:

    1.新建一个setup.py文件:

    # 用cpython生成pyd方式//需要安装cpython和vs2015(安装vs时只安装c++即可)

    # 这种方式生成的pyd文件区分系统位数,比如32位生成的只能用于32位,64位则提示不能允许

    from distutils.core import setup

    from Cython.Build import cythonize

    # name随便写,py文件要正确

    setup(name='api_sign', ext_modules=cythonize('api_sign.py'))

    2.执行命令生成pyd文件:

    python setup.py build_ext --inplace

    """

    执行后会生成pyd文件,可修改文件名,但不能去掉和py文件相同的部分

    引用该pyd文件需要放入模块下,通过模块引入该文件,不能直接引用

    """

    3.调用pyd文件:

    from Encryption import api_sign as i

    a, b = i.encrypt('12', '213')

    print(a)print(b)

    api_sign.py文件是需要生成pyd的文件

    生成后的pyd文件需要放到模块下引用,不能直接引用

    当引用pyd文件报如下错误时:

    1.ImportError: DLL load failed: 找不到指定的模块

    2.找不到指定程序

    ……

    解决流程:

    1.确认引用的路径是否正确

    2.确认引用的pyd是否引用了需要安装的模块,如果是,需要把引用的pyd路径也指定(sys.path.append("路径"))

    3.若上面这些步骤还不行,直接把python升级到3.7.4最新版本

    坑爹的…………

    我的python是3.6.X的,一直引用pyd文件提示找不到模块~~断断续续折腾了几周没搞定~~

    后来用depends看引用dll间的关系,直接报错找不到python37.dll,尝试升级python试试,

    结果升级后就调用成功~~~无语~无语~

    展开全文
  • pyc文件呢,很容易就被反编译了,pyd文件和一般dll类似,不容易被反编译。 生成pyd很容易,网上百度一堆堆,但是调用pyd文件会遇到好多错误。 在此贴一下生成pyd到调用pyd文件的方法供参考:  1.新建一个setup....
  • Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。...但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd...
  • py文件的编译 反编译

    2020-08-24 14:53:40
    对pyc文件进行反编译 uncompyle6 test.pyc > test1.py 生成pyd pyd反编译难度太大 from distutils.core import setup from Cython.Build import cythonize setup( name = 'any words.....', ext_modules = ...
  • 但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd格式。pyd格式是D语言(C/C++综合进化版本)生成的二进制文件,实际也会是dll文件。该文件目前...
  • Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。...但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd...
  • 介绍对于python这门语言来说,本身没有很好的加密方法,就算是pyc和pyo字节码文件也可以很轻松的用软件反编译出来。推荐反编译软件是Easy Python Decompiler。软件的下载地址是:...
  • Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。...但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd...
  • pyd文件 pyd实际上就是dll文件,只是后缀名不同。 可以采用od,ida之类的反编译。 .pyd文件是由.c文件生成的;.c由.py或.pyx文件生成。...python,pyd文件如何实现反编译? [原创]python编译后的pyd爆破 ...
  • Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。...但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd...
  • Python生成pyd文件

    千次阅读 2018-01-31 20:04:00
    Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。那么要对Python代码进行混淆...但很容易被反编译。 pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。 pyo和pyc差不多,也容易被反...
  • 1、先准备一个pyinstxtractor.py文件,用来把exe解析成pyd源码如下:2、把它放到要反编译的exe所在位置3、在命令窗口输入:python pyinstxtractor.py xxx.exe4、在目录下生成反编译后的文件:xx.exe_extracted生成...
  • 1、先准备一个pyinstxtractor.py文件,用来把exe解析成pyd源码如下:2、把它放到要反编译的exe所在位置3、在命令窗口输入:python pyinstxtractor.py xxx.exe4、在目录下生成反编译后的文件:xx.exe_extracted生成...
  • 转摘链接 本文更新地址 一、编译 1.... 2. 编译为 pyo 或者 opt-n.pyc 文件 3. 编译成 pyd 或 so 链接库... pyc 、pyo 文件反编译 在线网站:https://tool.lu/pyc/ uncompyle6 其他 Python 反编译工具 u
  • 最近在学习openCV发现,想查看源码时,发现程序是通过pyd格式的文件编译过的,于是去网上了解一下,pyd文件如何生成以及其作用。作用有2方面:1.安全性更高:通过pyd生成的文件,已变成了dll文件,无法查看源码,...
  • 一、目的:将项目所有的代码,编译成一个独立的二进制文件包,并防止反编译。二、示例项目结构:➜ cpdemo tree . |-- libs | |-- A | | `-- a.py | `-- B | `-- b.py `-- setup |-- build_pyd.py `-- main.py 4 ...
  • 最近碰到个需求,需要把Python代码和用到的资源文件进行混淆加密打包。 混淆代码,可以使用oxyry,...pyc是脚本文件经过编译器编译之后得到的二进制文件,很容易被反编译; pyo是脚本文件开启优化编译选项(..
  • 1 - Python编译过程涉及的文件 py pyc pyo pyd pyz 2 - 生成pyc文件 生成pyc文件的过程: 生成pyc文件的方法: 生成pyc文件示例: 3 - 生成pyo文件 命令示例: 示例:python3.6生成pyo文件 ...
  • python -pyd编译-防破解,亲测可用

    千次阅读 2020-06-23 22:27:08
    安全性来说,pyd是二进制文件,只能被反编译,所以只能看到汇编。 所以只介绍pyd 的编译。 2.编译环境 系统:win10 python:3.6 首先安装cython:pip install Cython 2.1修改文件 指定vcvarsall.bat目录 (如果...
  • 采用2个手段,小模块生成pyd,主程序打包时加密一、python程序打包成pydstep1:创建新文件test.py#coding:utf-8def speak():print("hello world")step2:再创建文件setup.pyfrom distutils.core import setupfrom ...
  • 操作环境-python2.7.15,win7-64 由于某些原因,不想或者不能用python3,所以脚本...然后看到了pyd,这个是开发cython生成的二进制脚本,可以直接当库导入,安全性来说,pyd是二进制文件,只能被反编译 安装: ...
  • pyc文件能够被反编译成为源代码,这样对于一些企业开发的软件来说非常危险(这也是为什么Python不常被软件开发公司使用),今天我们要学习一下Python保护源代码的一招:py转pyd文件。 我们需要用到的工具有: ...
  • 操作环境-python2.7.15,win7-64由于某些原因,不想或者不能用python3,所以脚本...这个是开发cython生成的二进制脚本,可以直接当库导入,安全性来说,pyd是二进制文件,只能被反编译安装:首先安装cython:pip in...
  • python将py编译成so方法转载 2017年09月08日10:13:29 标签:pyd /ipython 849python:...python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

反编译pyd文件