题目是一个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 =