引用 | 編輯
upside
2006-12-09 18:19 |
樓主
|
||
x0
最完整的 DOS 6.22 磁區備份程式;Origin:............本..程..式..開..始......................; ;┌───────────────────────────┐; ;│格式宣告區--------------------------------------------│; ;└───────────────────────────┘; TITLE Sky Wing System Universal Utility Tool Box ;標題,天翼系統萬用多用途工具箱 字元長度限 60 字 ; INCLUDE PASSWORD.H ; 引入密碼標頭檔 Password.H ; INCLUDELIB PASSWORD.LIB ; 指定與密碼程式庫 Password.LIB 連結 ; INCLUDELIB MUSIC.LIB ; 指定與音樂程式庫 Music.LIB 連結 INCLUDE WINDOWS.H ; 引入視窗標頭檔 Windows.H INCLUDELIB WINDOWS.LIB ; 指定與視窗程式庫 Windows.LIB 連結 INCLUDE BIOS.INC ; 引入 BIOS.INC 公用巨集定義模組 INCLUDE DOS.INC ; 引入 DOS.INC 公用巨集定義模組 INCLUDE DOS.MAC ; 引入 DOS.H 公用巨集定義模組 .MODEL SMALL ;宣告一個小型模組 定義記憶體模式 ; .286 ; .STACK 100h ; ;─> ───────────────────────────────────── .DATA ; 資料節段 ;─> ───────────────────────────────────── MyPSP DW ? ; 本程式執行時的 PSP 節段值 VirFile_C DB 7,7,0Ah,0Dh,' 請注意!! 你的檔案可能遭到病毒修改 !!',0Ah,0Dh,'$' VirFile_E DB 7,7,0Ah,0Dh,' Warring!! SKY.EXE maybe encounter Virus modifyed',0Ah,0Dh,'$' Not_Parameter DB 7,0Ah,0Dh,' Warring!! SKY.EXE Not_Parameter$' ; 沒有參數 ;─────────────────────────────────────── Buffer DB 512 DUP (0) ;緩衝區起始偏移址 Buffer1 DB 512 DUP (0) ;緩衝區起始偏移址 Buffer2 DW 0 ; DW 5 DUP (?) ; PATH_1 DW ? ; HANDLE DW ? ;存放檔案代號 DW 0 , DB 0 Part_sav DB 'Partit.PAT',0 ; 檔名 Boot_Sav DB 'BOOT.BOT',0 ; 檔名 Par_Msg DB 11,'奼迋迋迋迋迋迋迋迋迋迋迋迋迋迋? DB 0FFh,11,'? Partition table Check V1.00 ',11,'? DB 0FFh,11,'? Copyright (C) By:upside. ',11,'? DB 0FFh,11,'迋迋迋迋迋迋迋迋迋迋迋迋迋迋?' Boot_Msg DB 11,'奼迋迋迋迋迋迋迋迋迋迋迋迋迋迋? DB 0FFh,11,'? Boot area table Check V1.00 ',11,'? DB 0FFh,11,'? Copyright (C) By: upside. ',11,'? DB 0FFh,11,'迋迋迋迋迋迋迋迋迋迋迋迋迋迋?' Chk_Err DB 7,0Ah,0Dh,'WARNING !! Your System Table had been modifyed$' Chk_Ok DB 7,0Ah,0Dh,' System Table Check Ok !!$' Reput_OK DB 7,0Ah,0Dh,' System Table Reput Ok !!$' ;─────────────────────────────────────── FileName_1 DB 'SKY.EXE',0 ; 檔案名稱 ;─────────────────────────────────────── Import_Password DB 7,0Ah,0Dh,'請輸入密碼:$' ; 輸入密碼 Import_err DB 7,10,13,'你輸入錯誤的密碼!!$' ; 錯誤的密碼 Password DB ' ; 內建密碼 ;─────────────────────────────────────── Wnd01_Data DB '╔═════════════════╗' ;視窗資料內容 DB '║ 天 翼 工 作 室 ║' DB '╠════════╤════════╣' DB '║A 硬碟分割表備份│F 啟動磁區表備份║' ;功能表選項內容 DB '║B 硬碟分割表回存│G 啟動磁區表回存║' DB '║C │H ║' DB '║D │I ║' DB '║E │J 全能系統加速 ║' DB '╠════════╧════════╣' DB '║製作者: upside <02/17/1999>║' DB '╟─────────────────╢' DB '║ < 敬 請 尊 重 智 慧 財 產 權 > ║' DB '║ ║' DB '╚═════════════════╝' Wnd01 Window <Wnd01_Data,20,06,38,14,3Fh,SHADOW_ON,19h> ;視窗結構體變數 ; 視窗資料內容 X Y 寬 高 屬 陰影狀態 陰影屬性 Menu01 Menu <22,09,02,05,10,16,01,02,00,4fh,3Fh,00,01,01,00,00,POPUP> ; 行 個 選 選 起 ; 行 始 Task_table Label Word DW SavePart,SaveBoot,RePart_1,ReBoot_1,NullTask ; 1 A 6 F 2 B 7 G 3 C DW NullTask,NullTask,NullTask,NullTask,Quicken ; 8 H 4 D 9 I 5 E 10 J ; 音樂 DW NullTask,_play_music,NullTask,NullTask,NullTask ;─────────────────────────────────────── SavePart_OK DB ' < 硬 碟 分 割 表 備 份 成 功 > ' SavePart_WIN Window <SavePart_OK,22,17,34,01,0DFh,SHADOW_Off,NULL> ; 顯 行 ;─────────────────────────────────────── REPART_OK DB ' < 硬 碟 分 割 表 回 存 成 功 > ' REPART_WIN Window <REPART_OK,22,17,34,01,0DFh,SHADOW_Off,NULL> ;─────────────────────────────────────── SaveBoot_OK DB ' < 啟 動 磁 區 表 備 份 成 功 > ' SaveBoot_WIN Window <SaveBoot_OK,22,17,34,01,0DFh,SHADOW_Off,NULL> ;─────────────────────────────────────── ReBoot_OK DB ' < 啟 動 磁 區 表 回 存 成 功 > ' ReBoot_WIN Window <ReBoot_OK,22,17,34,01,0DFh,SHADOW_Off,NULL> ;─────────────────────────────────────── Quicken_OK DB ' < 系 統 加 速 程 式 成 功 > ' Quicken_WIN Window <Quicken_OK,22,17,34,01,0DFh,SHADOW_Off,NULL> ;─────────────────────────────────────── Joking_OK DB ' < 敬 請 尊 重 智 慧 財 產 權 > ' Joking_WIN Window <Joking_OK,22,17,34,01,0DFh,SHADOW_Off,NULL> ;─────────────────────────────────────── Screen DD 00000h ; 螢幕 ;─────────────────────────────────────── MSG DB 'Made By SY BF ' ; 秀出作者ID Save DB 30 DUP (0) ; 存放字型碼,因為可重覆使用 所以只要 30 byte ET_FILE DB 'C:\ET3\STDFONT.15',00h ; 倚天 16*15 字型檔 NO_Chinese_C DB 0h,0h,'本程式需倚天中文系統' ; End_Chinese DB 0h,0h,'天翼工作室感謝您' ; 裡面的中文在程式中乃是以Big-5碼的型式存放 ;─> ───────────────────────────────────── .CODE ; 程式節段 .STARTUP ; 程式初始化 ;─> ───────────────────────────────────── ;┌───────────────────────────┐; ;│防止DEBUG的單步追蹤功能-------------------------------│; ;└───────────────────────────┘; ; ; 玩過組合的人都知道電腦有個旗標 ,俗稱 TF 旗標 ,將此旗標關掉 ,就不會有 ; 單步執行的功能了。 ; 因為當此位元為 1 時 ,電腦每執行一個指令都會觸動 INT_01 ,而 DEBUG 就 ; 是利用它來達到單步執行 ,在 BIOS 內無法下中斷點(INT_03) ,所以在要偵錯 ; BIOS 下只能靠 TF 來追蹤程式執行過程了。 ; ; 如何關閉此旗標呢 ? ; 我們知道旗標有 16Bit , Bit8 即為TF旗標 : ; PUSHF ; ┐將旗標狀態傳回到 AX 內 ; POP AX ; ┘ ; AND AX,0FEFFh ; ─ 清掉 TF 旗標 ; PUSH AX ; ┐將新旗標寫回 ; POPF ; ┘ ; ; INT 1h ; 中斷 1h 防 DEBUG 單步追蹤 ; INT 3h ; ; INT 7h ; 中斷 7H 防 S-ICE 單步追蹤 ; 最後甚至當掉使用者的鍵盤 ,將鍵盤指向自己的程式 ,或是關掉鍵盤 , ; 有的程式設計師為了省功 ,都用最簡單的方法當掉鍵盤。 ; ; Then I'm re-assembling with INT 3h squeezed in there: ; ; MOV AX,5Ah ; sample code to break into ; DB 0CCh ; or INT 3h, whatever. ; OUT 82551pa,AL ; ; And this would be the INT 3h handler (simple crude sample) : ;─────────────────────────────────────── ; MOV AH,2Ah ; 取得系統時間 (CX=年 1980~2099 , DH=月, DL=日) ; MOV DX,0520h ; ; INT 21h ; DOS功能中斷 ; ; CMP DX,0520h ; 比較是否為10月10日 ; JE ChkPart ; 是...... 不是,跳至下一行程式碼執行.... ;┌───────────────────────────┐; ;│檔案長度偵測------------------------------------------│; ;└───────────────────────────┘; MOV AH,3Dh ; 開檔AX > AH 2bytes MOV DX,OFFSET FileName_1 ; FileName_1 SKY.EXE INT 21h ; ; XCHG AX,BX ; MOV BX,AX MOV AX,4202h ; 移動檔案的寫指標 XOR CX,CX ; 位移的低位元組 CWD ; 位移的高位元組 INT 21h ; ;─> $$$─────────────────────────────────── CMP AX,1E55h ; 測試本 .. 訪客只能看到部份內容,免費 加入會員 x0
|