python逆向常规解题方法

(一)解包

有两种方式,其中py2exe只能用python版本

(在我的电脑上要先删除PYTHONHOME和路径才能用,删除该路径和path后打开py2exe所在文件夹,输入python2 unpy2exe.py exe路径即可)

pyinstaller:进入pyinstxtractor.py所在文件夹,输入python pyinstxtractor.py exe路径即可

(二)修补文件头

通常情况下struct中的文件头与pyc文件缺失的文件头前16位相同,复制粘贴进去即可

 

 

 

 

 

 如上图例子,将bird加pyc后缀保存即可

(三)反编译

可以直接用pyc在线反编译,但用软件效果更好

(1)uncompyle6

只支持3.8及以下版本的python

 

 

 

 

 

 图示为在kail和windos上的使用例子。

(2)pycdc

pycdc只支持3.9及以上版本的python

使用方法:进入pycdc可执行程序所在文件夹下,输入pycdc 加pyc文件路径即可

例:

 

 

 #pycdc的打包方法可参考 https://blog.csdn.net/qq_63585949/article/details/127080253

(三)将pyc转换成字节码

Python 代码先被编译为字节码后,再由Python虚拟机来执行字节码, Python的字节码是一种类似汇编指令的中间语言, 一个Python语句会对应若干字节码指令,虚拟机一条一条执行字节码指令, 从而完成程序执行。Python dis 模块支持对Python代码进行反汇编, 生成字节码指令。

因此,根据语法可以把编译出来的python字节码手搓成源码。

字节码获取方法:使用pycdump。

进入pycdump文件夹下,运行 python dump.py + pyc文件路径

 

 以上是写python逆向的常见方法步骤,欢迎补充~

 

posted @ 2023-04-09 22:14  wiiish  阅读(237)  评论(0)    收藏  举报