python_exe解压包 提取码:bbxb
Pyinstaller介绍
PyInstaller是一个开源的Python程序打包工具,它能够将Python应用程序打包成独立的执行文件,无需
依赖Python解释器即可在多种操作系统上运行。这对于分发Python应用程序非常有用,因为用户无需安装
Python或应用程序所依赖的库,就可以直接运行程序。
经过 PyInstaller 打包的 .exe 文件不能直接用 IDA Pro 顺利分析,因为 PyInstaller 将 Python 字
节码和依赖打包成机器码执行文件,而 IDA Pro 主要用于分析机器码,对字节码的直接分析支持有限,且
打包过程中可能包含的混淆和加密技术增加了分析的难度。
Pyinstaller解包方法(羊城杯login)
pyc文件恢复
在将python文件打包成exe文件的过程中,会抹去pyc文件前面的部分信息,所以在反编译之前需要检查并添
加上这部分信息。
抹去的信息内容可以从struct文件中获取,利用010editor添加这部分信息。
方法一(利用pyinstxtractor. py):
python pyinstxtractor. py target. exe
方法二(archive_viewer. py):
pos:文件在 . exe 文件中的起始位置。
length:文件在 . exe 文件中的长度(压缩后的长度)。
uncompressed:文件解压后的原始长度。
iscompressed:一个标志,指示文件是否被压缩。
type :文件类型。
name:文件或模块的名称。
python archive_viewer. py target. exe
方法三:
直接使用 EasyPythonDecompiler 工具,可以直接查看 . exe 文件中的内容,并提取出 . pyc 文件。
反编译pyc文件
pip install uncompyle6
uncompyle6 login. pyc
演示案例:羊城杯login
利用 exeinfo 查看文件的PE信息
利用 pyinstxtractor.py 解包pyc文件
利用 uncompyle6 反编译pyc文件
根据反编译文件 逆向flag
python pyinstxtractor. py login. exe
uncompyle6 login. pyc
源码如下:
import sys
input1 = input ( "input something:" )
if len ( input1) != 14 :
print ( "Wrong length!" )
sys. exit( )
else :
code = [ ]
for i in range ( 13 ) :
code. append( ord ( input1[ i] ) ^ ord ( input1[ i + 1 ] ) )
code. append( ord ( input1[ 13 ] ) )
a1 = code[ 2 ]
a2 = code[ 1 ]
a3 = code[ 0 ]
a4 = code[ 3 ]
a5 = code[ 4 ]
a6 = code[ 5 ]
a7 = code[ 6 ]
a8 = code[ 7 ]
a9 = code[ 9 ]
a10 = code[ 8 ]
a11 = code[ 10 ]
a12 = code[ 11 ]
a13 = code[ 12 ]
a14 = code[ 13 ]
if ( a1 * 88 + a2 * 67 + a3 * 65 - a4 * 5 + a5 * 43 + a6 * 89 + a7 * 25 + a8 * 13 - a9 * 36 + a10 * 15 + a11 * 11 + a12 * 47 - a13 * 60 + a14 * 29 == 22748 ) & ( a1 * 89 + a2 * 7 + a3 * 12 - a4 * 25 + a5 * 41 + a6 * 23 + a7 * 20 - a8 * 66 + a9 * 31 + a10 * 8 + a11 * 2 - a12 * 41 - a13 * 39 + a14 * 17 == 7258 ) & ( a1 * 28 + a2 * 35 + a3 * 16 - a4 * 65 + a5 * 53 + a6 * 39 + a7 * 27 + a8 * 15 - a9 * 33 + a10 * 13 + a11 * 101 + a12 * 90 - a13 * 34 + a14 * 23 == 26190 ) & ( a1 * 23 + a2 * 34 + a3 * 35 - a4 *