本公众号所发布的文章及工具只限交流学习,本公众号不承担任何责任!如有侵权,请告知我们立即删除。
之前发的EDU查询辅助工具,只用Pyinstaller打包了exe,有MAC的小伙伴想要运行,但是我觉得屎山代码没必要开源,在某一天我将项目源码永久删除,恢复之后乱码,所以没办法满足小伙伴的需求。后面想着找个机会能不能反编译一下,反正代码超简单。
项目地址
https://github.com/langsasec/edusrc
这是之前闲的没事用Flask开发的一个超轻量的网站,主要方便用于EDU_SRC查询具体学校和信息搜集用,最开始是包含Sqlite数据库文件的,后来觉得就两张表,索性把数据查出来放到Python列表里更方便。最后只有一个后端文件main.py和静态资源。
环境:Python3
将需要反编译的exe
和pyinstxtractor.py
放到同一个目录下直接运行
python pyinstxtractor.py edusrc.exe
生成edusrc.exe_extracted文件夹
包含的静态资源已经反编译出来
pyinstaller
在打包的时候,会将pyc文件的前8
个字节清除,所以后期需要自己添加上去,前四个字节为python
编译的版本,后四个字节为时间戳。(四个字节的magic number
、四个字节的timestamp
)
所以在这里可以通过struct
文件来获取其中的信息。
找到如下两个文件:main和struct
用16进制编辑器打开这两个文件,并新建一个main.pyc,共同打开,我这里用X-ways代替。
main.pyc=struct第一行+main
struct
main
main.pyc
方法一:uncompyle6
pip3 install uncompyle6
uncompyle6 main.pyc
我本地是Python3.10,所以不支持,如果要用这个尽量用Python3.8
方法二:在线pyc反编译
地址:https://tool.lu/pyc
成功拿到main.py源码
直接反编译出来的代码可能会和最开始自己写的有一部分出入。
部分代码因为逻辑问题可能出现Bug,经过我的调试已解决。
例如:
Flask中的app路由装饰器代码被修改使得程序无法运行。
Flask中的渲染模块render_template
的参数格式也被修改
反编译后需要做少量的调试才能正常运行,代码量巨大时估计会很头疼。
https://github.com/MrWQ/reverse_pyinstaller