IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 记一次pyc反汇编的层出不穷的问题。 -> 正文阅读

[Python知识库]记一次pyc反汇编的层出不穷的问题。

这个其实来自于西电新生赛的Reverse的第四题Realezpy。题目不难,但是因为是第一次入门,还是碰到了很多烦人的小问题。

?一、软件选择。

因为这个是python的反编译问题,所以IDA和die、ExeinfoPe这些工具就没用了。

我显示在bing上搜索,参照这位大佬的做法开始实验((7条消息) pyc文件逆向_攻防世界python-trade_逆向之旅010_duang_duang_yang的博客-CSDN博客)。//大佬贴心的把工具也贴出来了,很不错。

?正当我满心欢喜,把.pyc文件拖入的时候却显示了错误。Invalid pyc/pyo file - Magic value mismatch!

?然后我又去浏览器搜索,发现这个是因为每个 *.pyc 文件都有一个magic head,PyInstaller 生成 *.exe 的时候会把*.pyc 的 magic 部分去掉,在反编译的时候需要补齐。

那既然要补齐,起码得先打开这个十六进制文件,但是我用记事本、notepad++都打不开,于是我有搜索发现010 Editor可以用来干这个事情。然后又是一通搜教程下载。?费好大劲可算是配置好了。然后用它打开.pyc文件,想着马上就成功了,然后开始手动补齐吧。

那怎么手动补齐? ??搜到的回答这么说的:使用16进制模式查看主文件与主文件目录下的 struct 文件,需要在主文件头插入16个字节与 struct文件保持一致(其中前4个字节是Python编译版本,要完全一致)注意模板文件仅需要插入8个字节,与 struct 文件保持一致。

但是问题来了,struct文件压根就没有,这个.pyc文件又不是我自己拿.exe文件做出来的,我去哪找struct文件,而且我也不知道这个是拿哪个python版本做出来的,这条路又死了。?

二、?星星之火。

绝望之际发现了好多和.pyc反编译.py的文章都提到了一个词uncompyle6,就连题目的提示都和uncompy好像好像。甚至刚开始用的哪个软件的deconpiler engine(反编译引擎)都是uncompyle6。

?然后又是一通搜索,总结发现uncomply6就是将.pyc反编译成.py的核心利器。(uncompyle6版本比uncompyle2更高)

其中这篇文章最精简、最核心、对小白最友好。uncompyle6安装使用方法 - pcat - 博客园 (cnblogs.com)

然后就是打开cmd去pip安装uncompyle6。为了直接输入命令,又去将uncompyle配置环境变量。(这个只要拉到python\Scripts里面就可以)。

结果重点来了:这个东西不支持python3.8以上的版本,看着自己python3.9陷入了沉思,rnm。星星之火又灭了。

?三、python的版本

????????那没办法,只能版本回退了,然后一通搜索发现又得配置什么Anaconda,真的经不起折腾了,而且我不知道这样回退的话用不用去别的python编辑器里面再重新设置。不想再去试这个新软件和他的配套了,虽然看着不错,但是这个和我解reserve是越来越远了。

? ? ? ? 我就想着要不一台电脑装两个版本的python试试,这个还真的可以,于是我下载了2系的python。

?

?然后首要的任务就是配置环境变量,不然没法像linux那样直接在cmd里使用。

?然后就是得重命名两个名字。一个是pip.exe,一个是python.exe不能和原来的版本的那两个重名了。我改成了下面这个。

四、回归正题。(绕了半个地球,接下来可算回归解题。)

win+r打开cmd,先用2.7版本的pip5去下载uncompyle6.

然后就可以使用uncompyle6去反编译了。

输入:uncompyle6 -o? Aim.py Origin.pyc? ?(Aim.py是反编译生成的.py文件的路径,Origin.pyc是源路径)

然后可算看到了successful字眼。

?接着去桌面找生成的.py文件。

发现:?可算变成了

用notepad++打开,终于发现了熟悉的python代码。热泪纵横!绕了一大圈仔=子,最终可算回到了正道上。接下来就是找flag,flag倒是很好找。

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:07:15  更:2021-09-12 13:08:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:46:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码