CTF-Reverse-pyc加密破解
这个在一次讲课的过程中去做了,但是忘记总结了,这里再写写
首先在pyinstaller打包的时候,是可以通过–key选项进行加密的。会将import的部分打包成pyz文件。
这里的加密会对main程序中import的部分进行加密,而main程序是不会加密的。
所以一般出题可以这样出。
1 | from test_main import main |
这样的话选手就不得不对pyz进行破解了。
例如我们这里来一个example
1 | pyinstaller --key 123 -F test.py |
随便写个test.py程序,然后打包
打包可能会有一段时间,不过没关系
我们使用pyinstxtractor进行解包
可以看到有提示,虽然成功解包,但是还存在无法被解密的部分
破解过程
没关系,一步步解密。因为在运行时还是需要解密的,所以解密过程就在pyimod02_archieve.pyc中,这个我们可以直接用uncompyle恢复。
我们将这个内容定向到archieve.py中。并且在尾部添加这些代码
1 | path = '' |
当然了,在uncompyle的时候注意,python bytecode的版本是多少,不然后续跑脚本有问题,要使用对应版本的python跑。
这里可能会提示找不到tinyaes库。使用pip安装pip install tinyaes
然后我们得到解密后的pyc文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 X Mεl0n | 随手记!