Python反编译的两种实现方式

 更新时间:2024年06月21日 09:34:46   作者:偶尔敲代码  
这篇文章主要介绍了Python反编译的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python反编译两种方式

以前听说py编译的程序不安全,容易被反。这两天刮台风了,闲着也是闲着,自己也跟着捣鼓了一番。

为了不给别人带来不好的影响,我编译我自己写的代码来做测试,代码头部如下图,引用了几个常见库:

.

用pyinstaller进行完整打包:

pyinstaller -F g.py

.

打包结束,在dist目录得到目标程序g.exe:

.

接下来用两种方式进行反编译:

一、pyinstxtractor+uncompyle6方式

将pyinstxtractor.py和目标exe放在同一个目录

.

在目录进入命令行窗口,输入命令:

python pyinstxtractor.py g.exe

.

会在当前目录生成一个目标_extracted 的文件夹,里面有一大堆文件,其中有一个与目标exe同名的pyc文件,我这边就是g.pyc。

安装uncompyle6库,按以下命令安装:

pip install uncompyle6

将pyc文件反编译为py文件:

在第2步的目标_extracted 文件夹进入命令行窗口,输入以下命令,后面的.py文件名随意:

uncompyle6 g.pyc>g.py

.

回车后在当前目录生成对应的py文件:

.

打开瞧一瞧,和源文件对比一下,头部多了一些uncompyle6的信息,其余的和源文件一毛一样。

.

二、pycdc方式

前面还是同上面的方式,得到pyc文件(步骤2);

将pycdc.exe和pyc文件放同一目录,进入命令行窗口,输入以下命令:

pycdc.exe g.pyc > g.txt

反编译结果被输出到g.txt中,当然后缀也可以改成.py啥的。

.

对比结果,这种方式好像代码都变成纯文本了,除了一些换行会错乱,其他的还原度还是极好的。

.

总结

以上只是最基本的两种反编译Python打包的exe方式,也都顺利拿到我们想要的py源码。

实际反编译的时候,可能会遇到很多情况,比如加密、magic头变化、依赖库、py版本等问题,只能相应的再去找解决办法,见招拆招了。

当然,网上还有很多方法,比如pyi-archive_viewer提取pyc文件,但大体思路都是exe > pyc > py。

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python使用urllib模块的urlopen超时问题解决方法

    Python使用urllib模块的urlopen超时问题解决方法

    这篇文章主要介绍了Python使用urllib模块的urlopen超时问题解决方法,本文使用socket模块中的setdefaulttimeout函数解决了超时问题,需要的朋友可以参考下
    2014-11-11
  • python机器学习之神经网络

    python机器学习之神经网络

    这篇文章主要介绍了python机器学习之神经网络,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-04-04
  • Python调用ChatGPT的API实现文章生成

    Python调用ChatGPT的API实现文章生成

    最近ChatGPT大火,在3.5版本后开放了接口API,所以很多人开始进行实操,这里我就用python来为大家实现一下,如何调用API并提问返回文章的说明
    2023-03-03
  • Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)

    Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.

    这篇文章主要介绍了Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程(显卡MX250+CUDA9.0+cudnn),本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Selenium元素的常用操作方法分析

    Selenium元素的常用操作方法分析

    这篇文章主要介绍了Selenium元素的常用操作方法,结合实例形式分析Selenium在获取元素之后针对点击、输入、提交、属性获取等常见操作相关实现技巧,需要的朋友可以参考下
    2018-08-08
  • Python 实现两个服务器之间文件的上传方法

    Python 实现两个服务器之间文件的上传方法

    今天小编就为大家分享一篇Python 实现两个服务器之间文件的上传方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python监控nginx端口和进程状态

    python监控nginx端口和进程状态

    这篇文章主要为大家详细介绍了python监控nginx端口和进程状态,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • python通过cookie模拟已登录状态的初步研究

    python通过cookie模拟已登录状态的初步研究

    对于那些需要在登录环境下进行的爬虫操作,模拟登陆或伪装已登录状态是一个刚性需求。这篇文章主要介绍了python通过cookie模拟已登录状态的相关资料,需要的朋友可以参考下
    2016-11-11
  • 使用Python实现遗传算法的完整代码

    使用Python实现遗传算法的完整代码

    这篇文章主要介绍了使用Python实现遗传算法,其本质是一种高效、并行、全局搜索的方法,自适应的控制搜索过程以求得最优解,需要的朋友可以参考下
    2023-03-03
  • Python 如何调试程序崩溃错误

    Python 如何调试程序崩溃错误

    这篇文章主要介绍了Python 如何调试程序崩溃错误,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08

最新评论