【2020XCTF/华为杯】PYPY WriteUp

博客内容涉及了一款使用pygame编写的PYPY打包的elf程序,通过逆向工程获取源码的过程。文章详细描述了如何利用gdb定位并提取pyc文件,然后使用uncompyle6进行反编译。关键代码部分展示了RC4加密函数,以及解密脚本,用于还原加密的字符串。最终目标是使解密后的flag满足特定条件以获得'YOUWIN'的输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目是一个PYPY打包的elf程序,使用pygame写了一个贪吃蛇游戏,现有的pyinstaller的解包脚本好像不太好使,那么自己动手

根据输出报错信息定位代码,这个qword_6077E0应该是反序列化pyc代码的函数,gdb断在这里,即可拿到对应的pyc文件

这个函数会被执行4次,第4次是我们期望的代码,第四次断下后使用 dump memory ./dmp $rdi $rdi+$rsi 拿到文件,补上前8个字节的文件头以后,加上.pyc后缀然后使用uncompyle6反编译,得到源码

DEFAULT_KEY = 'Yó\x02Ã%\x9a\x820\x0b»%\x7f~;ÒÜ'


def rc4(msg, key=DEFAULT_KEY, skip=1024):
    barray = bytearray([i for i in range(256)])
    curr = 0
    for i in range(256):
        curr = (curr + barray[i] + ord(key[(i % len(key))])) % 256
        t = barray[i]
        barray[i] = barray[curr]
        barray[curr] = t
    else:
        curr = 0
        another = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值