【逆向】python反编译

    逆向 lz520520 5年前 (2019-10-06) 793次浏览

    通常来讲,python如果被编译成exe,一般会使用的工具是pyinstaller,这个的平台移植性比较好,而py2exe这个换个环境就容易出问题。

    而如果拿到编译成exe的python程序,需要反编译成py文件,那么就可以使用pyinstxtractor.py进行解包,这个脚本可以将exe还原成pyc文件。

    https://sourceforge.net/projects/pyinstallerextractor/

    如下,解包过程中,打印出python版本和pyinstaller版本。并且会提示可能的入口点Possible entry point,其实一般python入口点都是main或者就是程序的名称。这里提示mian1。(能用同版本来运行pyinstxtractor.py就最好用同版本)【逆向】python反编译

     

     

    其实到解包文件夹里,查看mainfest前缀即可判断主程序入口点了。这个mian1是一个pyc格式的文件,但并不完整,如果使用反编译工具会提示非pyc文件,因为它缺少了文件头。【逆向】python反编译

     

     

    我这里拿正常的pyc文件和解包后的文件做了对比,可以看到缺少了前12个字节,这里添加上即可。

    这里最好使用解包里PYZ-00.pyz_extracted下的pyc文件的头部,不同py版本的pyc头部不一样,可能会导致后面的反编译不成功。【逆向】python反编译

     

     

     

    修改后,就可以进行下一步的反编译,从pyc转换成py,这里可以使用一个在线平台https://tool.lu/pyc/进行反编译,如果觉得代码比较重要,那么就安装uncompyle

    pip install uncompyle

     

    然后进行反编译

    uncompyle6 input.pyc > output.py【逆向】python反编译

     

    使用这个工具反编译出的py文件格式会有一点问题,进行适当调整就可以使用了,如果只是分析代码逻辑,其实已经够用了。以下就是反编译结果【逆向】python反编译

     

     


    Security , 版权所有丨如未注明 , 均为原创丨
    转载请注明原文链接:【逆向】python反编译
    喜欢 (0)