97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

怎樣說服老板做網(wǎng)站南海軍事新聞最新消息

鶴壁市浩天電氣有限公司 2026/01/22 10:35:13
怎樣說服老板做網(wǎng)站,南海軍事新聞最新消息,安慶建設(shè)網(wǎng)站,呼和浩特網(wǎng)站設(shè)計公司歡迎回到我們的 《零基礎(chǔ)#xff1a;100個小案例玩轉(zhuǎn)Python軟件開發(fā)#xff01;》 系列#xff01;在第六節(jié)課#xff0c;我將教大家如何開發(fā)一個反編譯工具。一、PyInstaller打包EXE首先我們要知道#xff0c;如果要將一個Python文件或PyMe項目打包成EXE可執(zhí)行文件#…歡迎回到我們的《零基礎(chǔ)100個小案例玩轉(zhuǎn)Python軟件開發(fā)》系列在第六節(jié)課我將教大家如何開發(fā)一個反編譯工具。一、PyInstaller打包EXE首先我們要知道如果要將一個Python文件或PyMe項目打包成EXE可執(zhí)行文件需要使用專門的打包工具比如pyinstallernuitka等其中最常用的是pyinstaller因為它的命令行比較簡單。比如我們有下面一個login.pyimport tkinter as tk from tkinter import messagebox # 創(chuàng)建窗口 window tk.Tk() window.title(登錄) window.geometry(250x200) # 測試賬戶 users {admin: 123456, test: test123} # 標(biāo)題 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()它運行時的樣子是這樣的我們在代碼文件所在的文件夾里進(jìn)入cmd命令行然后輸入命令pyinstaller -c -w -F login.py回車運行后pyinstaller會開始工作結(jié)束后會將當(dāng)前文件打包成一個獨立的EXE。打包過程中會生成兩個文件夾一個是build主要用于存放打包的臨時生成文件另一個是dist是用于發(fā)布的結(jié)果。打包結(jié)束后會在dist中生成login.exe文件雙擊運行可以看到一切正常。雖然PyInstaller可以將Python腳本、依賴庫和解釋器打包成單個可執(zhí)行文件但實際上這些資源只是被包裹在一起并沒有真正的加密保護(hù)。這一節(jié)我們就開發(fā)一個pyinstaller反編譯工具看能不能將上面的login.exe還原為源碼文件。二、開發(fā)自己的反編譯工具我們啟動PyMe新建一個空白工具“反編譯工具”在設(shè)計器從左邊的控件工具體中拖動Label、Entry、LabelButton到界面上修改文字和樣式做成如下所示的界面。我們希望在點擊Python文件對應(yīng)的“瀏覽”按鈕時將文件路徑填入到Entry_1中在點擊導(dǎo)出文件夾對應(yīng)的“瀏覽”按鈕時將文件夾路徑填入到Entry_2中然后點擊導(dǎo)出時能夠?qū)XE反編譯出python文件并導(dǎo)出到指定文件夾。在第一個“瀏覽”按鈕上用鼠標(biāo)右鍵單擊然后在彈出菜單中選擇”事件響應(yīng)“菜單項進(jìn)入事件響應(yīng)編輯框后在左邊選擇Command事件在右邊選擇”調(diào)用其它界面“然后再選擇”調(diào)用打開文件框“。進(jìn)入代碼編輯器后修改生成的Fun.OpenFile函數(shù)參數(shù)將Python改為EXE代表打開EXE文件判斷一下返回的openPath是否有效如果有效設(shè)置到Entry_1中。#LabelButton LabelButton_1 s Command Event : def LabelButton_1_onCommand(uiName,widgetName,threadings0): openPath Fun.OpenFile(對話框標(biāo)題打開EXE文件,文件類型列表[(EXE File,*exe),(All files,*)],初始文件夾路徑 os.path.abspath(.),選擇多文件False) if openPath: Fun.SetText(界面名稱uiName,控件名稱Entry_1,字符串文本openPath)接下來可以返回設(shè)計器為第二個瀏覽按鈕如法炮制來”打開目錄查找“并設(shè)置到Entry_2中。也可以在代碼編輯器右邊的微縮界面中點選第二個瀏覽按鈕然后在下面的控件事件類型列表中為“按鈕點擊”事件綁定函數(shù)“這樣就可以直接生成LabelButton_2_onCommand函數(shù)了。在函數(shù)里用鼠標(biāo)右鍵單擊就可以在彈出菜單中選擇”系統(tǒng)函數(shù)“下的”打開目錄查找“來生成彈出對話框界面。最終代碼完善如下#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)最后是為”導(dǎo)出“按鈕綁定點擊事件函數(shù)并進(jìn)行反編譯邏輯處理這段代碼比較長我們需要先用pyinstxtractor來從EXE提取文件。pyinstxtractor下載地址如下https://github.com/extremecoders-re/pyinstxtractor下載完后將文件放置到當(dāng)前工程工程文件夾下然后調(diào)用以下命令就可以將exe中的文件提取出來。python pyinstxtractor.py your_app.exe如果你是VIP會員你可以鼠標(biāo)右鍵通過AI生成代碼“來生成這段處理邏輯。在編程小助手輸入框中輸入”調(diào)用pyinstxtractor對exePath進(jìn)行反編譯”它就可以生成對應(yīng)的函數(shù)。具體邏輯如下#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 # 強制標(biāo)準(zhǔn)輸出使用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同目錄創(chuàng)建輸出文件夾 Returns: str: 提取后的目錄路徑 #檢查exe文件是否存在 if not os.path.exists(exePath): raise FileNotFoundError(f找不到exe文件: {exePath}) #如果未指定輸出路徑則在exe同目錄創(chuàng)建輸出文件夾 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 #執(zhí)行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 ) #檢查執(zhí)行結(jié)果 if result.returncode ! 0: print(fpyinstxtractor執(zhí)行錯誤: {result.stderr}) raise RuntimeError(fpyinstxtractor執(zhí)行失敗返回碼: {result.returncode}) print(提取完成!) print(f輸出: {result.stdout}) #查找提取的文件夾pyinstxtractor會在當(dāng)前目錄創(chuàng)建以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文件運行測試一下點擊導(dǎo)出時將會開始處理提取。完成后可以在目標(biāo)文件夾看到生成的login.pyc。如果我們想要將pyc進(jìn)一步還原為python代碼還需要另一個工具uncompyle6或直接到https://www.decompiler.com/上傳上傳pyc文件即可查看源碼。通過 pip install uncompyle6 安裝一下。然后在提取代碼后面稍做修改調(diào)用uncompyle6來進(jìn)行pyc到py文件的轉(zhuǎn)換。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 正在反編譯 {pyc} ) os.system(funcompyle6 {pyc} {pyc.replace(.pyc, _decompiled.py)}) print(f已保存{pyc.replace(.pyc, _decompiled.py)})好啦現(xiàn)在整個工程邏輯就完成啦我們運行測試一下可以將EXE文件反編譯到指定文件夾下并生成對應(yīng)的python文件。打開login_decompiled.py就可以看到代碼源文件啦三、PyMe的防護(hù)措施經(jīng)過上面的開發(fā)相信大家對于pyinstaller打包EXE又有了新的認(rèn)識雖然說pyinstaller打包很快很方便但是并不是很安全開發(fā)一些小工具倒是可以但是如果想要有更好的源代碼保護(hù)就建議使用加密打包或Nuitka打包這兩項在PyMe中都支持在發(fā)布時彈出的打包對話框中你可以通過切換打包工具使用nuitka或者直接在pyinstaller中使用加密保護(hù)源碼選項。這兩項都會將源碼先轉(zhuǎn)換成c語言代碼再編譯大大強化EXE的反編譯保護(hù)。最后在PyMe的”案例商店“的文件操作分類中有一個專門測試PyMe工程EXE反編譯的工具案例”EXE2PY“感興趣小伙伴也可以下載體驗。它的原理和本節(jié)類似只是更加完善一些。在本節(jié)的課程中我們通過一個反編譯工具的開發(fā)案例講述了Python打包工具的和反編譯保護(hù)的知識關(guān)注PyMe公眾號教程跟著我繼續(xù)學(xué)習(xí)讓我們一起加油官網(wǎng)www.py-me.com下載https://pyme.lanzoum.com/igiUy3cviulg
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

