pyc防止反编译,怎么防止反编译
如何防止python反编译?下面给大家具体介绍一下:
热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!
此处使用的工具:
Exe反编译工具:pyinstxtractor.py:点击这里下载。
Pyc反编译器:简单的Python反编译器或在线反编译器。
将pyinstxtractor.py放在exe文件的同一个目录中,并执行以下cmd命令:
如果pythonpyinstxtractor.pymain.exe执行成功,将在同一个目录下生成一个新的反编译文件夹——main.exe_extracted,如下图所示:
同时我们可以在下图圈出来的路径下找到我们当时exe引入的mylib模块,是pyc格式的。
相关:《Python基础教程》
Pyc格式文件,反编译很简单。使用前一篇文章中提供的工具或者找一个在线备忘录来反编译它。让我们看看反编译的结果:
#!/usr/bin/envpython
# visit http://tool . Lu/pyc/formore information
deftest(编号):
print(num={n},{n}^3={n2}.格式(n=数量,n2=数量**3))
if__name__==__main__:
whileNone:
尝试:
num=输入(
xe6 x8f x90 xe7 xa4 xba xef xbc x9a xe8 xbe x93 xe5 x85 xa5 q xe9 X80 X80 xe5 x87
xba xe7 xa8 x8b xe5 xba x8f xe3 X80 x82 n xe8 xaf xb7 xe8 xbe x93 xe5 x85 xa5 xe4
xb8 X80 xe4 xb8 xaa xe6 x95 xb0 xe5 xad x97 xef xbc x9a )
ifnum.lower()==q:
破裂
num=float(数字)
打印(数字)
例外:
没有人
没有人
没有人
打印(
xe8 xbe x93 xe5 x85 xa5 xe7 x9a x84 xe6 x95 xb0 xe5 xad x97 xe4 xb8 x8d xe6 xad
xa3xe7xa1xaexefxbcx81 )
如你所见,继续完美反编译源代码。涉及中文的地方,会因为编码问题而更改。但是非中文部分几乎是一样的。
将脚本编译为pyd以防止反编译
怎么解决?可以考虑将模块py文件编译成动态链接库,这样会大大增加破解难度。其中,在python中,pyd格式是动态链接库。你可以用cython编译它。如果anaconda带有它,一些python可能没有cython。只需安装:
PipinstallCython我们在main.py所在的文件夹中创建一个新的py文件。这里我将其命名为build_pyd.py,其内容如下:
#-*-编码:utf-8-*-
fromdistutils.coreimportsetup
fromCython。Buildimportcythonize
设置(
name=anywords . ,
ext _ modules=cytonize([ mylib . py ,]),
)然后执行以下cmd命令:
python _ pyd.pybuild _ ext-inplace的运行过程和生成结果如下图所示,其中编译了带红框的pyd文件。因为我是64位系统和python,所以会生成amd64后缀。让我们删除它,并将其重命名为mylib.pyd
注意:当mylib.pyd和mylib.py同时存在时,导入优先级为pydpy,不需要移除py文件。默认情况下,导入时为pyd。
此时,我们删除build和disk文件夹,重复步骤2,并再次将它们编译成exe。
注意:编译需要相关的VC环境。因为python3.5是基于VS14版本的,所以我这里安装的也是。不行,安装不能编译。
你可以验证一下:
再次反编译main.exe后,在原路径e : t dist main.exe _ extracted out 00-pyz . pyz _ extracted下找不到mylib.pyc。
因为它不再是一个可以直接反编译的文件。
他在哪里?他作为pyd存在于上层目录中。如下图:
pyd的反编译难度挺高的,到目前为止,搞定了!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。