一道ctf题讲解python打包程序的逆向和pyinstxtractor的使用

https://files.buuoj.cn/files/a7d928809d81ee591757e79bca2eeadf/PZthon.zip

查壳

进ida

看main函数

没什么思路shift 12看看

发现一堆python的东西

可以得出是由python打包的程序

碰到这种的思路是直接反编译成python字节码

然后再反编译成源码

反编译成字节码需要用到 pyinstxtractor这个工具

github上项目地址

GitHub - extremecoders-re/pyinstxtractor: PyInstaller Extractor

win11用这个好像有bug不会得到反编译后的文件

换个系统应该就能解决

把要反编译的文件放在工具目录下

一般是用 python pyinstxtractor.py 文件名.exe

如果没有反应可以试试 python3 pyinstxtractor.py

可以发现目录下生成了一个文件夹

找到带文件名的pyc后缀

这个就是反编译的python字节码

再把python字节码文件去在线网站反编译

python反编译-在线工具(tool.lu)

上面的不显示了

逻辑很简单

直接写脚本

flag = ''

enc = [115, 121, 116, 114, 110, 76, 37, 96, 88, 116, 113, 112, 36, 97, 65, 125, 103, 37, 96, 114, 125, 65, 39, 112, 70, 112, 118, 37, 123, 113, 69, 79, 82, 84, 89, 84, 77, 76, 36, 112, 99, 112, 36, 65, 39, 116, 97, 36, 102, 86, 37, 37, 36, 104]

for i in range(len(enc)):

flag += chr(enc[i] ^ 21)

print(flag)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值