某比赛用的 FPGA 烧录工具,拿来练手
入口是 main_gui.exe,文件夹里面还有个 python39.dll

再加上 tk 风格的 ui,推测是 python 打包的程序

ida 打开 main_gui.exe 从里面看到打包的工具是 cx_Freeze (也可以用string工具提取特征字符串)

解压 lib/library.zip,再用 PyLingual 反编译 pyc 文件,几乎完全恢复了原始代码

用户登陆
import tkinter as tk
from tkinter import messagebox
from gui_components import GUIContext
from gui_handlers import GUIHandlers
import config_manager
import db_manager
import sys
from auth_manager import authenticate_user, AuthResult
def show_login(root, db_ip, on_success):login_win = tk.Toplevel(root)login_win.title('用户登录')login_win.geometry('300x180')login_win.grab_set()tk.Label(login_win, text='用户名:').pack(pady=5)username_entry = tk.Entry(login_win)username_entry.pack()tk.Label(login_win, text='密码:').pack(pady=5)password_entry = tk.Entry(login_win, show='*')password_entry.pack()def attempt_login():username = username_entry.get().strip()password = password_entry.get().strip()status, user_id, uname = authenticate_user(db_ip, username, password)if status == AuthResult.SUCCESS:messagebox.showinfo('登录成功', f'欢迎 {uname}!')login_win.destroy()on_success(user_id, uname)else:if status == AuthResult.USER_NOT_FOUND:messagebox.showerror('登录失败', '用户名不存在')else:if status == AuthResult.PASSWORD_ERROR:messagebox.showerror('登录失败', '用户名或密码错误')else:if status == AuthResult.STATUS_DENY:messagebox.showerror('登录失败', '用户状态不允许登录')else:if status == AuthResult.TIME_DENY:messagebox.showerror('登录失败', '当前时间不在班级允许范围内')else:if status == AuthResult.DB_ERROR:messagebox.showerror('登录失败', uname)tk.Button(login_win, text='登录', command=attempt_login).pack(pady=5)tk.Button(login_win, text='退出', command=root.destroy).pack(pady=5)
https://tw.python-3.com/?p=80285 x_freeze生成的EXE能否完全反编译回可读的Python代码?
https://www.pylingual.io