如何反编译Python写的exe到py

参考链接:

https://blog.csdn.net/qq_44198436/article/details/97314626?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://www.cnblogs.com/pcat/p/8990482.html

https://www.cnblogs.com/pcat/p/11625300.html

 

准备工作:

1. 下载pyinstxtractor.py(百度上搜):https://github.com/extremecoders-re/pyinstxtractor

2. 安装uncompyle6: pip install uncompyle6

3. 下载16进制编辑器:https://www.jb51.net/softs/557257.html#downintro2

 

为了验证效果,接下来从创建py开始一步步看结果。

第一步:自己写一个py打包成exe -- target_exe.py(简单的两数相加)

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File    : Python-20210127 -> target_exe.py.py
@IDE     : PyCharm
@Author  : Aimee
@Date    : 2021/2/23 8:57
@Desc    :
================================================="""
import sys


def main():
    print("target_exe started")  # main()函数开始了
    argc = len(sys.argv)
    if argc == 3:
        a = int(sys.argv[1])
        b = int(sys.argv[2])
        result = a + b  # 两数相加
        print("a + b =", result)
        if a < 0 or a > 100:  # 对a的作用域进行判断
            print("a is not in [0, 100]")
        if a > 0 and b > 0:
            print("a and b >0")


if __name__ == '__main__':
    main()
View Code

 

target_exe.py->target_exe.exe

pyinstaller -F target_exe.py

将target_exe.py重命名为target_exe_origin.py

 

第二步:解压exe

将pyinstxtractor.py放在与exe同级目录下,运行

python pyinstxtractor.py target_exe.exe

会在当前目录生成一个target_exe.exe_extracted文件夹,里面会有一些没有后缀的文件名,target_exe就是我们需要进行反编译的文件。在正向编译过程中,生成的pyc会把python版本信息和时间戳去掉,但是反编译的时候我们需要将其补齐。

注意到在target_exe.exe_extracted还存在一个没有后缀名的文件struct,用16进制编辑器打开struct和target_exe文件。

两个文件都有E3,可以看到struct在E3的前面还有一段,应该就是Python版本和时间戳了,将前面一段复制到target_exe中,直接在16进制编辑器里面复制就好了。

保存,然后重命名target_exe为target_exe.pyc。 

 

第三步:反编译pyc文件,得到target_exe.py

uncompyle6 -o target_exe.py target_exe.pyc

得到target_exe.py,那么现在将得到的target_exe.py和原本写的target_exe_origin.py进行对比,看看结果

可以发现,注释没有了,双引号变单引号,if-and变成两个if,功能没啥变化。

OK,反编译就讲到这里。

 

posted @ 2021-02-23 10:21  o云淡风轻o  阅读(4212)  评论(2编辑  收藏  举报