免费做个人网站销售系统

张小明 2026/1/2 22:45:04
免费做个人网站,销售系统,口碑好网站建设多少钱,阿里云域名注册口令欢迎回到我们的 《零基础#xff1a;100个小案例玩转Python软件开发#xff01;》 系列#xff01;在第六节课#xff0c;我将教大家如何开发一个反编译工具。一、PyInstaller打包EXE首先我们要知道#xff0c;如果要将一个Python文件或PyMe项目打包成EXE可执行文件#…欢迎回到我们的《零基础100个小案例玩转Python软件开发》系列在第六节课我将教大家如何开发一个反编译工具。一、PyInstaller打包EXE首先我们要知道如果要将一个Python文件或PyMe项目打包成EXE可执行文件需要使用专门的打包工具比如pyinstallernuitka等其中最常用的是pyinstaller因为它的命令行比较简单。比如我们有下面一个login.pyimport tkinter as tk from tkinter import messagebox # 创建窗口 window tk.Tk() window.title(登录) window.geometry(250x200) # 测试账户 users {admin: 123456, test: test123} # 标题 tk.Label(window, text用户登录, font(Arial, 14)).pack(pady10) # 用户名 tk.Label(window, text用户名:).pack() user_entry tk.Entry(window) user_entry.pack() # 密码 tk.Label(window, text密码:).pack() pwd_entry tk.Entry(window, show*) pwd_entry.pack() # 登录按钮 def check_login(): user user_entry.get() pwd pwd_entry.get() if user in users and users[user] pwd: messagebox.showinfo(成功, 登录成功) # 打开新窗口 new_window tk.Toplevel(window) new_window.title(主界面) new_window.geometry(300x200) tk.Label(new_window, textf欢迎 {user}).pack(pady50) tk.Button(new_window, text退出, commandnew_window.destroy).pack() else: messagebox.showerror(错误, 账号或密码错误) tk.Button(window, text登录, commandcheck_login, width10).pack(pady20) # 运行 window.mainloop()它运行时的样子是这样的我们在代码文件所在的文件夹里进入cmd命令行然后输入命令pyinstaller -c -w -F login.py回车运行后pyinstaller会开始工作结束后会将当前文件打包成一个独立的EXE。打包过程中会生成两个文件夹一个是build主要用于存放打包的临时生成文件另一个是dist是用于发布的结果。打包结束后会在dist中生成login.exe文件双击运行可以看到一切正常。虽然PyInstaller可以将Python脚本、依赖库和解释器打包成单个可执行文件但实际上这些资源只是被包裹在一起并没有真正的加密保护。这一节我们就开发一个pyinstaller反编译工具看能不能将上面的login.exe还原为源码文件。二、开发自己的反编译工具我们启动PyMe新建一个空白工具“反编译工具”在设计器从左边的控件工具体中拖动Label、Entry、LabelButton到界面上修改文字和样式做成如下所示的界面。我们希望在点击Python文件对应的“浏览”按钮时将文件路径填入到Entry_1中在点击导出文件夹对应的“浏览”按钮时将文件夹路径填入到Entry_2中然后点击导出时能够将EXE反编译出python文件并导出到指定文件夹。在第一个“浏览”按钮上用鼠标右键单击然后在弹出菜单中选择”事件响应“菜单项进入事件响应编辑框后在左边选择Command事件在右边选择”调用其它界面“然后再选择”调用打开文件框“。进入代码编辑器后修改生成的Fun.OpenFile函数参数将Python改为EXE代表打开EXE文件判断一下返回的openPath是否有效如果有效设置到Entry_1中。#LabelButton LabelButton_1 s Command Event : def LabelButton_1_onCommand(uiName,widgetName,threadings0): openPath Fun.OpenFile(对话框标题打开EXE文件,文件类型列表[(EXE File,*exe),(All files,*)],初始文件夹路径 os.path.abspath(.),选择多文件False) if openPath: Fun.SetText(界面名称uiName,控件名称Entry_1,字符串文本openPath)接下来可以返回设计器为第二个浏览按钮如法炮制来”打开目录查找“并设置到Entry_2中。也可以在代码编辑器右边的微缩界面中点选第二个浏览按钮然后在下面的控件事件类型列表中为“按钮点击”事件绑定函数“这样就可以直接生成LabelButton_2_onCommand函数了。在函数里用鼠标右键单击就可以在弹出菜单中选择”系统函数“下的”打开目录查找“来生成弹出对话框界面。最终代码完善如下#LabelButton LabelButton_2 s Command Event : def LabelButton_2_onCommand(uiName,widgetName,threadings0): openPath Fun.SelectDirectory(title打开目录查找,initDiros.path.abspath(.)) if openPath: Fun.SetText(界面名称uiName,控件名称Entry_2,字符串文本openPath)最后是为”导出“按钮绑定点击事件函数并进行反编译逻辑处理这段代码比较长我们需要先用pyinstxtractor来从EXE提取文件。pyinstxtractor下载地址如下https://github.com/extremecoders-re/pyinstxtractor下载完后将文件放置到当前工程工程文件夹下然后调用以下命令就可以将exe中的文件提取出来。python pyinstxtractor.py your_app.exe如果你是VIP会员你可以鼠标右键通过AI生成代码“来生成这段处理逻辑。在编程小助手输入框中输入”调用pyinstxtractor对exePath进行反编译”它就可以生成对应的函数。具体逻辑如下#LabelButton LabelButton_3 s Command Event : def LabelButton_3_onCommand(uiName,widgetName,threadings0): exePath Fun.GetText(uiName,Entry_1) srcPath Fun.GetText(uiName,Entry_2) import io import os import sys import subprocess import tempfile import shutil # 强制标准输出使用UTF-8编码 sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8, errorsreplace) def extract_exe_with_pyinstxtractor(exePath, srcPathNone): 使用pyinstxtractor提取PyInstaller打包的exe文件 Args: exePath (str): 要提取的exe文件路径 srcPath (str, optional): 输出目录路径。如果为None则在exe同目录创建输出文件夹 Returns: str: 提取后的目录路径 #检查exe文件是否存在 if not os.path.exists(exePath): raise FileNotFoundError(f找不到exe文件: {exePath}) #如果未指定输出路径则在exe同目录创建输出文件夹 if srcPath is None: exe_dir os.path.dirname(exePath) exe_name os.path.splitext(os.path.basename(exePath))[0] srcPath os.path.join(exe_dir, f{exe_name}_extracted) #获取pyinstxtractor.py的路径 #方法1: 如果pyinstxtractor已安装 try: import pyinstxtractor pyinstxtractor_path os.path.join(os.path.dirname(pyinstxtractor.__file__), pyinstxtractor.py) except ImportError: print(pyinstxtractor未安装) return #执行pyinstxtractor print(f正在提取 {exePath} ...) print(f输出目录: {srcPath}) try: #使用Python运行pyinstxtractor cmd [sys.executable, pyinstxtractor_path, exePath] #运行命令 result subprocess.run( cmd, capture_outputTrue, textTrue, cwdsrcPath, #在输出目录中运行 encodingutf-8 ) #检查执行结果 if result.returncode ! 0: print(fpyinstxtractor执行错误:\n{result.stderr}) raise RuntimeError(fpyinstxtractor执行失败返回码: {result.returncode}) print(提取完成!) print(f输出: {result.stdout}) #查找提取的文件夹pyinstxtractor会在当前目录创建以exe名开头的文件夹 extracted_dirs [d for d in os.listdir(srcPath) if d.startswith(os.path.basename(exePath)) and os.path.isdir(os.path.join(srcPath, d))] if extracted_dirs: extracted_dir os.path.join(srcPath, extracted_dirs[0]) print(f提取的文件位于: {extracted_dir}) return extracted_dir else: print(警告: 未找到提取的文件夹) return srcPath except Exception as e: print(f提取过程中出错: {e}) raise extract_exe_with_pyinstxtractor(exePath, srcPath)不过这时只是完成了EXE文件提取出pyc文件运行测试一下点击导出时将会开始处理提取。完成后可以在目标文件夹看到生成的login.pyc。如果我们想要将pyc进一步还原为python代码还需要另一个工具uncompyle6或直接到https://www.decompiler.com/上传上传pyc文件即可查看源码。通过 pip install uncompyle6 安装一下。然后在提取代码后面稍做修改调用uncompyle6来进行pyc到py文件的转换。extracted_dir extract_exe_with_pyinstxtractor(exePath, srcPath) import uncompyle6 pycfilelist Fun.WalkAllResFiles(文件夹路径extracted_dir,是否遍历子文件夹False,是否指定扩展名pyc) for pyc in pycfilelist: if os.path.exists(pyc): print(f\n 正在反编译 {pyc} ) os.system(funcompyle6 {pyc} {pyc.replace(.pyc, _decompiled.py)}) print(f已保存{pyc.replace(.pyc, _decompiled.py)})好啦现在整个工程逻辑就完成啦我们运行测试一下可以将EXE文件反编译到指定文件夹下并生成对应的python文件。打开login_decompiled.py就可以看到代码源文件啦三、PyMe的防护措施经过上面的开发相信大家对于pyinstaller打包EXE又有了新的认识虽然说pyinstaller打包很快很方便但是并不是很安全开发一些小工具倒是可以但是如果想要有更好的源代码保护就建议使用加密打包或Nuitka打包这两项在PyMe中都支持在发布时弹出的打包对话框中你可以通过切换打包工具使用nuitka或者直接在pyinstaller中使用加密保护源码选项。这两项都会将源码先转换成c语言代码再编译大大强化EXE的反编译保护。最后在PyMe的”案例商店“的文件操作分类中有一个专门测试PyMe工程EXE反编译的工具案例”EXE2PY“感兴趣小伙伴也可以下载体验。它的原理和本节类似只是更加完善一些。在本节的课程中我们通过一个反编译工具的开发案例讲述了Python打包工具的和反编译保护的知识关注PyMe公众号教程跟着我继续学习让我们一起加油官网www.py-me.com下载https://pyme.lanzoum.com/igiUy3cviulg
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站seo优化外包湖北住房和城乡建设厅网站

