当前位置: 首页 > 图灵资讯 > 行业资讯> 如何防止python反编译

如何防止python反编译

发布时间:2025-05-08 10:48:43

如何防止python反编译?以下是对您的具体介绍:

python学习网,大量免费python视频教程,欢迎在线学习!

这里使用的工具:

exe反编译工具:pyinstxtractor.py:点击此处下载

pyc反编译工具:Easy Python 在线反编译pyc或Decompiler。

pyinstxtractor.将py放入exe文件的同一目录中,执行以下cmd命令:

pythonpyinstxtractor.pymain.exe

如果实施成功,将在同一目录下生成新的反编译文件夹——main.exe_extracted,如下图:

与此同时,我们可以在下图圈起的路径下找到当时我们exe引入的mylib模块,它是pyc格式。

相关推荐:Python基础教程

对于pyc格式的文件,反编译非常简单。使用前面提供的工具或在线找到一分钟的反编译。让我们来看看反编译的结果:

#!/usr/bin/envpython
#visithttp://tool.lu/pyc/formoreinformation
deftest(num):
print('num={n},{n}^3={n2}'.format(n=num,n2=num**3))

if__name__='__main__':
whileNone:
try:
num=input(
'\xe6\x8fx90\xe7\xa4xba\xef\xbc\x9a\xe8\xbex93\xe5\x5"q"xe9\x80\xe5
\xbaxe7\xa8b\xe5\xba\x8fxe3\x82n\xe8\xafxb7\xe8xbex93\xe5\x5\xe4
xb8\x8xaaxe6\x5\xb5\xe5xad\x97\xef\xbc\x9a')
ifnum.lower()='q':
break
num=float(num)
print(num)
except:
None
None
None
print(
'\xe8\xbex93\xe5\x5\xe7\x9a\x84xe6\x5\xb5\xe5xadx97\xe4\xb8d\xe6\xad
xa3\xe7\xaxae\xef\xbc\x81')
continue

可以看出,源代码基本上是完美的反编译。由于编码问题,涉及中文的地方会发生变化。但非中文部分几乎完全相同。

将脚本编译成pyd,防止反编译

如何解决,可以考虑将模块py文件编译成动态链接库,这样解决难度会大大增加。其中,在python中,pyd格式是动态链接库。可以用cython编译。如果anaconda自带,有些python可能不带cython,可以安装:

pipinstallCython

我们在main.py所在的文件夹创建了一个新的py文件,这里我把它命名为build_pyd.py,内容如下:

#-*-coding:utf-8-*-
fromdistutils.coreimportsetup
fromCython.Buildimportcythonize

setup(
name='anywords...',
ext_modules=cythonize(["mylib.py",]),
)

执行以下cmd命令:

pythonbuild_pyd.pybuild_ext--inplace

操作过程和生成结果如下图所示,其中编译了红框的pyd文件。因为我是一个64位的系统和python,我们将生成amd64后缀。我们将删除并重新命名为mylib.pyd就可以了。

注:mylib同时存在.pyd和mylib.py时,引入优先级是pyd>py,所以不需要删除py文件,默认引入是pyd。

此时,我们删除build、disk文件夹,重复步骤2,然后编译成exe。

注:编译需要相关的VC环境,因为Python3.5是基于 VS14版本,所以我也安装在这里。不安装是无法编译的。

可验证:

再一次反编译main.exe之后,原路径exe:\t\dist\main.exe_extracted\out00-PYZ.pyz_extracted下找不到mylib.pyc了。

因为他不再是可以直接反编译的文件。

那他在哪里?他作为pyd存在于上层目录中。如下图所示:

pyd的反编译难度相当高,到目前为止,大功告成!

相关文章

python3兼容python2吗

python3兼容python2吗

2025-05-09
python3 whl怎么安装

python3 whl怎么安装

2025-05-09
python 字典怎么提取value

python 字典怎么提取value

2025-05-09
python 怎样计算字符串的长度

python 怎样计算字符串的长度

2025-05-09
python 怎么样反向输出字符串

python 怎么样反向输出字符串

2025-05-09
python 怎么判断字符串开头

python 怎么判断字符串开头

2025-05-09