網(wǎng)站經(jīng)常被掛馬裝修公司網(wǎng)頁設(shè)計模板

網(wǎng)站經(jīng)常被掛馬,裝修公司網(wǎng)頁設(shè)計模板,外面網(wǎng)站怎么做,網(wǎng)絡(luò)推廣理實一體化軟件OpenPCDet空間映射技術(shù)解析#xff1a;多傳感器數(shù)據(jù)融合的實現(xiàn)路徑 【免費下載鏈接】OpenPCDet 項目地

2026/01/21 16:22:01

威海精神文明建設(shè)辦公室網(wǎng)站視頻類網(wǎng)站開發(fā)

威海精神文明建設(shè)辦公室網(wǎng)站,視頻類網(wǎng)站開發(fā),wordpress禁止自動跳轉(zhuǎn),上海市青浦區(qū)建設(shè)局網(wǎng)站簡介 大語言模型通過海量數(shù)據(jù)訓(xùn)練實現(xiàn)量變引起質(zhì)變#xff0c;當(dāng)參數(shù)規(guī)模達(dá)到千億級別時產(chǎn)生涌現(xiàn)能力。

2026/01/21 19:37:01

家電網(wǎng)站源碼怎么建立自己的網(wǎng)站免費

家電網(wǎng)站源碼,怎么建立自己的網(wǎng)站免費,互聯(lián)網(wǎng)網(wǎng)站如何做流量統(tǒng)計,軟件工程學(xué)科評估Linux 系統(tǒng)資源監(jiān)控與管理全解析 在 Linux 系統(tǒng)管理中,監(jiān)控系統(tǒng)資源是一項至關(guān)重要的任務(wù)。通過有效的監(jiān)控,我

2026/01/21 17:27:01

云相冊網(wǎng)站怎么做相冊網(wǎng)站源碼php

云相冊網(wǎng)站怎么做,相冊網(wǎng)站源碼php,廣州網(wǎng)站推廣哪家好,網(wǎng)站建設(shè) 騰Qwen3-VL消費者洞察#xff1a;購物小票識別與消費習(xí)慣建模 在零售數(shù)字化轉(zhuǎn)型的浪潮中#xff0c;一張張看似普通的購物小

2026/01/21 17:14:01