python的exe反编译

驱动人生样本为python打包的exe文件,尝试反编译为py文件。

使用pyinstxtractor.py生成pyc文件。

实际尝试发现,直接反编译会报错

看到前面利用pyinstxtractor.py反编译的错误里有个提示“not a pyinstaller archive”,而用来提取的py脚本叫archive_viewer.py(使用archive_viewer.py要安装PyInstaller,通过pip install pyinstaller即可安装)

方法一、使用archive_viewer.py提取pyc

archive_viewer.py命令

#这里是archive_viewer.py可以使用的命令,这里我们用“X”提取文件
U: go Up one level
O <name>: open embedded archive name
X <name>: extract name
Q: quit

由于用PyInstaller打包后,pyc文件的前8个字节会被抹掉,所以最后要自己添加回去。

前四个字节为python编译的版本,后四个字节为时间戳。(四个字节的magic number、四个字节的timestamp)

想要获得编译版本可以查看打包文件里struct的信息,so这里还是提取出struct这个文件

用16进制编辑器打开struct文件,复制其前8个字节

添加到ii.pyc中

然后使用工具反编译pyc即可得到py。

*可用uncompyle .pyc反编译pyc文件得到py

方法二、使用pyinstxtractor.py提取pyc

直接使用pyinstxtractor.py去提取exe文件中的pyc会报错,需要去掉签名信息后再使用pyinstxtractor.py解开

首先去掉exe文件的签名

查看pyinstaller源码得知,PyInstaller首先会通过读取程序最后的数据进行识别,如果是符合格式的才会进行解析(c/Program Files/Python/Python37/Lib/site-packages/PyInstaller/archive/reader.py)

MAGIC是文件末尾开始识别的地方。

pyinstaller2.0是包括MAGIC在内的24个字节长度

pyinstaller2.1是包括MAGIC在内的88个字节长度

\014\013\012\013\016 是8进制,可转换为16进制查看

使用16进制编辑器打开svchost.exe,从最后向前搜索MEI,找到匹配MAGIC的整个结构。

从MEI开始,选中向后88个字节长度为止,剩下后面部分全都删掉(删除格式之后的数据)。

然后就完成了去签名。

最后直接用pyinstxtractor.py提取即可。这里也需要和之前一样修复头部数据,方法和上面一样。

python的exe反编译的更多相关文章

  1. exe4j生成的exe反编译成java代码

    很早以前写了一个java串口小程序,现在只有exe4j打包后的源程序了,最近又要用,折腾了一下发现其实要找回来也很简单,这里记录一下,以免以后忘记. exe4j只是将java程序,使用自己的方式打包了 ...

  2. python编译、运行、反编译pyc文件

    为了加密 .py 文件,以前一般使用打包成 exe ,但是最近发现可以将其编译成二进制文件 pyc ,虽然反编译难度不大,但是也需要一些水平 编译生成 pyc: 单个文件 代码: import py_ ...

  3. 反编译pyinstaller打包的exe安装包

    PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译 在这里分享一些技巧和经验给大家.辛苦撰文分享,转载或引用请保留本文作者信息及文章链接. 作者的环境: win ...

  4. 转载文章----IL反编译利器——Ildasm.exe和Reflector.exe:

    转载地址:http://www.cnblogs.com/yangmingming/archive/2010/02/03/1662546.html 一:Ildasm.exe简介  这一微软VS自带工具, ...

  5. 转载文章----初识Ildasm.exe——IL反编译的实用工具

    转载地址http://www.cnblogs.com/yangmingming/archive/2010/02/03/1662307.html Ildasm.exe 概要:(路径:C:\Program ...

  6. 初识Ildasm.exe——IL反编译的实用工具

    原文地址:http://www.cnblogs.com/yangmingming/archive/2010/02/03/1662307.html Ildasm.exe 概要: 一.前言: 微软的IL反 ...

  7. python编译以及反编译

    在Python2.3之前Python自带反编译的工具,高版本的貌似这个反编译的已经不能用了. 据说是在Python2.7上最好用的反编译工具uncompyle 代码地址 http://github.c ...

  8. [No000013B]初识Ildasm.exe——IL反编译的实用工具

    Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello World 的 exe 可执行文件)抽取出 IL 代码,并且 ...

  9. Java| 编译和反编译

    原文链接: http://www.yveshe.com/articles/2018/05/01/1525172129089.html 什么是编程语言? 在介绍编译和反编译之前,我们先来简单介绍下编程语 ...

随机推荐

  1. 由于ie浏览器ajax缓存 导致layui table表格重载失败的解决办法

    where: { time:new Date()//增加一个数据接口的额外参数→时间戳 }

  2. 如何使用TG Pro for Mac的自定义控制功能完全覆盖系统

    在某些情况下,可能需要完全覆盖系统风扇控制并使用自定义算法.通过将Auto Boost规则的强大功能与覆盖系统功能相结合,可以使用TG Pro.请记住,当风扇模式设置为Auto Boost时,这将完全 ...

  3. 深入理解 Java 枚举

  4. Spring Boot启动提示:org.apache.catalina.LifecycleException: A child container failed during start

    一.问题回顾 最近在做一个新项目,从git上下载导入idea后,启动项目,但是报了如下错误: java.util.concurrent.ExecutionException: org.apache.c ...

  5. 使用 ASP.NET Core MVC 创建 Web API(六)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

  6. 从properties中读取配置创建对象

    主要做两个事,从properties配置文件中读取信息,通过反射创建对象 思路主要有两种,遍历得到的属性集合,然后设置类的属性 遍历类的属性集合,从配置文件中读取(不推荐,因为类的属性有多样化,会报错 ...

  7. Python3 pickle模块用法

    pickle(python3.x)和cPickle(python2.x的模块)相当于java的序列化和反序列化操作. 常采用下面的方式使用: import pickle pickle.dump(obj ...

  8. http请求报400错误的原因分析

     在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里: 原因:1)前端提交数据的字段名称或者是字段类型 ...

  9. Eclipse如何重置窗口

    https://jingyan.baidu.com/article/915fc41459585f51394b20c3.html 在Eclipse进行开发的时候,我们经常会由于这个窗口或者那个窗口没有打 ...

  10. ElementUi中el-table分页效果

    现实的场景中很经常遇到表格el-table数据过多,为了更好的用户体验,所以我们需要用到分页,一般分页可以视数据量的大小可分为前端控制和后端控制. 先看下效果(已做脱敏处理) 图1 前端el-tabl ...