幫助中心

        當(dāng)前位置:首頁 > 幫助中心 > 0PE菜單分析(1)

        0PE菜單分析(1)

        日期:2011-06-14 | 時(shí)間:23:48
         

        解讀 0PE 的專用菜單文件 MENU.0PE
         
         
        ; 注:字符串/0PE/0PE.ISO定位0PE.ISO.菜單<4KB

        ; 設(shè)置屏幕顏色
        color white/blue blue/yellow light-red/blue 10

        ; pseudo 大俠發(fā)明的寫法,指定一個(gè)不存在的配置文件“NoExist”
        ; 讓 PXE 啟動(dòng)時(shí)不去搜索 PXE 服務(wù)器上的其他配置文件,加快啟動(dòng)速度。
        pxe detect NotExist

        ; 關(guān)閉 Debug
        debug off

        ; 取內(nèi)存做變量使用,6000:0000開始的 1K 空間作為用戶自己的變量區(qū)

        ; 存放出錯(cuò)標(biāo)記 | ErrorFlag
        write 0x60000 0

        ; 存放 PXE 啟動(dòng)標(biāo)記 | PXEBoot
        write 0x60064 0

        ; 存放選中的菜單項(xiàng)序號(hào) | MenuNum
        write 0x60068 0

        ; 存放 Debug 狀態(tài) | DebugFlag
        write 0x60110 0

        ; 保存當(dāng)前根分區(qū)號(hào) | RootDriveID
        write 0x60130 0

        ; 保存當(dāng)前根驅(qū)動(dòng)器 | RootDrive
        write 0x60134 0

        ; 這個(gè)好象未使用
        write 0x602A0 0

        ; 標(biāo)記是 XP 還是 2003 | SysVer
        write 0x60300 0

        ; 這里大概是判斷 Grub4Dos 版本是否匹配(read 返回值 0 為假,非 0 為真)
        cat --locate-align=1 (md)+1,1 || write 0x60000 1
        read 0x60000 && Error:GRUB4DOS Version Mismatched! Press any key to reboot...
        read 0x60000 && reboot

        ; 判斷是否是 PXE 啟動(dòng)
        checkrange 0x21 read 0x8280 && write 0x60064 1

        ; 默認(rèn)第一個(gè)菜單
        default 1
        ; 超時(shí)時(shí)間 5 秒
        timeout 5

         

        ; 菜單0
        title                 0PE for Windows XP/2003    by Pseudo 2009.6.20
        ; 空菜單
        clear

         

        ; 菜單1
        title                 [1] For XP, with SRS1.ZIP.\n   Main S&R&S Drivers Library.
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 1
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單2
        title                 [2] For XP, with SRS2.ZIP.\n   Secondary S&R&S Drivers Library.
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 2
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單3
        title                 [3] For XP, with F6.ZIP.\n   OEM S&R&S Drivers Floppy Disk Emulation (press F6/autodetect).
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 3
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 空菜單,夾在其它菜單中間,則無效,放在第一個(gè)菜單之前,則會(huì)讓 TimeOut 失效。
        ; 疑為作者筆誤
        title

         

        ; 菜單4
        title                 [4] User Menu with F6.ZIP.\n   OEM S&R&S Drivers Floppy Disk Emulation (press F6/autodetect).
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 4
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單5
        title                 [5] For 2K3, with SRS1.ZIP.\n   Main S&R&S Drivers Library.
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 5
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單6
        title                 [6] For 2K3, with SRS2.ZIP.\n   Secondary S&R&S Drivers Library.
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 6
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單7
        title                 [7] For 2K3, with F6.ZIP.\n   OEM S&R&S Drivers Floppy Disk Emulation (press F6/autodetect).
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 7
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單8
        title                 [8] MS DOS 7.1
        ; 設(shè)置菜單選擇標(biāo)記
        write 0x60068 8
        ; 通過錯(cuò)誤語句跳轉(zhuǎn)到菜單 10
        fallback 10
        kernel

         

        ; 菜單9
        title                 [9] Grub4Dos Debug On/Off.\nTurn on/off debug status.
        ; 清屏
        clear
        ; 關(guān)閉 Debug
        debug off


        ; 如果 DebugFlag 為 0,則設(shè)置 DebugFlag 2
        read 0x60110 || write 0x60110 2
        ; 如果 DebugFlag 為 1,則設(shè)置 DebugFlag 0
        checkrange 1 read 0x60110 && write 0x60110 0
        ; 如果 DebugFlag 為非 0(比如為 2),則設(shè)置 DebugFlag 1

        read 0x60110 && write 0x60110 1

        ; 根據(jù) DebugFlag,設(shè)置提示信息
        read 0x60110 || pause Debug is now off...
        read 0x60110 && pause Debug is now on...
        ; 根據(jù) DebugFlag,設(shè)置 Debug 狀態(tài)
        read 0x60110 || debug off
        read 0x60110 && debug on
        ; 添加 Kernel 命令,使菜單生效,否則菜單不可選
        kernel || clear

         

        ; 菜單10,處理選擇的系統(tǒng)類型 SysVer
        title

        ; 提示 root 位置,用于調(diào)試腳本
        pause --wait=0 Boot drive:
        debug on
        root
        debug off

        ; 恢復(fù) Debug  狀態(tài)
        read 0x60110 && debug on

        ; 判斷選擇的菜單是否是 2003 系統(tǒng) ( 菜單 5-7 )
        checkrange 5:7 read 0x60068 && write 0x60300 1

        ; 如果不是 2003 系統(tǒng),將跳轉(zhuǎn)到 菜單 11
        fallback 11
        ; 如果是 2003 系統(tǒng),將跳轉(zhuǎn)到菜單 12
        read 0x60300 && fallback 12
        ; 開始跳轉(zhuǎn)
        fallback F

         

        ; 菜單11,處理 XP 系統(tǒng),SysVer = 0
        title


        ;
        fallback 14

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 如果未找到 root 下面的 /0PE/BUFXP.GZ 則設(shè)置 ErrorFlag 為 0
        ls /0PE/BUFXP.GZ || write 0x60000 0

        ; 如果是 PXE 啟動(dòng),則設(shè)置 ErrorFlag 為 0
        read 0x60064 && write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 14
        read 0x60000 && kernel

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 查找所有盤的 /0PE/BUFXP.GZ 文件,找不到則設(shè)置 ErrorFlag 為 0
        find --set-root /0PE/BUFXP.GZ || write 0x60000 0

        ; 如果 ErrorFlag 不為 0 ,則跳轉(zhuǎn)到菜單 14
        read 0x60000 && kernel


        ;
        fallback 13

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 如果未找到 root 下面的 /0PE/0PE.ISO 則設(shè)置 ErrorFlag 為 0
        ls /0PE/0PE.ISO || write 0x60000 0

        ; 如果是 PXE 啟動(dòng),則設(shè)置 ErrorFlag 為 0
        read 0x60064 && write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 13
        read 0x60000 && kernel

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 查找所有盤的 /0PE/0PE.ISO 文件,找不到則設(shè)置 ErrorFlag 為 0
        find --set-root /0PE/0PE.ISO || write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 13
        read 0x60000 && kernel


        ; 如果是 PXE 啟動(dòng),則設(shè)置 root 為 PXE 服務(wù)器
        read 0x60064 && rootnoverify (pd)

        ; 設(shè)置標(biāo)志:不自動(dòng)解壓 gzip 格式的文件
        write 0x82A4 1


        ;
        fallback 14
        ; 如果 PXE 中存在 /0PE/BUFXP.GZ (判斷文件大小是否為 0)則跳轉(zhuǎn)到 菜單14
        cat --length=0 /0PE/BUFXP.GZ && kernel

        ; 設(shè)置標(biāo)志:自動(dòng)解壓 gzip 格式的文件
        write 0x82A4 0


        ;
        fallback 13

        ; 如果 PXE 中存在 /0PE/0PE.ISO 則跳轉(zhuǎn)到 菜單13
        cat --length=0 /0PE/0PE.ISO && kernel

        ; 判斷選擇的是否是用戶自定義菜單,如果是,則設(shè)置 SysVer 為 1
        checkrange 4 read 0x60068 && write 0x60300 1


        ;
        fallback 12

        ; 如果是是用戶自定義菜單,則跳轉(zhuǎn)到菜單 12 繼續(xù)處理
        read 0x60300 && kernel

        ; 提示未找到 /0PE/BUFXP.GZ 和 /0PE/0PE.ISO
        pause Error:/0PE/BUFXP.GZ and /0PE/0PE.ISO not found!

         

        ; 菜單12,處理 2003 系統(tǒng),SysVer = 1,過程同 XP 系統(tǒng)
        title

        ;
        fallback 14

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 如果未找到 root 下面的 /0PE/BUF2K3.GZ 則設(shè)置 ErrorFlag 為 0
        ls /0PE/BUF2K3.GZ || write 0x60000 0

        ; 如果是 PXE 啟動(dòng),則設(shè)置 ErrorFlag 為 0
        read 0x60064 && write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 14
        read 0x60000 && kernel

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 查找所有盤的 /0PE/BUF2K3.GZ 文件,找不到則設(shè)置 ErrorFlag 為 0
        find --set-root /0PE/BUF2K3.GZ || write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 14
        read 0x60000 && kernel


        ;
        fallback 13

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 如果未找到 root 下面的 /0PE/0PE.ISO 則設(shè)置 ErrorFlag 為 0
        ls /0PE/0PE.ISO || write 0x60000 0

        ; 如果是 PXE 啟動(dòng),則設(shè)置 ErrorFlag 為 0
        read 0x60064 && write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 13
        read 0x60000 && kernel

        ; 復(fù)位 ErrorFlag
        write 0x60000 1

        ; 查找所有盤的 /0PE/0PE.ISO 文件,找不到則設(shè)置 ErrorFlag 為 0
        find --set-root /0PE/0PE.ISO || write 0x60000 0

        ; 如果 ErrorFlag 不為 0,則跳轉(zhuǎn)到菜單 13
        read 0x60000 && kernel

        ; 如果是 PXE 啟動(dòng),則設(shè)置 root 為 PXE 服務(wù)器
        read 0x60064 && rootnoverify (pd)

        ; 設(shè)置標(biāo)志:不自動(dòng)解壓 gzip 格式的文件
        write 0x82A4 1


        ;
        fallback 14

        ; 如果 PXE 中存在 /0PE/BUF2K3.GZ 則跳轉(zhuǎn)到菜單 14

        cat --length=0 /0PE/BUF2K3.GZ && kernel

        ; 設(shè)置標(biāo)志:自動(dòng)解壓 gzip 格式的文件
        write 0x82A4 0


        ;
        fallback 13

        ; 如果 PXE 中存在 /0PE/0PE.ISO 則跳轉(zhuǎn)到菜單 13
        cat --length=0 /0PE/0PE.ISO && kernel

        ; 提示未找到 /0PE/BUF2K3.GZ 和 /0PE/0PE.ISO
        pause Error:/0PE/BUF2K3.GZ and /0PE/0PE.ISO not found!

         

        ; 菜單13,裝載 0PE.ISO,然后跳轉(zhuǎn)到 菜單14 繼續(xù)啟動(dòng)
        title

        ; 提示 root 位置,用于調(diào)試腳本
        pause --wait=0 Current drive of 0PE.ISO:
        debug on
        root
        debug off

        ; 恢復(fù) Debug  狀態(tài)
        read 0x60110 && debug on

        ; 提示 裝載0PE.ISO
        pause --wait=0 Loading /0PE/0PE.ISO...

        ; 磁盤裝載 0PE.ISO,如果不成功,則內(nèi)存裝載 0PE.ISO
        map /0PE/0PE.ISO (0xff) || map --mem /0PE/0PE.ISO (0xff)

        ; 激活 map 的結(jié)果
        map --hook

        ; 設(shè)置 root 為 0PE.ISO 的裝載位置
        rootnoverify (0xff)

        ; 跳轉(zhuǎn)到 菜單14 繼續(xù)處理
        fallback 14 && kernel

         

        ; 菜單14,啟動(dòng)系統(tǒng)
        title

        ; 設(shè)置標(biāo)志:自動(dòng)解壓 gzip 格式的文件
        write 0x82A4 0

        ; 保存當(dāng)前根分區(qū)號(hào),和當(dāng)前根所在驅(qū)動(dòng)器
        dd if=(md) of=(md) bs=1 count=8 skip=0x829c seek=0x60130

        ; 提示 root 位置,用于調(diào)試腳本
        pause --wait=0 Current drive of BUF*.GZ:
        debug on
        root
        debug off

        ; 恢復(fù) Debug  狀態(tài)
        read 0x60110 && debug on

        ; 根據(jù) SysVer 提示并裝載 XP 系統(tǒng) Buf 到 (hd7)
        read 0x60300 || pause --wait=0 Loading /0PE/BUFXP.GZ...
        read 0x60300 || map --mem ()/0PE/BUFXP.GZ (hd7)

        ; 根據(jù) SysVer 提示并裝載 2003 系統(tǒng) Buf 到 (hd7)
        read 0x60300 && pause --wait=0 Loading /0PE/BUF2K3.GZ...
        read 0x60300 && map --mem ()/0PE/BUF2K3.GZ (hd7)

        ; 激活 map 結(jié)果
        map --hook

        ; 向 (hd7,0)/BAT/_ENV.BAT 中寫入 set PEISO=/0PE/0PE.ISO\r\n,并繼續(xù)從(hd7,0)/BAT/MENU.GZ 中的菜單啟動(dòng)

        write --offset=200 (hd7,0)/BAT/_ENV.BAT set PEISO=/0PE/0PE.ISO\r\n && configfile (hd7,0)/BAT/MENU.GZ

        大白菜官網(wǎng)

        (責(zé)任編輯:m.hushhushevents.com)

        大白菜超級(jí)U盤啟動(dòng)盤制作工具

        主站蜘蛛池模板: 久久精品免费一区二区| 狠狠综合久久AV一区二区三区 | 国内精品视频一区二区三区八戒| 国产精品盗摄一区二区在线| 亚洲丰满熟女一区二区v| 中文字幕一区二区三区精华液 | 久久精品动漫一区二区三区| 国产一区二区三区不卡在线看 | 天美传媒一区二区三区| 少妇激情av一区二区| 久久久久久一区国产精品| 国产一区二区三区不卡在线观看| 国产未成女一区二区三区 | 久久无码人妻精品一区二区三区| 日美欧韩一区二去三区| 在线播放偷拍一区精品| 精品人无码一区二区三区| 久久精品国产第一区二区三区| 伊人色综合一区二区三区| 国产在线精品一区二区不卡麻豆| 亚洲中文字幕丝袜制服一区 | 色噜噜狠狠一区二区三区果冻| 成人免费av一区二区三区| 国产成人高清视频一区二区| 一区二区三区四区国产| 久久精品综合一区二区三区| 成人区人妻精品一区二区不卡视频| 一区二区三区免费视频网站| 国产高清在线精品一区二区| 本免费AV无码专区一区| 亚洲日韩精品一区二区三区| 无码一区二区三区免费| 久久久久人妻一区二区三区| 国产精品一区二区久久精品涩爱| 久久精品无码一区二区三区免费 | 国产免费伦精品一区二区三区| 538国产精品一区二区在线| 中文字幕VA一区二区三区 | 男人的天堂精品国产一区| 无码AⅤ精品一区二区三区| 丝袜人妻一区二区三区网站|