您好,登錄后才能下訂單哦!
小編給大家分享一下易語言源碼被騰訊TP破壞后如何修復,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
DLL命令表
.版本 2 .DLL命令 CopyTo_系統(tǒng)信息段, , , "RtlMoveMemory" .參數(shù) Dest, 系統(tǒng)信息段 .參數(shù) Src, 字節(jié)集 .參數(shù) Length .DLL命令 CopyTo_SectionInfo, , , "RtlMoveMemory" .參數(shù) Dest, _SectionInfo .參數(shù) Src, 字節(jié)集 .參數(shù) Length .DLL命令 CopyFrom_SectionInfo, , , "RtlMoveMemory" .參數(shù) Dest, 字節(jié)集 .參數(shù) Src, _SectionInfo .參數(shù) Length .DLL命令 CopyFrom_SectionHeader, , , "RtlMoveMemory" .參數(shù) Dest, 字節(jié)集 .參數(shù) Src, _SectionHeader .參數(shù) Length .DLL命令 Sizeof_, 整數(shù)型, , "GlobalSize" .參數(shù) p, 系統(tǒng)信息段 .DLL命令 strcpy_bytes, , , "lstrcpyA" .參數(shù) dest, 字節(jié)型, 數(shù)組 .參數(shù) src, 文本型 .DLL命令 LoadLibraryA, 整數(shù)型, "kernel32.dll", "LoadLibraryA" .參數(shù) FilePath, 文本型 .DLL命令 GetProcAddress, 整數(shù)型, "kernel32.dll", "GetProcAddress" .參數(shù) hLib .參數(shù) Name, 文本型 .DLL命令 GetModuleHandleA, 整數(shù)型, "kernel32.dll", "LoadLibraryA" .參數(shù) FilePath, 文本型 .DLL命令 DragAcceptFiles_, , "shell32.dll", "DragAcceptFiles", , 登記窗口是否接受托動文件的內容 .參數(shù) hwnd, 整數(shù)型 .參數(shù) fAccept, 整數(shù)型 .DLL命令 SetWindowLong_, 整數(shù)型, "user32", "SetWindowLongA", , 在窗口結構中為指定的窗口設置信息 指定數(shù)據(jù)的前一個值 .參數(shù) hwnd, 整數(shù)型, , 欲為其取得信息的窗口的句柄 .參數(shù) nIndex, 整數(shù)型, , 請參考GetWindowLong函數(shù)的nIndex參數(shù)的說明 .參數(shù) dwNewLong, 整數(shù)型, , 由nIndex指定的窗口信息的新值; .DLL命令 SetProp_, 整數(shù)型, "user32", "SetPropA", , 增加或修改屬性列項 .參數(shù) hwnd, 整數(shù)型 .參數(shù) lpString, 文本型 .參數(shù) hData, 整數(shù)型 .DLL命令 GetProp_, 整數(shù)型, "user32", "GetPropA", , 從窗口屬性表列中返回數(shù)據(jù)句柄 .參數(shù) hwnd, 整數(shù)型 .參數(shù) lpString, 文本型 .DLL命令 CallWindowProc_, 整數(shù)型, "user32", "CallWindowProcA", , 將消息傳答窗口函數(shù) .參數(shù) lpPrevWndFunc, 整數(shù)型 .參數(shù) hwnd, 整數(shù)型 .參數(shù) msg, 整數(shù)型 .參數(shù) wParam, 整數(shù)型 .參數(shù) lParam, 整數(shù)型 .DLL命令 DragQueryFile_, 整數(shù)型, "shell32.dll", "DragQueryFileA", , 返回托動的文件名 .參數(shù) HDROP, 整數(shù)型 .參數(shù) UINT, 整數(shù)型 .參數(shù) lpStr, 文本型, 傳址 .參數(shù) ch, 整數(shù)型 .DLL命令 DragFinish_, , "shell32.dll", "DragFinish", , 釋放分配用于托動文件的內容 .參數(shù) hDrop, 整數(shù)型 .DLL命令 RemoveProp_, 整數(shù)型, "user32", "RemovePropA", , 刪除屬性列入口 .參數(shù) hwnd, 整數(shù)型 .參數(shù) lpString, 文本型
常量數(shù)據(jù)表
.版本 2 .常量 GWL_WNDPROC, "-4" .常量 WM_DROPFILES, "563" .常量 __輸出塊數(shù)據(jù), "假" .常量 __輸出屬性值, "假" .常量 __輸出Section列表, "假" .常量 __檢查效驗值, "假" .常量 文件類型_源代碼, "1", 公開 .常量 文件類型_模塊, "3", 公開 .常量 編譯類型_Windows窗口程序, "0", 公開 .常量 編譯類型_Windows控制臺程序, "1", 公開 .常量 編譯類型_Windows動態(tài)鏈接庫, "2", 公開 .常量 編譯類型_Windows易語言模塊, "1000", 公開 .常量 編譯類型_Linux控制臺程序, "10000", 公開 .常量 編譯類型_Linux易語言模塊, "11000", 公開 .常量 系統(tǒng)信息段, "“系統(tǒng)信息段”" .常量 用戶信息段, "“用戶信息段”" .常量 程序資源段, "“程序資源段”" .常量 程序段, "“程序段”" .常量 初始模塊段, "“初始模塊段”" .常量 可丟失程序段, "“可丟失程序段”" .常量 編輯信息段1_Maby, "“編輯信息段1”" .常量 編輯信息段2, "“編輯信息段2”" .常量 輔助信息段1, "“輔助信息段1”" .常量 輔助信息段2, "“輔助信息段2”" .常量 易模塊記錄段, "“易模塊記錄段”" .常量 sizeof_系統(tǒng)信息段, "60" .常量 sizeof_SectionHeader, "8" .常量 sizeof_SectionInfo, "92" .常量 sizeof_DWORD, "4" .常量 Magic_加密源碼, "1162630231", , "WTLE" .常量 Magic_文件標志1, "1415007811", , "CNWT" .常量 Magic_文件標志2, "1196576837", , "EPRG" .常量 Magic_Section, "353465113", , 19 73 11 15 .常量 no_key_ec_node, "117469977", , 07 00 73 19 .常量 xF0000000, "4026531840", , 0xF0000000 .常量 x00FFFFFF, "16777215", , 0x00FFFFFF .常量 程序段_變量_屬性_靜態(tài), "1", 公開 .常量 程序段_變量_屬性_參考, "2", 公開 .常量 程序段_變量_屬性_傳址, "2", 公開 .常量 程序段_變量_屬性_可空, "4", 公開 .常量 程序段_變量_屬性_數(shù)組, "8", 公開 .常量 程序段_變量_屬性_公開, "256", 公開 .常量 程序段_函數(shù)_屬性_公開, "8", 公開 .常量 程序段_數(shù)據(jù)類型_屬性_公開, "1", 公開 .常量 程序段_DLL_屬性_公開, "2", 公開 .常量 資源段_常量_頁面_常量, "1" .常量 資源段_常量_頁面_圖片, "2" .常量 資源段_常量_頁面_聲音, "3" .常量 資源段_常量_類型_空白, "22" .常量 資源段_常量_類型_數(shù)值, "23" .常量 資源段_常量_類型_邏輯, "24" .常量 資源段_常量_類型_日期, "25" .常量 資源段_常量_類型_文本, "26" .常量 資源段_常量_屬性_未檢查, "1", 公開 .常量 資源段_常量_屬性_公開, "2", 公開 .常量 資源段_常量_屬性_長文本常量, "16", 公開 .常量 數(shù)據(jù)類型_空白型, "0", 公開, 0x00000000 .常量 數(shù)據(jù)類型_字節(jié)型, "-2147483391", 公開, 0x80000101 .常量 數(shù)據(jù)類型_短整數(shù), "-2147483135", 公開, 0x80000201 .常量 數(shù)據(jù)類型_整數(shù)型, "-2147482879", 公開, 0x80000301 .常量 數(shù)據(jù)類型_長整數(shù)型, "-2147482623", 公開, 0x80000401 .常量 數(shù)據(jù)類型_小數(shù)型, "-2147482367", 公開, 0x80000501 .常量 數(shù)據(jù)類型_雙精度小數(shù), "-2147482111", 公開, 0x80000601 .常量 數(shù)據(jù)類型_邏輯型, "-2147483646", 公開, 0x80000002 .常量 數(shù)據(jù)類型_日期時間型, "-2147483645", 公開, 0x80000003 .常量 數(shù)據(jù)類型_文本型, "-2147483644", 公開, 0x80000004 .常量 數(shù)據(jù)類型_字節(jié)集, "-2147483643", 公開, 0x80000005 .常量 數(shù)據(jù)類型_子程序指針, "-2147483642", 公開, 0x80000006 .常量 op4_1, "1" .常量 op4_23, "23" .常量 op4_24, "24" .常量 op4_25, "25" .常量 op4_26, "26" .常量 op4_27, "27" .常量 op4_28, "28" .常量 op4_29, "29" .常量 op4_30, "30" .常量 op4_31, "31" .常量 op4_32, "32" .常量 op4_33, "33" .常量 op4_34, "34" .常量 op4_35, "35" .常量 op1_33, "33" .常量 op1_54, "54" .常量 op1_55, "55" .常量 op1_56, "56" .常量 op1_57, "57" .常量 op1_58, "58" .常量 op1_59, "59"
自定義數(shù)據(jù)類型表
.版本 2 .數(shù)據(jù)類型 ProSet .成員 讀取代碼, 邏輯型 .成員 讀取資源, 邏輯型 .數(shù)據(jù)類型 系統(tǒng)信息段, 公開 .成員 編譯版本1, 短整數(shù)型 .成員 編譯版本2, 短整數(shù)型 .成員 Unknow_1 .成員 Unknow_2 .成員 未知類型 .成員 文件類型 .成員 Unknow_3 .成員 編譯類型 .成員 Unknow_9, , , "8" .數(shù)據(jù)類型 用戶信息段, 公開 .成員 程序名稱, 文本型 .成員 程序備注, 文本型 .成員 作者, 文本型 .成員 郵政編碼, 文本型 .成員 聯(lián)系地址, 文本型 .成員 電話, 文本型 .成員 傳真, 文本型 .成員 電子信箱, 文本型 .成員 主頁, 文本型 .成員 其他, 文本型 .成員 版本號1 .成員 版本號2 .數(shù)據(jù)類型 資源段, 公開 .成員 窗體, 資源段_窗體, , "1" .成員 常量, 資源段_常量, , "1" .成員 reserve .數(shù)據(jù)類型 資源段_窗體, 公開 .成員 段頭, 塊段頭 .成員 未知1 .成員 未知2 .成員 左邊, 整數(shù)型 .成員 名稱, 文本型 .成員 備注, 文本型 .成員 元素, 資源段_窗體_元素, , "1" .數(shù)據(jù)類型 資源段_窗體_元素, 公開 .成員 保留 .數(shù)據(jù)類型 資源段_常量, 公開 .成員 標志符 .成員 Offset .成員 dwLength .成員 屬性, 短整數(shù)型 .成員 名稱, 文本型 .成員 備注, 文本型 .成員 數(shù)據(jù), 變體型 .成員 是否為長文本, 邏輯型 .成員 結果, 文本型 .數(shù)據(jù)類型 程序段, 公開 .成員 頭信息, 程序段_頭信息 .成員 代碼頁, 程序段_代碼頁, , "1" .成員 函數(shù)組, 程序段_函數(shù), , "1" .成員 全局變量, 程序段_變量, , "1" .成員 數(shù)據(jù)類型, 程序段_數(shù)據(jù)類型, , "1" .成員 Dll, 程序段_Dll, , "1" .數(shù)據(jù)類型 程序段_數(shù)據(jù)類型, 公開 .成員 段頭, 塊段頭 .成員 屬性 .成員 名稱, 文本型 .成員 備注, 文本型 .成員 成員組, 程序段_變量, , "1" .數(shù)據(jù)類型 程序段_Dll, 公開 .成員 段頭, 塊段頭 .成員 屬性 .成員 返回類型, 整數(shù)型 .成員 名稱, 文本型 .成員 備注, 文本型 .成員 文件名, 文本型 .成員 命令名, 文本型 .成員 參數(shù)組, 程序段_變量, , "1" .數(shù)據(jù)類型 程序段_頭信息, 公開 .成員 VerFlag1 .成員 Unk1 .成員 Unk2_1, 字節(jié)集 .成員 Unk2_2, 字節(jié)集 .成員 Unk2_3, 字節(jié)集 .成員 支持庫信息, 文本型, , "1" .成員 Flag1 .成員 Flag2 .成員 Unk3_Op, 字節(jié)集 .成員 調試命令行, 文本型 .成員 ICO圖標, 字節(jié)集 .數(shù)據(jù)類型 塊段頭, 公開 .成員 dwID .成員 dwUnk .數(shù)據(jù)類型 程序段_代碼頁, 公開 .成員 段頭, 塊段頭 .成員 Unk1 .成員 基類 .成員 名稱, 文本型 .成員 備注, 文本型 .成員 函數(shù)組標志, 整數(shù)型, , "1" .成員 頁面變量, 程序段_變量, , "1" .數(shù)據(jù)類型 程序段_函數(shù), 公開 .成員 段頭, 塊段頭 .成員 類型 .成員 屬性 .成員 返回類型 .成員 名稱, 文本型 .成員 備注, 文本型 .成員 變量, 程序段_變量, , "1" .成員 參數(shù), 程序段_變量, , "1" .成員 數(shù)據(jù)1, 字節(jié)集 .成員 數(shù)據(jù)2, 字節(jié)集 .成員 數(shù)據(jù)3, 字節(jié)集 .成員 數(shù)據(jù)4, 字節(jié)集 .成員 數(shù)據(jù)5, 字節(jié)集 .成員 代碼, 字節(jié)集 .數(shù)據(jù)類型 程序段_代碼行 .成員 dwFuncId .成員 類型, , , , -4=??;-3=DLL指令;-2=用戶子程序;-1=空;>=0時,則為支持庫索引列表 .成員 未驗證代碼, 文本型 .成員 備注, 文本型 .數(shù)據(jù)類型 程序段_變量, 公開 .成員 標志符, 整數(shù)型 .成員 Offset .成員 dwLength .成員 數(shù)據(jù)類型 .成員 屬性, 短整數(shù)型 .成員 數(shù)組維數(shù), 字節(jié)型 .成員 數(shù)組下標值, , , "1" .成員 名稱, 文本型 .成員 備注, 文本型 .數(shù)據(jù)類型 初始模塊段, 公開 .成員 保留 .數(shù)據(jù)類型 可丟失程序段, 公開 .成員 保留 .數(shù)據(jù)類型 編輯信息段1, 公開 .成員 保留 .數(shù)據(jù)類型 編輯信息段2, 公開 .成員 保留 .數(shù)據(jù)類型 輔助信息段1, 公開 .成員 保留 .數(shù)據(jù)類型 輔助信息段2, 公開 .成員 保留 .數(shù)據(jù)類型 易模塊記錄段, 公開 .成員 保留 .數(shù)據(jù)類型 _FileHeader .成員 Magic1, 整數(shù)型 .成員 Magic2, 整數(shù)型 .數(shù)據(jù)類型 _SectionHeader .成員 Magic, 整數(shù)型 .成員 Info_CheckSum, 整數(shù)型 .數(shù)據(jù)類型 _SectionInfo .成員 Key, 字節(jié)型, , "4" .成員 Name, 字節(jié)型, , "30" .成員 reserve_fill_1, 短整數(shù)型 .成員 Index, 整數(shù)型 .成員 Flag1, 整數(shù)型, , , 1=ec info .成員 Data_CheckSum, 整數(shù)型 .成員 DataLength, 整數(shù)型 .成員 reserve_item, 整數(shù)型, , "10" .數(shù)據(jù)類型 分析選項, 公開 .成員 禁讀_主要頁面, 邏輯型 .成員 禁讀_程序代碼, 邏輯型 .成員 禁讀_資源數(shù)據(jù), 邏輯型
修復分析的代碼
.版本 2 .程序集 修復分析 .程序集變量 g_LastError, 文本型 .子程序 分析_取最后錯誤文本, 文本型 返回 (g_LastError) .子程序 分析_設置錯誤文本 .參數(shù) text, 文本型 g_LastError = text .子程序 Error .參數(shù) text, 文本型 輸出調試文本 (“[Error]” + text) 分析_設置錯誤文本 (text) .如果 (是否為調試版 ()) 輸出調試文本 (“[Error]” + text) .否則 信息框 (text, #錯誤圖標, “LD提示:”, ) .如果結束 .子程序 RepairLog .參數(shù) text, 文本型 輸出調試文本 (text) .子程序 分析_易文件, 邏輯型 .參數(shù) 文件路徑, 文本型 .參數(shù) 文件密碼, 文本型, 可空 .參數(shù) __修復文件, 邏輯型, 可空 .參數(shù) 分析選項, 分析選項, 可空 .參數(shù) 系統(tǒng)信息段, 系統(tǒng)信息段, 可空 .參數(shù) 用戶信息段, 用戶信息段, 可空 .參數(shù) 程序資源段, 資源段, 可空 .參數(shù) 程序段, 程序段, 可空 .參數(shù) 初始模塊段, 初始模塊段, 可空 .參數(shù) 可丟失程序段, 可丟失程序段, 可空 .參數(shù) 編輯信息段1, 編輯信息段1, 可空 .參數(shù) 編輯信息段2, 編輯信息段2, 可空 .參數(shù) 輔助信息段1, 輔助信息段1, 可空 .參數(shù) 輔助信息段2, 輔助信息段2, 可空 .參數(shù) 易模塊記錄段, 易模塊記錄段, 可空 .局部變量 file, 讀取 .局部變量 Block_Data, 字節(jié)集 .局部變量 Block_Name, 文本型 .局部變量 FileHead, _FileHeader .局部變量 是否有密碼, 邏輯型 是否有密碼 = file.is_have_password (文件路徑) .如果真 (file.Open (文件路徑, __修復文件, 文件密碼) = 假) Error (“打開文件失敗”) 返回 (假) .如果真結束 FileHead = file.Read_FileHeader () .如果真 (FileHead.Magic1 ≠ #Magic_文件標志1) .如果 (是否有密碼 = 假) Error (“頭標志1錯誤”) .否則 Error (“密碼錯誤或頭標志1錯誤”) .如果結束 file.Close () 返回 (假) .如果真結束 .如果真 (FileHead.Magic2 ≠ #Magic_文件標志2) .如果 (是否有密碼 = 假) Error (“頭標志2錯誤”) .否則 Error (“密碼錯誤或頭標志2錯誤”) .如果結束 file.Close () 返回 (假) .如果真結束 Block_Data = { } .判斷循環(huán)首 (真) .如果真 (__修復文件) Repair_NodeInfo (file, 取字節(jié)集長度 (Block_Data)) .如果真結束 .如果真 (file.Read_Section (Block_Name, Block_Data) = 假) 跳出循環(huán) () .如果真結束 .如果真 (#__輸出Section列表) 輸出調試文本 (Block_Name) .如果真結束 .判斷開始 (Block_Name = “”) 跳出循環(huán) () .判斷 (Block_Name = #系統(tǒng)信息段) .如果真 (是否為空 (系統(tǒng)信息段) = 假) 系統(tǒng)信息段 = 分析_系統(tǒng)信息段 (Block_Data) .如果真結束 .判斷 (Block_Name = #用戶信息段) .如果真 (是否為空 (用戶信息段) = 假) 用戶信息段 = 分析_用戶信息段 (Block_Data) .如果真結束 .判斷 (Block_Name = #程序資源段) .如果真 (是否為空 (程序資源段) = 假) 程序資源段 = 分析_資源段 (Block_Data, 分析選項) .如果真結束 .判斷 (Block_Name = #程序段) .如果真 (是否為空 (程序段) = 假) 程序段 = 分析_程序段 (Block_Data, 分析選項) .如果真結束 .判斷 (Block_Name = #初始模塊段) .如果真 (是否為空 (系統(tǒng)信息段) = 假) 初始模塊段 = 分析_初始模塊段 (Block_Data) .如果真結束 .判斷 (Block_Name = #可丟失程序段) .如果真 (是否為空 (可丟失程序段) = 假) 可丟失程序段 = 分析_可丟失程序段 (Block_Data) .如果真結束 .判斷 (Block_Name = #編輯信息段1_Maby) .如果真 (是否為空 (編輯信息段1) = 假) 編輯信息段1 = 分析_編輯信息段1 (Block_Data) .如果真結束 .判斷 (Block_Name = #編輯信息段2) .如果真 (是否為空 (編輯信息段2) = 假) 編輯信息段2 = 分析_編輯信息段2 (Block_Data) .如果真結束 .判斷 (Block_Name = #輔助信息段1) .如果真 (是否為空 (輔助信息段1) = 假) 輔助信息段1 = 分析_輔助信息段1 (Block_Data) .如果真結束 .判斷 (Block_Name = #輔助信息段2) .如果真 (是否為空 (輔助信息段2) = 假) 輔助信息段2 = 分析_輔助信息段2 (Block_Data) .如果真結束 .判斷 (Block_Name = #易模塊記錄段) .如果真 (是否為空 (易模塊記錄段) = 假) 易模塊記錄段 = 分析_易模塊記錄段 (Block_Data) .如果真結束 .默認 Error (“未知段[” + Block_Name + “]”) .判斷結束 .如果真 (#__輸出塊數(shù)據(jù)) 創(chuàng)建目錄 (取運行目錄 () + “\” + Block_Name) .如果真 (Block_Data ≠ { }) 寫到文件 (取運行目錄 () + “\” + Block_Name + “\” + 輔_取文件名稱 (文件路徑) + “.txt”, Block_Data) .如果真結束 .如果真結束 .判斷循環(huán)尾 () file.Close () 返回 (真) .子程序 分析_易模塊記錄段, 易模塊記錄段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 易模塊記錄段 返回 (Info) .子程序 分析_輔助信息段1, 輔助信息段1 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 輔助信息段1 返回 (Info) .子程序 分析_輔助信息段2, 輔助信息段2 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 輔助信息段2 返回 (Info) .子程序 分析_編輯信息段1, 編輯信息段1 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 編輯信息段1 返回 (Info) .子程序 分析_編輯信息段2, 編輯信息段2 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 編輯信息段2 返回 (Info) .子程序 分析_可丟失程序段, 可丟失程序段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 可丟失程序段 返回 (Info) .子程序 分析_初始模塊段, 初始模塊段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 初始模塊段 返回 (Info) .子程序 分析_系統(tǒng)信息段, 系統(tǒng)信息段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 系統(tǒng)信息段 CopyTo_系統(tǒng)信息段 (Info, 數(shù)據(jù), #sizeof_系統(tǒng)信息段) .如果真 (是否為調試版 ()) .如果真 (Info.Unknow_1 ≠ 1 或 Info.Unknow_2 ≠ 1 或 Info.Unknow_3 ≠ 0 或 到字節(jié)集 (Info.Unknow_9) ≠ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }) .如果真結束 .如果真結束 返回 (Info) .子程序 分析_用戶信息段, 用戶信息段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 Info, 用戶信息段 .局部變量 offset offset = 1 Info.程序名稱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.程序備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.作者 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.郵政編碼 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.聯(lián)系地址 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.電話 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.傳真 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.電子信箱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.主頁 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.其他 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.版本號1 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.版本號2 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) 返回 (Info) .子程序 Repair_NodeInfo, 邏輯型 .參數(shù) file, 讀取 .參數(shù) LastSize .局部變量 Header, _SectionHeader .局部變量 Info, _SectionInfo .局部變量 extern, 字節(jié)集 .局部變量 bak .局部變量 length .局部變量 checksum .局部變量 Repair, 邏輯型 .如果真 (file.IsEof ()) 返回 (假) .如果真結束 bak = file.GetPos () Header = file.Read_SectionHeader () .如果真 (Header.Magic ≠ #Magic_Section) length = 0 - #sizeof_SectionHeader - #sizeof_SectionInfo .判斷循環(huán)首 (file.IsEof () = 假) file.MoveTo (#文件首, bak + length) Header.Magic = file.ReadInt () .如果真 (Header.Magic = #Magic_Section) 跳出循環(huán) () .如果真結束 length = length + 1 .判斷循環(huán)尾 () .如果真 (Header.Magic ≠ #Magic_Section) file.MoveTo (#文件首, bak) 返回 (假) .如果真結束 .如果 (length ≥ 0) file.MoveTo (#文件首, bak) extern = file.ReadData (length) Info.DataLength = length Info.Data_CheckSum = GetCheckValue (extern) Info.Key [1] = 204 Info.Key [2] = 204 Info.Key [3] = 204 Info.Key [4] = 204 strcpy_bytes (Info.Name, “待修復”) Decode_Str (Info.Name, Info.Key) Header.Info_CheckSum = GetSectionInfoCheckSum (Info) file.MoveTo (#文件首, bak) file.InsertSection (Header, Info) file.MoveTo (#文件首, bak) Header = file.Read_SectionHeader () .否則 .如果結束 .如果真結束 Info = file.Read_SectionInfo () extern = file.ReadData (Info.DataLength) checksum = GetCheckValue (extern) .如果真 (Info.Data_CheckSum ≠ checksum) Info.Data_CheckSum = checksum Repair = 真 .如果真結束 checksum = GetSectionInfoCheckSum (Info) .如果真 (Header.Info_CheckSum ≠ checksum) Header.Info_CheckSum = checksum Repair = 真 .如果真結束 .如果真 (Repair = 真) file.MoveTo (#文件首, bak) file.Write_SectionHeader (Header) file.Write_SectionInfo (Info) Decode_Str (Info.Name, Info.Key) RepairLog (“[” + 到文本 (Info.Name) + “]損壞”) .如果真結束 file.MoveTo (#文件首, bak) 返回 (真) .子程序 Repair_Write .參數(shù) hFile .參數(shù) CheckAddr_Head .參數(shù) CheckAddr_Data .參數(shù) HeadAddr .參數(shù) HeadSize .參數(shù) DataAddr .參數(shù) DataSize .局部變量 bak .局部變量 bin, 字節(jié)集 bak = 取讀寫位置 (hFile) 移動讀寫位置 (hFile, , DataAddr) bin = 讀入字節(jié)集 (hFile, DataSize) 移動讀寫位置 (hFile, , CheckAddr_Data) .如果真 (寫出數(shù)據(jù) (hFile, GetCheckValue (bin)) = 假) Error (“修正失敗[數(shù)據(jù)]”) .如果真結束 移動讀寫位置 (hFile, , HeadAddr) bin = 讀入字節(jié)集 (hFile, HeadSize) 移動讀寫位置 (hFile, , CheckAddr_Head) .如果真 (寫出數(shù)據(jù) (hFile, GetCheckValue (bin)) = 假) Error (“修正失敗[頭]”) .如果真結束 移動讀寫位置 (hFile, , bak) .子程序 GetCheckValue, 整數(shù)型 .參數(shù) data, 字節(jié)集 .局部變量 data_len .局部變量 key, 字節(jié)集 .局部變量 key_len .局部變量 i .局部變量 ret_key key_len = 4 key = 取空白字節(jié)集 (key_len) data_len = 取字節(jié)集長度 (data) i = 0 .判斷循環(huán)首 (i < data_len) key [i % key_len + 1] = 位異或 (key [i % key_len + 1], data [i + 1]) i = i + 1 .判斷循環(huán)尾 () ret_key = 取字節(jié)集數(shù)據(jù) (key, #整數(shù)型, ) 返回 (ret_key) .子程序 Decode_Str .參數(shù) data, 字節(jié)型, 數(shù)組 .參數(shù) key, 字節(jié)型, 數(shù)組 .局部變量 key_i .局部變量 key_len .局部變量 i, 整數(shù)型 key_len = 取數(shù)組成員數(shù) (key) key_i = 1 .計次循環(huán)首 (取數(shù)組成員數(shù) (data), i) data [i] = 位異或 (data [i], key [key_i % key_len + 1]) key_i = key_i + 1 .計次循環(huán)尾 ()
數(shù)據(jù)
.版本 2 .程序集 數(shù)據(jù) .子程序 GET_HIGHT_TYPE, 整數(shù)型 .參數(shù) DWORD 返回 (右移 (位與 (DWORD, #xF0000000), 8 + 8 + 8 + 4)) .子程序 GET_LINK_TYPE, 整數(shù)型 .參數(shù) DWORD, 整數(shù)型 返回 (位與 (DWORD, #x00FFFFFF)) .子程序 取數(shù)據(jù)_字節(jié), 短整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #字節(jié)型, offset)) .子程序 取數(shù)據(jù)_短整數(shù), 短整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #短整數(shù)型, offset)) .子程序 取數(shù)據(jù)_整數(shù), 整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #整數(shù)型, offset)) .子程序 取數(shù)據(jù)_邏輯, 邏輯型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #邏輯型, offset)) .子程序 取數(shù)據(jù)_雙精度小數(shù), 雙精度小數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #雙精度小數(shù)型, offset)) .子程序 取數(shù)據(jù)_日期時間, 日期時間型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #日期時間型, offset)) .子程序 取數(shù)據(jù)_文本數(shù)組 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) ret_arg, 文本型, 數(shù)組 .局部變量 wCount, 短整數(shù)型 .局部變量 i wCount = 取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset) 重定義數(shù)組 (ret_arg, 假, wCount) .計次循環(huán)首 (wCount, i) ret_arg [i] = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) .計次循環(huán)尾 () .子程序 取數(shù)據(jù)_數(shù)據(jù)文本, 文本型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (到文本 (取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset))) .子程序 取數(shù)據(jù)_標準文本, 文本型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 返回 (取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #文本型, offset)) .子程序 取數(shù)據(jù)_動態(tài)數(shù)據(jù), 字節(jié)集 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .局部變量 len len = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) 返回 (取數(shù)據(jù)_指定數(shù)據(jù) (數(shù)據(jù), offset, len)) .子程序 取數(shù)據(jù)_指定數(shù)據(jù), 字節(jié)集 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) length .局部變量 data, 字節(jié)集 .如果真 (length < 0) Error (“Read Data Error”) 返回 ({ }) .如果真結束 .如果真 (length = 0) 返回 ({ }) .如果真結束 data = 取字節(jié)集中間 (數(shù)據(jù), offset, length) offset = offset + length 返回 (data) .子程序 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù), 字節(jié)集 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .局部變量 len len = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) offset = offset + len 返回 ({ }) .子程序 數(shù)據(jù)轉換, 文本型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .局部變量 i, 整數(shù)型 i = 取字節(jié)集數(shù)據(jù) (數(shù)據(jù), #整數(shù)型, offset) 返回 (到文本 (readBytes (i, 數(shù)據(jù), offset))) .子程序 readBytes, 字節(jié)集 .參數(shù) length, 整數(shù)型 .參數(shù) data, 字節(jié)集 .參數(shù) offset, , 參考 .局部變量 d, 字節(jié)集 d = 取字節(jié)集中間 (data, offset, length) offset = offset + length 返回 (d)
分析程序段
.版本 2 .程序集 分析程序段 .子程序 分析_程序段, 程序段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) 分析選項, 分析選項 .局部變量 offset .局部變量 Info, 程序段 .局部變量 Count .局部變量 i, 整數(shù)型 .局部變量 段組, 塊段頭, , "0" offset = 1 分析_程序段_基本信息 (數(shù)據(jù), offset, Info.頭信息) .如果真 (分析選項.禁讀_主要頁面 = 假) Count = 分析_塊_段頭 (數(shù)據(jù), offset, 段組) 重定義數(shù)組 (Info.代碼頁, 假, Count) .計次循環(huán)首 (Count, i) Info.代碼頁 [i].段頭 = 段組 [i] 分析_程序段_程序集 (數(shù)據(jù), offset, Info.代碼頁 [i]) .計次循環(huán)尾 () Count = 分析_塊_段頭 (數(shù)據(jù), offset, 段組) 重定義數(shù)組 (Info.函數(shù)組, 假, Count) .計次循環(huán)首 (Count, i) Info.函數(shù)組 [i].段頭 = 段組 [i] 分析_程序段_函數(shù) (數(shù)據(jù), offset, Info.函數(shù)組 [i], Info, 分析選項) .計次循環(huán)尾 () 分析_程序段_變量_數(shù)據(jù) (Info.全局變量, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) Count = 分析_塊_段頭 (數(shù)據(jù), offset, 段組) 重定義數(shù)組 (Info.數(shù)據(jù)類型, 假, Count) .計次循環(huán)首 (Count, i) Info.數(shù)據(jù)類型 [i].段頭 = 段組 [i] 分析_程序段_數(shù)據(jù)類型 (數(shù)據(jù), offset, Info.數(shù)據(jù)類型 [i]) .計次循環(huán)尾 () Count = 分析_塊_段頭 (數(shù)據(jù), offset, 段組) 重定義數(shù)組 (Info.Dll, 假, Count) .計次循環(huán)首 (Count, i) Info.Dll [i].段頭 = 段組 [i] 分析_程序段_Dll (數(shù)據(jù), offset, Info.Dll [i]) .計次循環(huán)尾 () .如果真結束 返回 (Info) .子程序 分析_程序段_數(shù)據(jù)類型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) Info, 程序段_數(shù)據(jù)類型 .局部變量 Count Info.屬性 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.名稱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) 分析_程序段_變量_數(shù)據(jù) (Info.成員組, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) .子程序 分析_程序段_Dll .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) Info, 程序段_Dll .局部變量 Count Info.屬性 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.返回類型 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.名稱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.文件名 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.命令名 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) 分析_程序段_變量_數(shù)據(jù) (Info.參數(shù)組, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) .子程序 分析_塊_段頭, 整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) List, 塊段頭, 數(shù)組 .局部變量 Length .局部變量 Count .局部變量 i, 整數(shù)型 Length = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Count = Length ÷ 8 重定義數(shù)組 (List, 假, Count) i = offset .計次循環(huán)首 (Count, i) List [i].dwID = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () .計次循環(huán)首 (Count, i) List [i].dwUnk = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () 返回 (Count) .子程序 分析_程序段_函數(shù) .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) Info, 程序段_函數(shù) .參數(shù) global, 程序段 .參數(shù) 分析選項, 分析選項 .局部變量 count, 整數(shù)型 Info.類型 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.屬性 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.返回類型 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.名稱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) 分析_程序段_變量_數(shù)據(jù) (Info.變量, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) 分析_程序段_變量_數(shù)據(jù) (Info.參數(shù), 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) .如果 (分析選項.禁讀_程序代碼) Info.數(shù)據(jù)1 = 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)2 = 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)3 = 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)4 = 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)5 = 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.代碼 = 取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) .否則 Info.數(shù)據(jù)1 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)2 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)3 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)4 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.數(shù)據(jù)5 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.代碼 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) 輸出調試文本 (選擇 (Info.名稱 = “”, “sub_” + 取十六進制文本 (Info.段頭.dwID), Info.名稱)) 分析_程序段_代碼 (Info.代碼, global) .如果結束 .子程序 分析_程序段_代碼 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) Info, 程序段 .局部變量 offset offset = 1 .判斷循環(huán)首 (offset ≤ 取字節(jié)集長度 (數(shù)據(jù)) 且 offset ≠ -1) .如果真 (IsUnkType (取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset)) = 假) 到循環(huán)尾 () .如果真結束 .如果真 (位與 (取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset + 6), 40) = 32) 到循環(huán)尾 () .如果真結束 分析_程序段_行 (數(shù)據(jù), offset, Info) offset = offset + GetFEndLen3 (數(shù)據(jù), offset) .判斷循環(huán)尾 () .子程序 分析_程序段_行 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset .參數(shù) Info, 程序段 .局部變量 line, 程序段_代碼行 .局部變量 tmp line.dwFuncId = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) line.類型 = 取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset) tmp = 取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset) line.未驗證代碼 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) line.備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) .判斷開始 (line.類型 ≥ 0) 輸出調試文本 (取支持庫信指令 (Info.頭信息, line.類型, line.dwFuncId), line.未驗證代碼, line.類型, tmp) .判斷 (line.類型 = -2) 輸出調試文本 (取用戶定義指令 (Info.函數(shù)組, line.dwFuncId), line.未驗證代碼, line.類型, tmp) .默認 輸出調試文本 (取十六進制文本 (line.dwFuncId), line.未驗證代碼, line.類型, tmp) .判斷結束 tmp = 取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) .子程序 GetFHdrType1, 整數(shù)型 .參數(shù) type, 字節(jié)型 .判斷開始 (type ≥ 106 且 type ≤ 117) 返回 (4) .判斷 (type ≥ 80 且 type ≤ 85) 返回 (5) .判斷 (type ≥ 54 且 type ≤ 59) 返回 (2) .判斷 (type ≥ 22 且 type ≤ 35) 返回 (1) .判斷 (type = 1) 返回 (3) .默認 返回 (0) .判斷結束 .子程序 GetFEndLen1, 整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset .局部變量 tmp .局部變量 bak_offset bak_offset = offset tmp = 取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) .如果真 (tmp = #op1_54) 返回 (1) .如果真結束 tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷循環(huán)首 (真) tmp = 取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) .判斷開始 (tmp = #op1_56) offset = offset - 1 + GetFEndLen1 (數(shù)據(jù), offset) .判斷 (tmp = #op1_57) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op1_58) ' 到循環(huán)尾 () .判斷 (tmp = #op1_59) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op1_33) offset = offset + GetFEndLen3 (數(shù)據(jù), offset) .判斷 (tmp = #op1_55) 跳出循環(huán) () .默認 輸出調試文本 (“unknow type cmd1:” + 到文本 (tmp)) 跳出循環(huán) () .判斷結束 .判斷循環(huán)尾 () .如果真 (offset = -1) 暫停 () 返回 (0) .如果真結束 返回 (offset - bak_offset) .子程序 GetFEndLen4, 整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset .局部變量 tmp .局部變量 bak_offset .局部變量 tmp_str, 文本型 bak_offset = offset tmp = 取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) .判斷開始 (tmp = 0) .判斷 (tmp = #op4_1) ' // .判斷 (tmp = #op4_24) tmp = 取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op4_26) tmp_str = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) .判斷 (tmp = #op4_28) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op4_27 或 tmp = #op4_30) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op4_35) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op4_23 或 tmp = #op4_25) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) tmp = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .判斷 (tmp = #op4_29) offset = offset + GetFEndLen1 (數(shù)據(jù), offset) .判斷 (tmp = #op4_33 或 tmp = #op4_34) offset = offset + GetFEndLen3 (數(shù)據(jù), offset) .判斷 (tmp = #op4_31) .判斷循環(huán)首 (取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) ≠ #op4_32 且 offset ≠ -1) offset = offset + GetFEndLen4 (數(shù)據(jù), offset) .判斷循環(huán)尾 () .判斷 (tmp = 22) .默認 輸出調試文本 (“unknow type cmd4:” + 到文本 (tmp)) .判斷結束 .如果真 (offset = -1) 返回 (1) .如果真結束 返回 (offset - bak_offset) .子程序 GetFEndLen3, 整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset .局部變量 bak_offset .局部變量 tmp_str, 文本型 bak_offset = offset offset = offset + 8 tmp_str = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) 檢查 (offset ≠ -1) tmp_str = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) 檢查 (offset ≠ -1) offset = offset + GetFEndLen1 (數(shù)據(jù), offset) 檢查 (offset ≠ -1) offset = offset + GetFEndLen4_loop (數(shù)據(jù), offset) 返回 (offset - bak_offset) .子程序 GetFEndLen4_loop, 整數(shù)型 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset .局部變量 bak_offset bak_offset = offset .判斷循環(huán)首 (取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset + 1 - 1) ≠ #op4_1) offset = offset + GetFEndLen4 (數(shù)據(jù), offset) .判斷循環(huán)尾 () offset = offset + 1 返回 (offset - bak_offset) .子程序 IsUnkType, 邏輯型 .參數(shù) type, 字節(jié)型 .判斷開始 (type = 33) 返回 (真) .判斷 (GetFHdrType1 (type) = 4 且 type ≠ 114 且 type ≠ 115 且 type ≠ 116 且 type ≠ 109 且 type ≠ 111 且 type ≠ 117) 返回 (真) .默認 返回 (假) .判斷結束 .子程序 分析_程序段_程序集 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) Info, 程序段_代碼頁 .局部變量 Bin, 字節(jié)集 .局部變量 i, 整數(shù)型 .局部變量 length .局部變量 count Info.Unk1 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.基類 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.名稱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) Info.備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) length = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) count = length ÷ 4 重定義數(shù)組 (Info.函數(shù)組標志, 假, count) .計次循環(huán)首 (count, i) Info.函數(shù)組標志 [i] = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () 分析_程序段_變量_數(shù)據(jù) (Info.頁面變量, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) .子程序 分析_程序段_變量_數(shù)據(jù) .參數(shù) list, 程序段_變量, 數(shù)組 .參數(shù) count .參數(shù) 數(shù)據(jù), 字節(jié)集 .局部變量 offset .局部變量 i .局部變量 i2 .局部變量 text, 文本型 重定義數(shù)組 (list, 假, count) .如果真 (count = 0) 返回 () .如果真結束 offset = 1 .計次循環(huán)首 (count, i) list [i].標志符 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () .計次循環(huán)首 (count, i) list [i].Offset = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () .計次循環(huán)首 (count, i) list [i].Offset = list [i].Offset + offset .計次循環(huán)尾 () .計次循環(huán)首 (取數(shù)組成員數(shù) (list), i) offset = list [i].Offset list [i].dwLength = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) list [i].數(shù)據(jù)類型 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) list [i].屬性 = 取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset) list [i].數(shù)組維數(shù) = 取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) 重定義數(shù)組 (list [i].數(shù)組下標值, 假, list [i].數(shù)組維數(shù)) .計次循環(huán)首 (list [i].數(shù)組維數(shù), i2) list [i].數(shù)組下標值 [i2] = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () list [i].名稱 = 取數(shù)據(jù)_標準文本 (數(shù)據(jù), offset) list [i].備注 = 取數(shù)據(jù)_標準文本 (數(shù)據(jù), offset) .計次循環(huán)尾 () .子程序 分析_程序段_基本信息 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, , 參考 .參數(shù) Info, 程序段_頭信息 Info.VerFlag1 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.Unk1 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.Unk2_1 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.Unk2_2 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.Unk2_3 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) 取數(shù)據(jù)_文本數(shù)組 (數(shù)據(jù), offset, Info.支持庫信息) Info.Flag1 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) Info.Flag2 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .如果真 (位與 (Info.Flag1, 1) ≠ 0) Info.Unk3_Op = 取數(shù)據(jù)_指定數(shù)據(jù) (數(shù)據(jù), offset, 16) .如果真結束 Info.ICO圖標 = 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset) Info.調試命令行 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset)
分析資源段
.版本 2 .程序集 分析資源段 .子程序 分析_資源段, 資源段 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) 分析選項, 分析選項 .局部變量 Info, 資源段 .局部變量 offset .局部變量 i .局部變量 Count .局部變量 段組, 塊段頭, , "0" offset = 1 Count = 分析_塊_段頭 (數(shù)據(jù), offset, 段組) 重定義數(shù)組 (Info.窗體, 假, Count) .計次循環(huán)首 (Count, i) Info.窗體 [i].段頭 = 段組 [i] 分析_資源段_窗體 (數(shù)據(jù), offset, Info.窗體 [i]) .計次循環(huán)尾 () 分析_資源段_常量 (Info.常量, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset), 分析選項) Info.reserve = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) 返回 (Info) .子程序 分析_資源段_窗體 .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) offset, 整數(shù)型, 參考 .參數(shù) info, 資源段_窗體 .局部變量 count info.未知1 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) info.未知2 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) info.名稱 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) info.備注 = 取數(shù)據(jù)_數(shù)據(jù)文本 (數(shù)據(jù), offset) 分析_資源段_窗體_元素 (info.元素, 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset), 取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset)) .子程序 分析_資源段_窗體_元素 .參數(shù) list, 資源段_窗體_元素, 數(shù)組 .參數(shù) count .參數(shù) 數(shù)據(jù), 字節(jié)集 重定義數(shù)組 (list, 假, count) .如果真 (count = 0) 返回 () .如果真結束 .子程序 分析_資源段_常量 .參數(shù) list, 資源段_常量, 數(shù)組 .參數(shù) count .參數(shù) 數(shù)據(jù), 字節(jié)集 .參數(shù) 分析選項, 分析選項 .局部變量 offset .局部變量 i .局部變量 類型 重定義數(shù)組 (list, 假, count) .如果真 (count = 0) 返回 () .如果真結束 offset = 1 .計次循環(huán)首 (count, i) list [i].標志符 = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () .計次循環(huán)首 (count, i) list [i].Offset = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) .計次循環(huán)尾 () .計次循環(huán)首 (count, i) list [i].Offset = list [i].Offset + offset .計次循環(huán)尾 () .計次循環(huán)首 (取數(shù)組成員數(shù) (list), i) offset = list [i].Offset list [i].dwLength = 取數(shù)據(jù)_整數(shù) (數(shù)據(jù), offset) list [i].屬性 = 取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset) list [i].名稱 = 取數(shù)據(jù)_標準文本 (數(shù)據(jù), offset) list [i].備注 = 取數(shù)據(jù)_標準文本 (數(shù)據(jù), offset) 類型 = GET_HIGHT_TYPE (list [i].標志符) .判斷開始 (類型 = #資源段_常量_頁面_常量) 類型 = 取數(shù)據(jù)_字節(jié) (數(shù)據(jù), offset) .判斷開始 (類型 = #資源段_常量_類型_空白) .判斷 (類型 = #資源段_常量_類型_數(shù)值) list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_雙精度小數(shù) (數(shù)據(jù), offset), ) .判斷 (類型 = #資源段_常量_類型_邏輯) list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_邏輯 (數(shù)據(jù), offset), ) .判斷 (類型 = #資源段_常量_類型_日期) list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_日期時間 (數(shù)據(jù), offset), ) .判斷 (類型 = #資源段_常量_類型_文本) list [i].數(shù)據(jù).賦值 (數(shù)據(jù)轉換 (數(shù)據(jù), offset), ) list [i].是否為長文本 = 位與 (取數(shù)據(jù)_短整數(shù) (數(shù)據(jù), offset), #資源段_常量_屬性_長文本常量) ≠ 0 .默認 Error (“未知常量類型[” + 到文本 (類型) + “]”) .判斷結束 list [i].結果 = “文本” .判斷 (類型 = #資源段_常量_頁面_圖片) .如果 (分析選項.禁讀_資源數(shù)據(jù)) list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset), ) .否則 list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset), ) .如果結束 list [i].結果 = “圖片” .判斷 (類型 = #資源段_常量_頁面_聲音) .如果 (分析選項.禁讀_資源數(shù)據(jù)) list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_跳過動態(tài)數(shù)據(jù) (數(shù)據(jù), offset), ) .否則 list [i].數(shù)據(jù).賦值 (取數(shù)據(jù)_動態(tài)數(shù)據(jù) (數(shù)據(jù), offset), ) .如果結束 list [i].結果 = “聲音” .默認 Error (“未知常量頁面[” + 到文本 (類型) + “]”) .判斷結束 .如果真 (#__輸出屬性值) .如果真 (list [i].屬性 ≠ 0) 輸出調試文本 (list [i].名稱 + “.屬性=” + 到文本 (list [i].屬性)) .如果真結束 .如果真結束 .計次循環(huán)尾 ()
讀取
.版本 2 .程序集 讀取 .程序集變量 m_hFile .子程序 is_have_password, 邏輯型, 公開 .參數(shù) path, 文本型 .局部變量 result, 邏輯型 .局部變量 FileHead, _FileHeader .局部變量 hFile hFile = 打開文件 (path, #讀入, ) .如果真 (hFile ≤ 0) 返回 (假) .如果真結束 FileHead = raw_Read_FileHeader (hFile) result = FileHead.Magic1 = #Magic_加密源碼 關閉文件 (hFile) 返回 (result) .子程序 raw_Open, 整數(shù)型 .參數(shù) path, 文本型 .參數(shù) Write, 邏輯型, 可空 .參數(shù) password, 文本型 .局部變量 type .局部變量 hFile .局部變量 是否有密碼, 邏輯型 .如果 (Write) type = #改讀 .否則 type = #讀入 .如果結束 .如果 (is_have_password (path)) hFile = 打開加密文件 (path, type, , password, 8) 移動讀寫位置 (hFile, #現(xiàn)行位置, 8 + 32) .否則 hFile = 打開文件 (path, type, ) .如果結束 返回 (hFile) .子程序 Open, 邏輯型, 公開 .參數(shù) path, 文本型 .參數(shù) Write, 邏輯型, 可空 .參數(shù) password, 文本型 m_hFile = raw_Open (path, Write, password) 返回 (m_hFile > 0) .子程序 Close, , 公開 關閉文件 (m_hFile) m_hFile = 0 .子程序 IsEof, 邏輯型, 公開 返回 (是否在文件尾 (m_hFile, )) .子程序 GetPos, 整數(shù)型, 公開 返回 (取讀寫位置 (m_hFile)) .子程序 MoveTo, , 公開 .參數(shù) Type .參數(shù) Pos 移動讀寫位置 (m_hFile, Type, Pos) .子程序 ReadInt, 整數(shù)型, 公開 .局部變量 v 讀入數(shù)據(jù) (m_hFile, v) 返回 (v) .子程序 ReadData, 字節(jié)集, 公開 .參數(shù) length 返回 (讀入字節(jié)集 (m_hFile, length)) .子程序 Read_FileHeader, _FileHeader, 公開 返回 (raw_Read_FileHeader (m_hFile)) .子程序 Read_SectionHeader, _SectionHeader, 公開 返回 (raw_Read_SectionHeader (m_hFile)) .子程序 Read_SectionInfo, _SectionInfo, 公開 返回 (raw_Read_SectionInfo (m_hFile)) .子程序 Read_Section, 邏輯型, 公開 .參數(shù) Block_Name, 文本型, 參考 .參數(shù) Block_Data, 字節(jié)集, 參考 .局部變量 Bin, 字節(jié)集 .局部變量 header, _SectionHeader .局部變量 Info, _SectionInfo .如果真 (IsEof ()) 返回 (假) .如果真結束 header = Read_SectionHeader () .如果真 (header.Magic ≠ #Magic_Section) Error (“SectionHeader標志錯誤”) 返回 (假) .如果真結束 Info = Read_SectionInfo () .如果真 (header.Info_CheckSum ≠ GetSectionInfoCheckSum (Info)) .如果真 (#__檢查效驗值) Error (“SectionInfo效驗值錯誤”) 返回 (假) .如果真結束 .如果真結束 .如果 (到字節(jié)集 (Info.Key) ≠ { 25, 115, 0, 7 }) Decode_Str (Info.Name, Info.Key) .否則 .如果結束 Block_Name = 到文本 (Info.Name) Block_Data = ReadData (Info.DataLength) .如果真 (Info.Data_CheckSum ≠ GetCheckValue (Block_Data)) .如果真 (#__檢查效驗值) Error (“SectionInfo效驗值錯誤”) 返回 (假) .如果真結束 .如果真結束 返回 (真) .子程序 Write_SectionHeader, , 公開 .參數(shù) Header, _SectionHeader raw_Write_SectionHeader (m_hFile, Header) .子程序 Write_SectionInfo, , 公開 .參數(shù) info, _SectionInfo raw_Write_SectionInfo (m_hFile, info) .子程序 InsertSection, , 公開 .參數(shù) header, _SectionHeader .參數(shù) info, _SectionInfo .局部變量 bin, 字節(jié)集 bin = 取空白字節(jié)集 (#sizeof_SectionHeader) CopyFrom_SectionHeader (bin, header, #sizeof_SectionHeader) 插入字節(jié)集 (m_hFile, bin) bin = 取空白字節(jié)集 (#sizeof_SectionInfo) CopyFrom_SectionInfo (bin, info, #sizeof_SectionInfo) 插入字節(jié)集 (m_hFile, bin)
RAW
.版本 2 .程序集 raw .子程序 raw_Read_FileHeader, _FileHeader .參數(shù) hFile .局部變量 FileHead, _FileHeader 讀入數(shù)據(jù) (hFile, FileHead.Magic1) 讀入數(shù)據(jù) (hFile, FileHead.Magic2) 返回 (FileHead) .子程序 raw_Read_SectionHeader, _SectionHeader .參數(shù) hFile .局部變量 header, _SectionHeader 讀入數(shù)據(jù) (hFile, header.Magic) 讀入數(shù)據(jù) (hFile, header.Info_CheckSum) 返回 (header) .子程序 raw_Write_SectionHeader .參數(shù) hFile .參數(shù) NodeCheck, _SectionHeader 寫出數(shù)據(jù) (hFile, NodeCheck.Magic) 寫出數(shù)據(jù) (hFile, NodeCheck.Info_CheckSum) .子程序 raw_Read_SectionInfo, _SectionInfo .參數(shù) hFile .局部變量 Info, _SectionInfo .局部變量 Bin, 字節(jié)集 .局部變量 bak, 整數(shù)型 Bin = 讀入字節(jié)集 (hFile, #sizeof_SectionInfo) CopyTo_SectionInfo (Info, Bin, #sizeof_SectionInfo) 返回 (Info) .子程序 raw_Write_SectionInfo .參數(shù) hFile .參數(shù) SectionInfo, _SectionInfo .局部變量 bin, 字節(jié)集 bin = 取空白字節(jié)集 (#sizeof_SectionInfo) CopyFrom_SectionInfo (bin, SectionInfo, #sizeof_SectionInfo) 寫出字節(jié)集 (hFile, bin) .子程序 GetSectionInfoCheckSum, 整數(shù)型 .參數(shù) Info, _SectionInfo .局部變量 bin, 字節(jié)集 bin = 取空白字節(jié)集 (#sizeof_SectionInfo) CopyFrom_SectionInfo (bin, Info, #sizeof_SectionInfo) 返回 (GetCheckValue (bin))
輔助
.版本 2 .程序集 輔助 .子程序 輔_取文件名稱, 文本型 .參數(shù) txt, 文本型 .局部變量 addr .局部變量 next addr = 倒找文本 (txt, “\”, , 假) next = 尋找文本 (txt, “/”, , 假) .如果真 (next ≠ -1) addr = next .如果真結束 .如果真 (addr ≠ -1) 返回 (文本替換 (txt, 1, addr, )) .如果真結束 返回 (txt) .子程序 CALL, 整數(shù)型 .參數(shù) dest .參數(shù) arg1, , 可空 .參數(shù) arg2, , 可空 .參數(shù) arg3, , 可空 .參數(shù) arg4, , 可空 .參數(shù) arg5, , 可空 返回 (_RawCall (dest, arg1, arg2, arg3, arg4, arg5)) .子程序 _RawCall, 整數(shù)型 .參數(shù) dest .參數(shù) arg1 .參數(shù) arg2 .參數(shù) arg3 .參數(shù) arg4 .參數(shù) arg5 置入代碼 ({ 201, 88, 135, 4, 36, 255, 224 }) 返回 (0) .子程序 read_offset_memory, 整數(shù)型 .參數(shù) ptr .參數(shù) offset 置入代碼 ({ 139, 69, 8, 139, 77, 12, 139, 4, 8, 201, 194, 8, 0 }) 返回 (0) .子程序 輔_取支持庫信指令, 文本型 .參數(shù) hLib .參數(shù) fid .局部變量 addr .局部變量 count, 整數(shù)型 .局部變量 ptr .局部變量 last_paddr, , 靜態(tài) .局部變量 last_lib, , 靜態(tài) .如果 (last_lib ≠ hLib) addr = GetProcAddress (hLib, “GetNewInf”) .如果真 (addr = 0) 返回 (“”) .如果真結束 addr = CALL (addr) .如果真 (addr = 0) 返回 (“”) .如果真結束 last_lib = hLib last_paddr = addr .否則 addr = last_paddr .如果結束 count = read_offset_memory (addr, 100) .如果真 (fid > count) 返回 (“”) .如果真結束 ptr = read_offset_memory (addr, 104) ptr = read_offset_memory (ptr, 36 × fid + 0) 返回 (指針到文本 (ptr)) .子程序 取支持庫信指令, 文本型 .參數(shù) basic, 程序段_頭信息 .參數(shù) index .參數(shù) fid .局部變量 hLib .局部變量 str_list, 文本型, , "0" index = index + 1 .如果真 (index ≤ 0 或 index > 取數(shù)組成員數(shù) (basic.支持庫信息)) 返回 (“”) .如果真結束 str_list = 分割文本 (basic.支持庫信息 [index], 字符 (#回車鍵), ) hLib = GetModuleHandleA (str_list [1]) .如果真 (hLib = 0) hLib = GetModuleHandleA (str_list [1] + “.fne”) .如果真 (hLib = 0) hLib = LoadLibraryA (str_list [1] + “.fne”) .如果真 (hLib = 0) hLib = LoadLibraryA (取文本注冊項 (#現(xiàn)行用戶, “Software\FlySky\E\Install\Path”, ) + str_list [1] + “.fne”) .如果真結束 .如果真結束 .如果真結束 .如果真 (hLib = 0) 返回 (“”) .如果真結束 返回 (輔_取支持庫信指令 (hLib, fid)) .子程序 取用戶定義指令, 文本型 .參數(shù) list, 程序段_函數(shù), 數(shù)組 .參數(shù) id .局部變量 i, 整數(shù)型 .計次循環(huán)首 (取數(shù)組成員數(shù) (list), i) .如果真 (list [i].段頭.dwID = id) .如果 (list [i].名稱 ≠ “”) 返回 (list [i].名稱) .否則 返回 (“sub_” + 取十六進制文本 (id)) .如果結束 .如果真結束 .計次循環(huán)尾 () 返回 (“unk_” + 取十六進制文本 (id))
其它
.版本 2 .支持庫 spec .程序集 其他 .子程序 拖放文件 .參數(shù) hwnd, 整數(shù)型 .參數(shù) 接收參數(shù)指針, 整數(shù)型 DragAcceptFiles_ (hwnd, 1) SetProp_ (hwnd, “OriginalWndProc”, SetWindowLong_ (hwnd, #GWL_WNDPROC, 到整數(shù) (&WndProc))) SetProp_ (hwnd, “l(fā)pFunction”, 接收參數(shù)指針) .子程序 接收參數(shù) .參數(shù) 數(shù)量, 整數(shù)型 .參數(shù) 文件名組, 文本型, , 以"|"分割 .局部變量 i, 整數(shù)型 .局部變量 tmp, 文本型, , "0" tmp = 分割文本 (文件名組, “|”, ) _啟動窗口.地址編輯框.內容 = tmp [1] .子程序 WndProc, 整數(shù)型 .參數(shù) hwnd, 整數(shù)型 .參數(shù) msg, 整數(shù)型 .參數(shù) wParam, 整數(shù)型 .參數(shù) lParam, 整數(shù)型 .判斷開始 (msg = #WM_DROPFILES) Query (wParam, GetProp_ (hwnd, “l(fā)pFunction”)) 返回 (0) .默認 .判斷結束 返回 (CallWindowProc_ (GetProp_ (hwnd, “OriginalWndProc”), hwnd, msg, wParam, lParam)) .子程序 Query .參數(shù) hDrop, 整數(shù)型 .參數(shù) 接收參數(shù)的子程序指針, 整數(shù)型 .局部變量 n, 整數(shù)型 .局部變量 i, 整數(shù)型 .局部變量 length, 整數(shù)型 .局部變量 tmp, 文本型 .局部變量 fileNames, 文本型 n = DragQueryFile_ (hDrop, 4294967295, 字符 (0), 0) .計次循環(huán)首 (n, i) length = DragQueryFile_ (hDrop, i - 1, 字符 (0), 0) tmp = 取空白文本 (length) DragQueryFile_ (hDrop, i - 1, tmp, length + 1) .判斷開始 (i ≠ 1) fileNames = fileNames + “|” + tmp .默認 fileNames = tmp .判斷結束 .計次循環(huán)尾 () 調用子程序_ (接收參數(shù)的子程序指針, 真, , n, 取變量數(shù)據(jù)地址_文本型 (fileNames)) DragFinish_ (hDrop) .子程序 調用子程序_, 邏輯型 .參數(shù) 子程序指針或子程序地址 .參數(shù) 是否為C調用, 邏輯型, 可空 .參數(shù) 返回值, , 參考 可空 .參數(shù) 參數(shù)1, , 可空 .參數(shù) 參數(shù)2, , 可空 .參數(shù) 參數(shù)3, , 可空 .參數(shù) 參數(shù)4, , 可空 .參數(shù) 參數(shù)5, , 可空 .參數(shù) 參數(shù)6, , 可空 .參數(shù) 參數(shù)7, , 可空 .參數(shù) 參數(shù)8, , 可空 .參數(shù) 參數(shù)9, , 可空 .參數(shù) 參數(shù)10, , 可空 .參數(shù) 參數(shù)11, , 可空 .參數(shù) 參數(shù)12, , 可空 .參數(shù) 參數(shù)13, , 可空 .參數(shù) 參數(shù)14, , 可空 .參數(shù) 參數(shù)15, , 可空 置入代碼 ({ 86, 81, 51, 201, 81, 177, 15, 139, 245, 129, 198, 152, 0, 0, 0, 131, 238, 8, 139, 198, 139, 0, 133, 192, 116, 8, 139, 70, 252, 80, 131, 69, 244, 4, 226, 235, 255, 85, 8, 139, 77, 20, 137, 1, 51, 192, 57, 69, 12, 116, 3, 3, 101, 244, 89, 89, 94 }) 返回 (真) .子程序 取變量數(shù)據(jù)地址_文本型, 整數(shù)型 .參數(shù) 變量, 文本型, 參考 置入代碼 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 }) 返回 (0)
修復被破壞文件啟動窗口的代碼
.版本 2 .程序集 窗口程序集_啟動窗口 .子程序 __啟動窗口_創(chuàng)建完畢 拖放文件 (地址編輯框.取窗口句柄 (), 到整數(shù) (&接收參數(shù))) .子程序 _選擇文件按鈕_被單擊 通用對話框1.打開 () 地址編輯框.內容 = 通用對話框1.文件名 .子程序 _修復按鈕_被單擊 .如果真 (分析_易文件 (地址編輯框.內容, 密碼編輯框.內容, 真)) 信息框 (“已修復完成!”, 0, “提示:”, ) .如果真結束
運行結果:
看完了這篇文章,相信你對“易語言源碼被騰訊TP破壞后如何修復”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。