有什么方法可以反编译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反编译dll_是否可以反编译.dll / .pyd文件以提取Python源代码?相关推荐

  1. Xamarin.Android编译提示找不到mscorlib.dll.so文件

    Xamarin.Android编译提示找不到mscorlib.dll.so文件 错误信息:AOT module 'mscorlib.dll.so' not found: Cannot load lib ...

  2. python程序扩展名 py、pyc、pyo、pyd文件区别

    py是源文件,pyc是源文件编译后的文件,pyo是源文件优化编译后的文件,pyd是其他语言写的python库 python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然 ...

  3. python 打开excel并在屏幕上呈现_excel-检查文件是否在Python中打开

    excel-检查文件是否在Python中打开 在我的应用程序中,我写入一个Excel文件. 写入后,用户可以通过打开文件来查看文件. 但是,如果用户忘记了在进一步写入之前关闭文件,则会出现警告消息. ...

  4. python编译器怎么运行不在路径中的py文件_对python当中不在本路径的py文件的引用详解...

    众所周知,如果py文件不在当前路径,那么就不能import,因此,本文介绍如下两种有效的方法: 方法1: 修改环境变量,在~/.bashrc里面进行修改,然后source ~/.bashrc 方法2: ...

  5. python怎么读取pdf为文本_如何从pdf文件中提取特定文本python

    我试图摘录这段文字:DLA LAND AND MARITIME ACTIVE DEVICES DIVISION PO BOX 3990 COLUMBUS OH 43218-3990 USA Name: ...

  6. python使用FPDF包将多个图像文件写入pdf文件实战

    python使用FPDF包将多个图像文件写入pdf文件实战 目录 python使用FPDF包将多个图像文件写入pdf文件实战 #FPDF包安装

  7. Python实现GCS bucket断点续传功能,分块上传文件

    Python实现GCS bucket断点续传功能,分块上传文件 环境:Python 3.6 我有一个关于使用断点续传到Google Cloud Storage的上传速度的问题.我已经编写了一个Pyth ...

  8. python调用pyd文件_如何将.pyd文件作为python模块导入?

    我在用PyCharm.我在以下位置有一个python脚本: C:\Users\XYZ\PycharmProjects\Project1\playground.py playground.py只有一行代 ...

  9. python加密反编译_对Python源码进行加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  10. Python编译、运行、反编译pyc文件

    Python 并非完全是解释性语言,它也存在编译.先将源码文件 *.py 编译为 *.pyc,然后由 Python 的虚拟机执行.相对于 *.py 文件来说,编译为 *.pyc本质上和 *.py 没有 ...

最新文章

  1. 内存屏障linux,Linux内存屏障
  2. 编程中的一些小问题记录
  3. java main 方法不能执行,AndroidStudio无法执行Java的main函数
  4. py2.7+pyqt4开发端口检测工具
  5. 怎样给oracle表设置序列,Oracle的sequence序列在hibernate中的配置方法
  6. NSDate NSTimerZone 时区转换
  7. 几个好用的makefile 几乎可以不用修改
  8. 五种进程调度的算法实现(二)
  9. 今日头条向百度“开炮”:瞄准百度铁饭碗,上万台机器已在运作
  10. 高动态范围(High-Dynamic Range,简称HDR)
  11. 为什么苹果日历不能设置日程_iphone6提醒事项加入日历怎么不提醒我 到时
  12. c语言判断utf-8中文字符串,C语言中判断一个char*是不是utf8编码分享
  13. JAVA合并pdf,拆分pdf文档
  14. 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler...
  15. 北京理工大学计算机实验一报告,北京理工大学计算机实验一报告表
  16. JCommander(命令行参数解析工具)
  17. HTML CSS 基础知识(简要)
  18. 电脑分盘工具,扩展C盘、分盘
  19. 如何让if(a==1a==2)条件成立
  20. EDIUS教程之怎样快速设置采集应用

热门文章

  1. pix4d正射修补水面_大疆精灵4RTK航线规划技巧以及在CC、Pix4D和Photoscan数据处理教程汇总...
  2. uni-app判断运行机型动态修改样式
  3. 三极管特性——截止区、放大区、饱和区
  4. 7月SCI/SSCI期刊变动,警惕这5本被剔除
  5. ActiveMQ下载和安装
  6. 如何写好一篇技术博客
  7. EViews11.0程序安装及注意事项
  8. 微型计算机原理与接口技术 考题,微机原理与接口技术试题答案
  9. 存储器容量相关概念及计算
  10. JAVA开发环境搭建