精华内容
下载资源
问答
  • windows通过whl文件安装dlib不需要编译,通过pip install dlib*.whl安装。1、下载dlib*.whl文件whl文件下载链接:https://pypi.python.org/pypi/dlib/18.17.100只有python2.7、python3.4和python3.5。根据自己电脑...

    windows通过whl文件安装dlib不需要编译,通过pip install dlib*.whl安装。

    1、下载dlib*.whl文件

    whl文件下载链接:https://pypi.python.org/pypi/dlib/18.17.100


    只有python2.7、python3.4和python3.5。根据自己电脑python的版本下载合适的whl文件。

    2、安装dlib*.whl

    pip install dlib*.whl

    3、验证dlib是否安装成功


    如果没有报错,则表示安装成功。

    注意事项:

    1、在使用pip install安装whl文件的时候,如果出现平台不支持的提示,查看python的版本和下载whl文件的版本是否匹配。

    展开全文
  • python程序反编译

    万次阅读 2018-09-19 21:05:38
    python2,需要补8个字节,后面的4个字节是时间戳,前面的4个字节是python编译的版本。。 当然这里有个小技巧 前4个字节可以通过struct文件获取 所以前面的是\x03\xf3\x0d\x0a。。后面的时间戳也可以用00...

    目的:将使用pyinstaller生成的exe还原成.py文件

     

    1、从生成的exe中提取出.pyc文件

    这里的方法有很多。。。可以使用pyinstxtractor。。也可以使用官方的archive_viewer.py(文末有下载)

    我这里使用的是官方的archive_viewer.py。。

    https://github.com/pyinstaller/pyinstaller/blob/develop/PyInstaller/utils/cliutils/archive_viewer.py

     

    这里举的例子是某个师兄发出来的抢课的程序(python写的)。。。界面是这样的

    (1)在程序同目录下打开cmd。。执行python archive_viewer.py qiangke.exe(这里是程序的名字)

    这里有四个可以用的命令,分别是:

    U: go Up one level
    O <name>: open embedded archive name
    X <name>: extract name
    Q: quit

    这里需要注意的一点是主要关注最后一行和出现程序名字的那一行。。。然后输入命令

    x (程序名字) 回车之后输入需要生成的pyc文件名

    至此。。第一步完成。。。

     

    2、反编译pyc文件

    由于每个pyc文件都有一个magic head,pyinstaller生成exe的时候会把pyc的magic部分去掉,在反编译的时候需要自己补齐。python2,需要补8个字节,后面的4个字节是时间戳,前面的4个字节是python编译的版本。。

    当然这里有个小技巧

    前4个字节可以通过struct文件获取

    所以前面的是\x03\xf3\x0d\x0a。。后面的时间戳也可以用00 00 00 00代替

    接着使用010 editor或者winhex打开pyc文件。。添加八个字节并保存

    3、还原py文件

    (1)可以使用在线网站直接上传还原。。

    https://tool.lu/pyc/

    (2)使用uncompyle。。。

    反编译:

    uncompyle6   -o   .   pyc文件名

    说明:

    -o后面可以加上文件路径,代表反编译文件输出的位置,“.”表示输出到当前文件夹

    反编译成功后会返回“# Successfully decompiled file”

    可以使用uncompyle6 --help查看其他参数

    没安装的先使用pip安装

    pip install uncompyle6

    然后同目录下打开控制台

    uncompyle6 -o . qiangke.pyc

    同目录下就会生成qiangke.py

    工具:

    https://pan.baidu.com/s/1IjavH7F0l-jDCcnYIIEWtA

    展开全文
  • Python 执行文件编译为exe或者sh文件

    千次阅读 2020-09-04 09:05:05
    Python 执行文件编译为Windows的exe或者Linux的sh文件,pyinstaller参数介绍,常用的主要是-F、-p、-i、-w这几个参数: -a:包含编码.在支持Unicode的python版本上默认包含所有的编码 -c:使用控制台子系统执行...

    0x00 前言

    Python 执行文件编译为Windows的exe或者Linux的sh文件,pyinstaller参数介绍,常用的主要是-F、-p、-i、-w这几个参数:

    -a:不包含编码.在支持Unicode的python版本上默认包含所有的编码
    -c:使用控制台子系统执行(默认)(只对Windows有效)
    -d:产生debug版本的可执行文件
    -i :指定打包程序使用的图标(icon)文件
    -F:打包成可执行程序
    -h:查看帮助
    -p:添加使用的第三方库路径
    -v:查看 PyInstaller 版本

    0x01 封装成Windows EXE

    在Windows环境下,打包成Windows可执行程序(需要提前安装好相关的依赖包)
    pyinstaller -F ALB.py
    当前目录下的dist目录下生成ALB.exe

    0x02 封装成Linux  sh 文件

    在Linux环境下,打包成Linux可执行程序(需要提前安装好相关的依赖包)
    pyinstaller -F ALB.py

    当前目录下的dist目录下生成ALB

    将相关的配置写入 L7-Inspector.spec中的data,('D:\\code\\L7-Inspector\\payloads','.')

    pyinstaller -D L7-Inspector.spec --clean -w

    0x03 参考文章

    https://zhuanlan.zhihu.com/p/85760495

    https://blog.csdn.net/x_w_haohan/article/details/99233561

    https://blog.csdn.net/Iv_zzy/article/details/107462210

    展开全文
  • python文件编译与pyc反编译

    千次阅读 2020-07-10 17:02:41
    当我们发布系统的时候想让别人看到源代码,就需要将py文件编译生成pyc文件,对外只提供pyc文件。同样,如果拿到一个python程序,只有pyc文件,我们就无法看到源码,希望有办法反编译pyc文件以获得源码。 既然有反...

    pyc是编译py之后生成的二进制文件。当我们发布系统的时候不想让别人看到源代码,就需要将py文件编译生成pyc文件,对外只提供pyc文件。同样,如果拿到一个python程序,只有pyc文件,我们就无法看到源码,希望有办法反编译pyc文件以获得源码。

    既然有反编译的需求,为了保护pyc文件不被反编译,我们又希望找到一个方法来防止pyc文件被反编译。

    本文介绍了如何将py文件编译成pyc和pyo文件,也介绍了如何反编译pyc文件, 又给出了一种字节码混淆方法来防止pyc文件被反编译。

     

    1 编译py文件到pyc和pyo

    pyc是编译py之后生成的二进制文件,由python虚拟机来执行的。当我们发布系统的时候不想让别人看到源代码,就需要将py文件编译生成pyc文件,对外只提供pyc文件。

    同时,在模块被加载时,.pyc文件比.py文件更快

    但是pyc的内容跟python的版本相关,不同的版本编译后的pyc文件不同,2.5编译的pyc文件不能到3.5上执行.

     

     

    发布python软件的过程为:

    1. 生产pyc文件: python -m compileall .

    2. 删除py文件: find . -name “*.py” |xargs rm -rf

    3. 删除pycache目录: find . -name “pycache” |xargs rm -rf

    1.1 Python2 编译

    命令:

    python -m py_compile file.py

    python -m py_compile {file1,file2}.py

    编译完成后,生成的 .pyc文件在当前目录。

     

    可以使用-O或者-OO转换python命令来减少编译模块的大小

        -O转换会帮你去掉assert语句

        -OO转换会帮你去掉assert语句和__doc__文档字符串

    由于一些程序可能依赖于assert语句或文档字符串,应该在确认需要的情况下使用这些选项。

    例如 python –O -m py_compile file.py 会在本目录生成 file.pyo

     

    1.2 python3 编译

    Python3的编译和python2一样,只是在python3之后编译后的文件在pycache目录下,而不是与源文件同一目录。

    那么如何让python3实现生成的pyc与源代码在同一目录呢?可以加上-b参数,例如

    Python3 -m py_compile -b file.py

     

     

    1.3 批量编译

    python -m compileall DIR

    python3 -m compileall –b DIR

    DIR为需要编译的目录

    例如: python -m compileall .

     

    参数说明:

    usage: python compileall.py [-l] [-f] [-q] [-d destdir] [-x regexp] [-i list] [directory|file ...]

     

    arguments: zero or more file and directory names to compile; if no arguments given,

               defaults to the equivalent of -l sys.path

     

    options:

    -l: don't recurse into subdirectories

    -f: force rebuild even if timestamps are up-to-date

    -q: output only error messages

    -d destdir: directory to prepend to file paths for use in compile-time tracebacks and in

                runtime tracebacks in cases where the source file is unavailable

    -x regexp: skip files matching the regular expression regexp; the regexp is searched for

               in the full path of each file considered for compilation

    -i file: add all the files and directories listed in file to the list considered for

             compilation; if "-", names are read from stdin

    1.4 代码实现

    单文件编译:

    import py_compile
    py_compile.compile('path') //path
    是包括.py文件名的路径

    批量编译:

          import compileall

    compileall.compile_dir('$dir')

     

    2反编译pyc

    如果只有pyc文件,我们是无法直接查看内容的,这时,就需要反编译工具将pyc文件反编译成py源程序。 这里介绍uncompyle6反编译工具。Pyc文件能够反编译的前提是文件没有被加密或者代码混淆。

    2.1 Uncompyle6安装

    > git clone https://github.com/rocky/python-uncompyle6.git

    > git checkout python-2.4

    > sudo python setup.py install

    如果没有报错,则安装成功了。

    2.2反编译

    执行命令:

    >uncompyle6 -o . *.pyc

    这时会在当前目录生成.py源文件。

    3 防止反编译pyc文件

    如何防止pyc文件被反编译呢? 这里介绍字节码混淆的方法,此方法能够抵挡低端的反编译手段,例如第2章的方法,但是,要到高手,还是抵挡不住。

    字节码混淆可以非常容易的欺骗通常的反汇编器和反编译器,同时不影响代码的正常执行。下面这个例子展示了如何欺骗Uncompyle6反编译器以及dis反汇编器:

    #一个简单的Python应用 sample1.py

    print 'Hello World'

    对其进行编译:

    python -m py_compile sample1.py

    对编译后的sample1.pyc使用Python内置dis模块反汇编:

          >>> import marshal,dis

    >>> fd = open('sample1.pyc', 'rb')

    >>> fd.seek(8)

    >>> sample1_code_obj = marshal.load(fd)

    >>> fd.close()

    >>> dis.dis(sample1_code_obj)

      1           0 LOAD_CONST               0 ('Hello World')

                  3 PRINT_ITEM

                  4 PRINT_NEWLINE

                  5 LOAD_CONST               1 (None)

                  8 RETURN_VALUE

    >>>

     

    以上的汇编代码笔者肉眼反汇编的结果如下:

    0 LOAD_CONST     0 ('Hello World') #加载co_consts[0]到栈顶,co_consts[0]存储着常量字符串'Hello World'

    3 PRINT_ITEM                       #打印栈顶到sys.stdout,即print 'Hello World'

    4 PRINT_NEWLINE                    #打印新行到sys.stdout,此指令因print语句而由编译器自动生成

    5 LOAD_CONST     1 (None)          #加载co_consts[1]到栈顶,co_consts[1]存储着None

    8 RETURN_VALUE                     #将栈顶返回给调用者,此两条指令为编译器自动生成

     

    现在我们修改sample1.pyc,在程序入口增加一条绝对跳转指令(可以使用UltraEdit 16进制插入功能修改pyc文件,”JUMP_ABSOLUTE 3”在Python 2.7中对应的字节码为 0x71 0x03 0x00。修改code string内容的同时应修改code string的长度,此处增加了一个3字节指令),使用内置dis模块反汇编的结果如下:

      1           0 JUMP_ABSOLUTE            3                 #自行添加

            >>    3 LOAD_CONST               0 ('Hello World')

                  6 PRINT_ITEM

                  7 PRINT_NEWLINE

                  8 LOAD_CONST               1 (None)

                 11 RETURN_VALUE

     

    如果读者对汇编代码有一定认识,就会明白此处的绝对跳转对Python虚拟机执行此程序基本没有影响(除了增加一个指令执行周期),然而这个绝对跳转将成功欺骗反编译器。使用Uncompyle6反编译的结果如下:

    <<< Error: Decompiling stopped due to <class 'uncompyle6.semantics.pysource.ParserError'>

    如果一个pyc文件无法被反编译,初级的破解者可能就会止步于此了,但对于有经验的工程师来说这还远远不够。同样的,我们还要让通常的反汇编器也无法工作才行。按下面的汇编代码继续加工上面的sample1.pyc。

    |   1           0 JUMP_ABSOLUTE        [71 06 00]     6

    |               3 LOAD_CONST           [64 FF FF] 65535 (FAKE!)

    |         >>    6 LOAD_CONST           [64 00 00]     0 (Hello World)

    |               9 PRINT_ITEM           [47 -- --]

    |              10 PRINT_NEWLINE        [48 -- --]

    |              11 LOAD_CONST           [64 01 00]     1 (None)

    |              14 RETURN_VALUE         [53 -- --]

     

    以上第二条指令的意思是加载code object常量表的第65535项到栈顶。在上述sample1.pyc中,常量表的长度为2,下标65535已超出常量表的范围,所以这是条非法指令。但由于第一条绝对跳转的存在,第二条指令永远都不会被执行。通常的反汇编器如dis会尽全力列举有用的信息,但并不能理解实际执行的控制流,当反汇编器尝试反汇编第二条指令时,会试着去读取code object常量表的第65535项并且抛出一个’tuple index out of range’的意外。Python内置dis模块的出错信息如下:

    >>> fd = open('sample1.pyc', 'rb')

    >>> fd.seek(8)

    >>> import marshal,dis

    >>> sample1_code_obj = marshal.load(fd)

    >>> dis.dis(sample1_code_obj)

      1           0 JUMP_ABSOLUTE            6

                  3 LOAD_CONST           65535

    Traceback (most recent call last):

      File "<stdin>", line 1, in <module>

      File "C:\Python27\lib\dis.py", line 43, in dis

        disassemble(x)

      File "C:\Python27\lib\dis.py", line 96, in disassemble

        print '(' + repr(co.co_consts[oparg]) + ')',

    IndexError: tuple index out of range

    >>>

     

    现在Uncompyle6和dis都被欺骗了,代码得到了有效的保护。

    4 Reference

    https://blog.csdn.net/ir0nf1st/article/details/61650984

    https://www.cnblogs.com/nickchen121/p/10802465.html

    https://www.cnblogs.com/dkblog/archive/2009/04/16/1980757.html

    展开全文
  • 谈谈Python编译和反编译

    千次阅读 2020-02-26 15:47:59
    Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安装,同样能正常...
  • Python——安装编译环境

    千次阅读 2017-11-12 17:08:12
    安装Python编译环境,以及使用过程中出现的一些问题。
  • python3交叉编译

    千次阅读 2019-09-06 11:49:14
    有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必可少的KaTeX数学...
  • 回答这个问题前,应该先弄清楚什么编译型语言,什么是解释性语言。 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译。 不过它是针对特定CPU...
  • python3.7.4反编译生成的.exe

    千次阅读 2019-10-18 14:49:18
    今天尝试着反编译别人发的小工具(python生成的exe文件)。 第一步:上搜索引擎搜一下如何反编译,大概总结一下:一、获取python的.pyc(即将exe解压) 参考链接:https://www.jianshu.com/p/4da8dada77bc 推荐另...
  • Python程序源码不需要编译,可以直接从源代码运行程序。Python解释器将源代码转换字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行。 下面用一张图来解释这个过程: 当我们运行Python文...
  • 本文介绍经常用的sublime编辑器作为PythonIDE时如何快速编译代码并得到执行结果,前提是本机已经安装了python,并加入了环境变量,命令行下输入python,会有如下输出:    只需一步就搞定,如图打开sublime,...
  • python2.7源码编译安装

    千次阅读 2018-09-04 23:14:16
    1.官网地址 ...下载python源码包 # yum install -y wget # wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz 2.安装必要依赖 # yum install -y gcc zlib zlib-devel openssl ...
  • Python源码包编译安装

    千次阅读 2018-07-13 11:30:10
    Python下载 ... Python-2.7.13.tgz解压、配置、编译、安装 tar -zxvf Python-2.7.13.tgz cd Python-2.7.13 ./configure --prefix=/usr/local --enable-shared make make install Linu...
  • python3.7反编译生成的.exe

    千次阅读 热门讨论 2019-07-25 23:41:50
    今天试着反编译一个群友用python写的.exe,上流程。 该网友做了一个搜索引擎,功能如图: 然后 自然是第一步上搜索引擎搜一下如何反编译,大概总结一下: 1.获取python的.pyc 这里用到的工具是:pyinstxtractor.py ...
  • Python 在线反编译工具

    万次阅读 2015-06-16 10:38:27
    今天在Ubuntu下面用Multi-Mechanize写...各种途径想找回被删除的文件,但是都很麻烦,就在我放弃准备从头再来的时候,看到了之前编译时留下的pyc文件,灵光一现,试试能能反编译呢?度娘告诉我,pyc文件的反编译很容
  • python3编译py文件pyc

    千次阅读 2019-04-10 17:02:54
    python3.2以后,使用python3 -m compileall命令编译生成的pyc文件会带着版本号,经处理无法运行,可使用命令: python3 -m compileall -b . 或增加优化项:-O python3 -O -m compileall -b . 来把当前目录下...
  • python交叉编译过程记录

    千次阅读 2016-03-06 13:33:19
    python的交叉编译参数
  • 回答这个问题前,我们先弄清楚什么编译型语言,什么是解释型语言。 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译。不过它是针对特定...
  • Python程序伪编译与打包

    千次阅读 2019-04-10 20:07:23
    众所周知,Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public License)协议。...这方面的技术主要有两种: 一种方法是把Python程序伪编译成扩展名pyc的字节码文件;一种是通过py2exe、pyins...
  • 将Ultraedit设置为Python/Java编译环境

    千次阅读 2013-09-26 15:07:17
    Python编译环境的配置如下,JAVA编译环境的设置于Python相似(replace the word python to java will done!)。 1. 菜单项选择,高级->工具配置 2.如下设置“命令” 菜单项名称:运行python程序 命令行: python %n%...
  • 在ubuntu20.04下编译安装python2.7.17以编译Android4.4.2 2020/2/6 06 17:09 现在拿到的是测试版(非正式版/稳定版)。因此无法通过apt-get来安装python2.7。 非常时期有非常办法,直接源代码安装了! 一、下载:...
  • fxxk dbus-python已经deprecated了 请使用pydbus
  • 最近遇到一个问题,在没有安装相对应python版本的机器上运行编译pythonx.lib
  • 要想将Python解释器移植到Android平台,首先要做的就是将Python源码用NDK工具交叉编译为Android平台的二进制库。目前官方是没有提供对Android平台的支持的,但新的版本已经在考虑对Android提供支持,参考文档 API 24...
  • 重新编译Python

    千次阅读 2017-06-23 12:12:36
    原文出自Stack Overflow: ... 在Linux中配置python环境时遇到些稀碎稀碎的问题,google后好多解决办法都需要重新编译pythonpython3.5例,重新编译方式如下
  • 编译安装python

    千次阅读 2011-11-01 21:10:23
    如果需要使用高版本的python需要自己 编译并安装 编译python需要先安装 编译环境 使用 yum install gcc gcc-c++ autoconf automake 来安装编译环境 下载python. 官网的python下载页面打开了. ...
  • 有时python需要引用go的一些开源库,这时就需要go编译python可调用的库 go代码 package main//包必须是main import( &quot;C&quot;//需要C库的支持,方便类型转换 ) func main(){} //非常...
  • Python自动化编译安装软件脚本

    千次阅读 2018-03-14 10:11:00
    编译安装python为例,代码示下
  • python将py编译成so方法

    万次阅读 2017-09-08 10:13:29
     python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤重要. 准备工作  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 388,275
精华内容 155,310
关键字:

为什么python不需要编译

python 订阅