• python代码反编译


    反编译代码

    1、找到相应得程序文件

    如果有exe或者elf格式得文件,那就直接反编译。

    如果没有找到,就找下拉去的文件夹中dist文件夹下熟悉的文件名,有可能是文件格式的,没有后缀 。

    2、提取文件

    首先需要准备pyinstxtractor.py ,下载地址:https://github.com/extremecoders-re/pyinstxtractor

    然后把下载的文件复制到需要反编译的文件夹中,在命令行输入python pyinstxtractor.py (要编译的文件名)

    在这里插入图片描述
    这时候会得到一个后缀为_extracted的文件夹,这里面就是需要的文件。
    打开之后发现里面都是pyc文件格式的,这时候我们就需要把pyc格式的文件转换为py格式的文件。

    3、转换格式

    3.1 修改文件头

    如果你报错了,那么就继续。
    在这里插入图片描述
    这种错误就是需要修改文件头,因为在压缩和解压的时候会存在文件头的丢失。

    • 因为pyc文件都是16进制,所以我们需要一些工具打开进行观察,这方面的可以进行百度,工具一抓一大把,我使用的是Notepad++ 装了一个插件HEX-Editor.

    这时候我们选择打开struct.pyc(其他的也可以,主要是用来比较,从而找到正确的文件头)
    在这里插入图片描述

    • 通过对比发现前11个字节是不一样的,这时候我们就把struct.pyc的前11字节替换需要编译的文件开头。(如果复制后发现后面两个字节是变化的,不用管,那是代表时间的。)
    • 这时候会有个问题,有些文件的开头是从e3开始的,这时候就直接把前11字节复制到文件头就可以了。

    3.2 编译

    完成后使用命令uncompyle6 当前文件名.pyc > 保存的文件名.py
    这时候文件夹中就会有文件了,这时候就可以看到代码的原始样貌了。
    但是这只是一个文件,如果是大项目的话,可能会有很多依赖包,就包括你写的函数。

    3.3 寻找依赖包

    相关依赖包都在PYZ-00.pyz文件里面。

    这时候我们需要使用到 pyi-archive_viewer.py
    这个文件在(python环境)\Scripts里,是需要安装pyinstaller的,没有安装的需要安装一下(已经安装的跳过安装)pip install pyinstaller

    安装完成后在将(python环境)\Scripts添加到环境变量path里面,这样就可以直接在命令行使用了。
    使用命令 pyi-archive_viewer.py PYZ-00.pyz然后就会进入到
    在这里插入图片描述
    然后找到自己想要编译的文件名,在?后输入x 文件名 ,然后回在下一步输入保存的文件名,后缀这里就先写上.pyc,回车之后返回文件夹就会看到相应的文件。
    在这里插入图片描述

    3.4 转换格式

    我们需要安装uncompyle6,是一个python库,pip conda都可以。

    安装完成后,这在当前目录下使用cmd命令行 输入 uncompyle6 当前文件名.pyc > 转换完成保存的文件名.py

    PS:在反编译中发现一个严重的问题,如果在PYZ-00.pyz的需要编译的依赖包非常多,那只能一个个的取出来,非常的SB,开头的文件提取,以及后面的修改文件头、转换格式都是可以编程快速进行的,但是在修改文件头的时候还是出了点问题,后续如果完成了自动化的过程,会再添加到文章中。

  • 相关阅读:
    数据治理-组织触点
    Git技法:.gitignore、移除暂存与撤销修改
    使用easyx制作一个绘画程序
    图扑智慧交通:数字化地铁大屏管控运维平台
    Spring的常见注解
    纯Vue实现网页日常任务清单小功能(数据存储在浏览器)
    做SEO排名优化多久会有效果?实例分析!
    Java读写Jar
    面向订单生产型电子制造企业,如何快速响应客户?
    尚硅谷SpringBoot3笔记
  • 原文地址:https://blog.csdn.net/weixin_44513830/article/details/126023425