py逆向工具使用

一、前言

py逆向,找个题目举例子说明一下[NISACTF 2022]ezpython。

二、题目

工具: 1.pyinstxtractor.py 下载地址:https://sourceforge.net/projects/pyinstallerextractor/ 2.HEX编辑器,我这里使用winHEX 下载地址:https://www.jb51.net/softs/16546.html#download 3. uncompyle 库 可在命令框中输入:pip install uncompyle6 进行安装

需要用到这两个工具

把给出的exe文件放到跟pyinstxtractor.py的同一目录下,然后

1
python pyinstxtractor.py 附件.exe

会生成一个和附件名相同的文件夹

image-20230710210412668

进入到文件夹找到这两个文件

image-20230710210503705

struct.pyc这个文件一般都是的这个名字,src.pyc这个文件跟附件相关,名字有时不一样。

然后把这两个文件放到010Editor(编辑器都行)中

image-20230710210829117

image-20230710210846496

把struct.pyc的第一行添加到src.pyc中,因为struct保存着版本信息等,如果src中缺少了是无法再编译为py的。

编辑完之后,再src目录下打开cmd,使用uncompyle6工具把pyc编译为py

1
uncompyle6 src.pyc

image-20230710211328256

命令行中也会直接显示出来,也可以看目录下生成的同名py文件

image-20230710211500066

只用看最后一处就行,思路就是,直接输入key的话,会对key有一个判断,如果输入的key再经过decrypt2这个函数相同的话就会打印出正确的flag。如果判断不等的话,就会输出fake_flag。

所以逆向思路就是不进行判断,直接赋值给result就行。

image-20230710211954769

四、总结

这道题考察的应该是exe转pyc再转py的过程,用好那两个工具就行了。