StrangeLanguage WriteUp(第三届“第五空间”网络安全大赛reverse wp)

StrangeLanguage WriteUp

题目给了main.exe,看大小和图标判断是使用pyinstallerpy文件打包成的可执行文件,简单运行,让你输入(猜测输入flag),然后会有提示"nonono"
在这里插入图片描述

提取py

使用工具PyInstaller Extractor可直接提出pyc,再使用Uncompyle6反编译就能得到main.py

python .\pyinstxtractor.py main.exe
cd .\main.exe_extracted\
uncompyle6 main.pyc > main.py
# main.py
import brainfuck
brainfuck.main_check()

可以看到main.py里只是调用brainfuck模块,在提取的文件中里刚好有个brainfuck模块brainfuck.cp38-win_amd64.pyd,因此程序的主要逻辑大概率在该模块中

pyd逆向

.pyd是一种python动态模块,本质上是dll文件,故拿出ida分析一波,直接从入口点分析难度太大,先看Strings Window,如果了解过brainfuck(bf)代码形式,很容易就能发现有一串bf,idc脚本将其搞出来,先看看这串代码干什么用的
使用brainfuck解释器运行这串代码发现运行结果和main.exe的运行结果完全一致,遂猜测这就是程序的主要逻辑,bf模块只是个解释器,负责解释bf代码,到这里调用逻辑很清楚了main->bf.pyd->bf代码,因此只要弄清楚bf代码实现的功能就可以拿到flag

bf代码逆向

这部分是整个逆向过程中最难的了,因为bf代码的基本操作非常简单,相当于最原始的图灵机,而该bf代码使用基本运算实现了复杂操作,鉴于并没有很好bf逆向工具,因此只能硬来,这里主

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值