1、安装cython
2、官网下载安装Visual Studio 2019,选择Desktop development with C++,勾上MSVC、win10SDK、c++ profiling tool、c++ cmake、c++ atl,安装后重启系统
3、项目中增加一个py脚本build.py
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
def main():
# 这里为文件名 可以增加多个Extension(' ', [' ']),每组的名字必须和py名一致
extensions = [Extension('utils', ['utils.py'])]
setup(ext_modules=cythonize(extensions))
if __name__ == '__main__':
main()
4、cmd下cd到项目文件夹下,python build.py build_ext,即可在build/lib下找到pyd文件,放到项目文件夹下,移走原来的py文件即可
pyd文件不可直接执行,但可以被其他python调用,pyd仅能在相同版本的windows python上运行(3.6.*通用,3.7.*通用)
pyd编译后字符串仍然存在,需要混淆字符串后才能隐藏密码等信息,以下为一种可用的示例代码
# 输入一段字符串,返回一个python函数,该函数返回的结果是原来的字符串
# 混淆后编译为pyd,可以隐藏密码等信息
import random
def dance(target):
blueprint='''
def getString():
target=''
%s
return target
'''
list=[]
def parse(x):
flag=random.randint(0,2)
if flag==0:
return ' target+=\'%s\''%x
elif flag==1:
return ' target=target+chr(%s)'%ord(x)
elif flag==2:
k=random.randint(0,15)
return ' target=target+chr(%s-%s)'%(ord(x)+k,k)
for x in target:
list.append(parse(x))
rs=blueprint%('\n'.join(list))
print(rs)
return rs
target="meJyunDd@19"
rs=dance(target)