Excalidraw 容量规划模型:预估未来资源需求 在现代技术团队中,一个画布往往比十页文档更能说清问题。无论是架构评审会上的手绘草图,还是敏捷开发中的流程梳理,可视化协作已经成为不可或缺的一环。而在这股趋势下,Exca…

张小明 2026/1/2 22:45:04 网站建设

wordpress用英文版泰州做网站优化

释放键盘潜能:KMonad实现Caps Lock与Escape键智能互换指南 【免费下载链接】kmonad An advanced keyboard manager 项目地址: https://gitcode.com/gh_mirrors/km/kmonad 在当今高效工作的时代,键盘已成为我们与数字世界交互的重要工具。你是否曾…

张小明 2026/1/2 22:44:31 网站建设

社交网站开发教程做王境泽表情的网站

微码解析利器MCExtractor:全方位处理器微码分析指南 【免费下载链接】MCExtractor Intel, AMD, VIA & Freescale Microcode Extraction Tool 项目地址: https://gitcode.com/gh_mirrors/mc/MCExtractor 微码是现代处理器中至关重要的底层指令集&#xff…

张小明 2026/1/2 22:44:00 网站建设

做网站的专业网站后台编辑器内容不显示

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2026/1/2 22:43:28 网站建设

个人怎么制作公众号seo的内容怎么优化

序言 在dart中,允许多种形式的构造方法,上篇类中,也有涉略。在这篇文章中我们进行深入的学习。 构造 方法的类型 Generative constructors、Default constructors、Named constructors、Constant constructors、Redirecting constructors、Fa…

张小明 2026/1/2 22:42:56 网站建设

小豪自助建站网站怎么查是哪家网络公司做的

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…

张小明 2026/1/2 22:42:24 网站建设