啟動過程_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  1. 開機(jī);   2. BIOS 加電或按reset鍵后都要進(jìn)行系統(tǒng)復(fù)位,復(fù)位后指令地址為 0ffff:fff0,這個地方只有一條JMP指令, 跳轉(zhuǎn)到系統(tǒng)自檢 ( Power On Self Test -- POST )程序處;</p><p>  3. 系統(tǒng)自檢完成后,BIOS調(diào)用19H中斷。該中斷程序?qū)⒂脖P的第一個扇區(qū) (0磁頭0磁道1扇區(qū), 也就是Boot Sector)MBR讀入內(nèi)

2、存地址 0000:7c00 處;</p><p>  MBR中的啟動代碼部分的IDA分析如下:</p><p>  seg000:0600 seg000 segment byte public 'CODE' use16</p><p>  seg000:0600 assume cs:seg000<

3、;/p><p>  seg000:0600 ;org 600h</p><p>  seg000:0600 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing</p><p>  seg000:0600

4、 xor ax, ax</p><p>  seg000:0602 mov ss, ax</p><p>  seg000:0604 mov sp, 7C00h</p><p>  seg000:0607 mov es, ax<

5、/p><p>  seg000:0609 mov ds, ax</p><p>  seg000:060B mov si, 7C00h</p><p>  seg000:060E mov di, 600h</p><p>  s

6、eg000:0611 mov cx, 200h</p><p>  seg000:0614 cld</p><p>  seg000:0615 rep movsb</p><p>  seg000:0617 push ax&l

7、t;/p><p>  seg000:0618 push offset Ret1</p><p>  seg000:061B retf</p><p>  seg000:061C</p><p>  seg000:061C Ret1:

8、 ; DATA XREF: seg000:0618o</p><p>  seg000:061C sti</p><p>  seg000:061D mov cx, 4 ; 最多4項(xiàng)</p><p>  seg000:0620

9、 mov bp, 7BEh ; 找到分區(qū)表的位置</p><p>  seg000:0623</p><p>  seg000:0623 loc_623: ; CODE XREF: seg000:0630j</p><p>  seg000:0623

10、 cmp byte ptr [bp+0], 0</p><p>  seg000:0627 jl short loc_634 ; 找到80H標(biāo)志,WIN7的MBR不檢測其他位置是否還有活動標(biāo)志,</p><p>  seg000:0627 ; 只讀第一

11、個有活動標(biāo)志的分區(qū)</p><p>  seg000:0629 jnz loc_73B</p><p>  seg000:062D add bp, 10h ; BP指向下一分區(qū)</p><p>  seg000:0630 loop l

12、oc_623</p><p>  seg000:0632 int 18h ; 找不到有效的啟動分區(qū)標(biāo)志,交給BIOS處理,</p><p>  seg000:0632 ; 根據(jù)CMOS中啟動設(shè)備的排序嘗試用其它設(shè)備啟動</p><

13、;p>  seg000:0634</p><p>  seg000:0634 loc_634: ; CODE XREF: seg000:0627j</p><p>  seg000:0634 ; seg000:06AEj</p>

14、<p>  seg000:0634 mov [bp+0], dl ; 首次的 dl 值是 int 0x19 中斷遺留下的,dl = 0x80</p><p>  seg000:0637 push bp ; BP=活動分區(qū)開始地址</p><p>  seg000:

15、0638 mov byte ptr [bp+11h], 5 ; 如果不成功的反復(fù)讀 5 次</p><p>  seg000:063C mov byte ptr [bp+10h], 0 ; 這里準(zhǔn)備存一些標(biāo)志,先清零</p><p>  seg000:0640 mov a

16、h, 41h ; 檢查BIOS是否支持?jǐn)U展Int13,這是功能號</p><p>  seg000:0642 mov bx, 55AAh ; 這也是參數(shù)之一,類似令牌字</p><p>  seg000:0645 int 13h</p><p>  seg00

17、0:0647 pop bp</p><p>  seg000:0648 jb short loc_659 ; jb是以CF標(biāo)志為1(這里表示操作失敗)作為跳轉(zhuǎn)條件的</p><p>  seg000:064A cmp bx, 0AA55h</p>&l

18、t;p>  seg000:064E jnz short loc_659</p><p>  seg000:0650 test cx, 1 ; 必須支持extended disk access functions這個功能子集</p><p>  seg000:0654

19、 jz short loc_659</p><p>  seg000:0656 inc byte ptr [bp+10h] ;前面的檢測都通過,表明支持?jǐn)U展INT 13H,這里設(shè)置一個支持標(biāo)志</p><p>  seg000:0659</p><p>  seg000:0659 loc_659:

20、 ; CODE XREF: seg000:0648j</p><p>  seg000:0659 ; seg000:064Ej</p><p>  seg000:0659 ; se

21、g000:0654j</p><p>  seg000:0659 ; seg000:06B9j</p><p>  seg000:0659 pushad</p><p>  seg000:065B cmp byt

22、e ptr [bp+10h], 0 ; 看擴(kuò)展INT 13H支持標(biāo)志是否有效</p><p>  seg000:065F jz short loc_687 ; 不支持,只好用老的INT 13H了</p><p>  seg000:0661 push large 0; LBA地址用了8字節(jié),而MBR的LBA只有4字節(jié),只好在高

23、4字節(jié)壓入4個字節(jié)的0了</p><p>  seg000:0667 push large dword ptr [bp+8] ; 讀取4字節(jié)分區(qū)的物理偏移</p><p>  seg000:066B push 0 ; 緩沖區(qū)的段: --- 2B(字節(jié))</p><p&

24、gt;  seg000:066E push 7C00h ; 讀取到7C00處</p><p>  seg000:0671 push 1 ; 要傳輸?shù)臄?shù)據(jù)塊數(shù)量(扇區(qū)數(shù)).這里DBR只有1個扇區(qū),--- 2B</p><p>  seg000:0674

25、 push 10h ; 地址數(shù)據(jù)包的大小(1B),規(guī)定是10h(就是16個字節(jié)),也可能有其他版本,</p><p>  seg000:0674 ; 加保留位=0(1B),共 --- 2B</p><p>  seg000:0677 mov ah,

26、 42h ; 擴(kuò)展讀 : ah = 42h</p><p>  seg000:0679 mov dl, [bp+0] ; 這個位置是磁盤編號</p><p>  seg000:067C mov si, sp ; 磁盤地址數(shù)據(jù)包地址要這樣表示:DS:SI</p&

27、gt;<p>  seg000:067E int 13h ; 用擴(kuò)展Int13讀取</p><p>  seg000:0680 lahf ; LAHF表示把狀態(tài)寄存器Flags的值(最低的8位)裝入AH寄存器,機(jī)器碼9F</p><p>  seg000:068

28、1 add sp, 10h ; 前面PUSH了10H個字節(jié)的LBA參數(shù),現(xiàn)在要平衡堆棧,如果原來CF=1,就破壞標(biāo)志了</p><p>  seg000:0681 ; 所以這條指令前后需要保存和恢復(fù)標(biāo)志</p><p>  seg000:0684 sa

29、hf ; SCAHF則把AH裝入到狀態(tài)寄存器最低的8位,機(jī)器碼9E,聯(lián)系上面,相當(dāng)于PUSHF,POPF</p><p>  seg000:0685 jmp short loc_69B</p><p>  seg000:0687 ; ---------------------------------------------------------

30、------------------</p><p>  seg000:0687</p><p>  seg000:0687 loc_687: ; CODE XREF: seg000:065Fj</p><p>  seg000:0687 mov ax, 201h

31、</p><p>  seg000:068A mov bx, 7C00h</p><p>  seg000:068D mov dl, [bp+0]</p><p>  seg000:0690 mov dh, [bp+1]</p>&l

32、t;p>  seg000:0693 mov cl, [bp+2]</p><p>  seg000:0696 mov ch, [bp+3]</p><p>  seg000:0699 int 13h ; 用老式Int13讀取</p>

33、;<p>  seg000:069B</p><p>  seg000:069B loc_69B: ; CODE XREF: seg000:0685j</p><p>  seg000:069B popad ; 恢復(fù)全部通用寄存器</p&g

34、t;<p>  seg000:069D jnb short loc_6BB; jnb是以CF標(biāo)志為0(這里表示操作成功)作為跳轉(zhuǎn)條件的,讀取成功會跳轉(zhuǎn)</p><p>  seg000:069F dec byte ptr [bp+11h] ; 這里最初設(shè)置了重復(fù)次數(shù)為5次,執(zhí)行一次計(jì)數(shù)值減1</p><p> 

35、 seg000:06A2 jnz short loc_6B0 ; 還需要重試,則先轉(zhuǎn)復(fù)位磁盤</p><p>  seg000:06A4 cmp byte ptr [bp+0], 80h ; 看看INT 19H傳遞過來的DL值是不是80H</p><p>  seg000:06A8

36、 jz loc_736 ; 如果INT 19H傳遞過來的值沒有問題,則提示ErrorLoading</p><p>  seg000:06AC mov dl, 80h ; INT 19H傳遞過來的參數(shù)(啟動盤符編號)可能有問題,</p><p>  seg000:06AC

37、 ; 只好人為設(shè)置一個啟動標(biāo)志了</p><p>  seg000:06AE jmp short loc_634 ; 再試一輪次</p><p>  seg000:06B0 ; -------------------------------------------------------------

38、--------------</p><p>  seg000:06B0</p><p>  seg000:06B0 loc_6B0: ; CODE XREF: seg000:06A2j</p><p>  seg000:06B0 push bp</p>

39、<p>  seg000:06B1 xor ah, ah ; 磁盤復(fù)位功能號</p><p>  seg000:06B3 mov dl, [bp+0]</p><p>  seg000:06B6 int 13h ;

40、DISK - RESET DISK SYSTEM</p><p>  seg000:06B6 ; DL = drive (if bit 7 is set both hard disks and floppy disks reset)</p><p>  seg000:06B8 pop bp&l

41、t;/p><p>  seg000:06B9 jmp short loc_659 ; 可以重試5次,bp+11h初值=5</p><p>  seg000:06BB ; ---------------------------------------------------------------------------</p><

42、p>  seg000:06BB</p><p>  seg000:06BB loc_6BB: ; CODE XREF: seg000:069Dj</p><p>  seg000:06BB cmp word ptr ds:7DFEh, 0AA55h ; 讀取成功會跳轉(zhuǎn)到這里,檢測讀

43、取的DBR是否有效</p><p>  seg000:06C1 jnz short loc_731 ; 不對,就轉(zhuǎn)提示錯誤MissingOS</p><p>  seg000:06C3 push word ptr [bp+0]</p><p>  seg000:06C6

44、 call EmptyKbdBuffer ; 檢測鍵盤緩沖器狀態(tài)</p><p>  seg000:06C9 jnz short loc_6E2 ; 鍵盤緩沖器一直沒有空閑,則轉(zhuǎn)到(TPM安全模塊檢測)下面開A20的工作,</p><p>  seg000:06C9

45、 ; 只好放到DBR以后的代碼中用其他開A20的方法去完成了</p><p>  seg000:06CB cli</p><p>  seg000:06CC mov al, 0D1h ; 8042鍵盤輸入緩沖區(qū)空閑后,向0x64端口寫入命令碼D1,</p><p>  seg

46、000:06CC ; 表示要寫入數(shù)據(jù)到8042的p2端口</p><p>  seg000:06CE out 64h, al ; 下一個60寫到控制器去</p><p>  seg000:06D0 call Empty

47、KbdBuffer ; 等待8042鍵盤輸入緩沖區(qū)空,</p><p>  seg000:06D3 mov al, 0DFh ; 以野蠻方式向0x60端口寫入數(shù)據(jù),開啟A20,文明的方式應(yīng)該先讀出P2端口的值,</p><p>  seg000:06D3 ; 對A20位(P2端口

48、位1,從0開始算)使用OR操作后寫回P2口</p><p>  seg000:06D5 out 60h, al ; 開啟A20</p><p>  seg000:06D7 call EmptyKbdBuffer</p><p>  seg000:06DA

49、 mov al, 0FFh ; 鍵盤進(jìn)入 Reset 模式命令字</p><p>  seg000:06DC out 64h, al ; AT Keyboard controller 8042.</p><p>  seg000:06DC

50、 ; Reset the keyboard and start internal diagnostics</p><p>  seg000:06DE call EmptyKbdBuffer</p><p>  seg000:06E1 sti</p><p>  seg000:06E

51、2</p><p>  seg000:06E2 loc_6E2: ; CODE XREF: seg000:06C9j</p><p>  seg000:06E2 mov ax, 0BB00h ; TCG_StatusCheck;Trusted Platform Module(T

52、PM安全模塊檢測)</p><p>  seg000:06E5 int 1Ah</p><p>  seg000:06E7 and eax, eax</p><p>  seg000:06EA jnz short loc_727 ; jmp

53、因?yàn)锽IOS不支持 Int 1A,AH=BB</p><p>  seg000:06EC cmp ebx, 'APCT'</p><p>  seg000:06F3 jnz short loc_727</p><p>  seg000:06F5

54、 cmp cx, 102h</p><p>  seg000:06F9 jb short loc_727</p><p>  seg000:06FB push large 0BB07h</p><p>  seg000:0701 push

55、 large 200h</p><p>  seg000:0707 push large 8</p><p>  seg000:070D push ebx</p><p>  seg000:070F push ebx</p><p&g

56、t;  seg000:0711 push ebp</p><p>  seg000:0713 push large 0</p><p>  seg000:0719 push large 7C00h</p><p>  seg000:071F

57、 popad</p><p>  seg000:0721 push 0</p><p>  seg000:0724 pop es</p><p>  seg000:0725 int 1Ah</p><p> 

58、 seg000:0727</p><p>  seg000:0727 loc_727: ; CODE XREF: seg000:06EAj</p><p>  seg000:0727 ; seg000:06F3j</p><p

59、>  seg000:0727 ; seg000:06F9j</p><p>  seg000:0727 pop dx </p><p>  seg000:0728 xor dh, dh</p&

60、gt;<p>  seg000:072A jmp far ptr 0:7C00h ; 執(zhí)行DBR</p><p>  seg000:072F ; ---------------------------------------------------------------------------</p><p>  seg000:072

61、F int 18h ; TRANSFER TO ROM BASIC</p><p>  seg000:072F ; causes transfer to ROM-based BASIC (IBM-PC)</p><p>  seg000:072F

62、 ; often reboots a compatible; often has no effect at all</p><p>  seg000:0731</p><p>  seg000:0731 loc_731: ; CODE XREF: se

63、g000:06C1j</p><p>  seg000:0731 mov al, ds:MissingOS</p><p>  seg000:0734 jmp short loc_73E</p><p>  seg000:0736 ; -------------------------

64、--------------------------------------------------</p><p>  seg000:0736</p><p>  seg000:0736 loc_736: ; CODE XREF: seg000:06A8j</p><p>  seg000:0736

65、 mov al, ds:ErrorLoading</p><p>  seg000:0739 jmp short loc_73E</p><p>  seg000:073B ; --------------------------------------------------------------------

66、-------</p><p>  seg000:073B</p><p>  seg000:073B loc_73B: ; CODE XREF: seg000:0629j</p><p>  seg000:073B mov al, ds:ErrPartition

67、</p><p>  seg000:073E</p><p>  seg000:073E loc_73E: ; CODE XREF: seg000:0734j</p><p>  seg000:073E ; seg000:0

68、739j</p><p>  seg000:073E xor ah, ah</p><p>  seg000:0740 add ax, 700h</p><p>  seg000:0743 mov si, ax</p><p&

69、gt;  seg000:0745</p><p>  seg000:0745 loc_745: ; CODE XREF: seg000:0751j</p><p>  seg000:0745 lodsb</p><p>  seg000:0746

70、 cmp al, 0</p><p>  seg000:0748 jz short loc_753</p><p>  seg000:074A mov bx, 7</p><p>  seg000:074D mov ah, 0Eh&

71、lt;/p><p>  seg000:074F int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)</p><p>  seg000:074F ; AL = charac

72、ter, BH = display page (alpha modes)</p><p>  seg000:074F ; BL = foreground color (graphics modes)</p><p>  seg000:0751 jmp short loc_

73、745</p><p>  seg000:0753 ; ---------------------------------------------------------------------------</p><p>  seg000:0753</p><p>  seg000:0753 loc_753:

74、 ; CODE XREF: seg000:0748j</p><p>  seg000:0753 ; seg000:0754j</p><p>  seg000:0753 hlt</p><p>  seg000:0754 ; ---------

75、------------------------------------------------------------------</p><p>  seg000:0754 jmp short loc_753</p><p>  seg000:0756</p><p>  seg000:0756 ; ===========

76、==== S U B R O U T I N E =======================================</p><p>  seg000:0756</p><p>  seg000:0756</p><p>  seg000:0756 EmptyKbdBuffer proc near ; CODE XREF:

77、seg000:06C6p</p><p>  seg000:0756 ; seg000:06D0p</p><p>  seg000:0756 ; seg000:06D7p</p><p>  seg0

78、00:0756 ; seg000:06DEp</p><p>  seg000:0756 sub cx, cx ; 這樣得到一個最大的計(jì)數(shù)值</p><p>  seg000:0758</p><p>  seg000:0758

79、 loc_758: ; CODE XREF: EmptyKbdBuffer+8j</p><p>  seg000:0758 in al, 64h ; AT Keyboard controller 8042.</p><p>  seg000:075A

80、 jmp short $+2 ; 用跳轉(zhuǎn)做延時</p><p>  seg000:075C and al, 2 ; Test IBF flag (Status<1>)數(shù)據(jù)如果在輸入緩沖區(qū)是可用的,標(biāo)志就會被置1</p><p>  seg000:075C ; 如果數(shù)據(jù)從輸入緩沖區(qū)

81、里被讀出了,標(biāo)志就會被清 0 IBF標(biāo)志在 0x64端口的第 1 位</p><p>  seg000:075C ; 讀輸入緩沖區(qū)就是讀 0x60端口中的數(shù)據(jù)</p><p>  seg000:075E loopne loc_758 </p>&

82、lt;p>  ; loopne只有在CX不等于0和ZF=0的情況下才執(zhí)行循環(huán),64h端口第2位(位1)不為0(即為1)則循環(huán),</p><p>  seg000:075E ; 表示此時輸入緩沖器中有數(shù)據(jù)(滿),等到輸入緩沖器空才退出循環(huán)</p><p>  seg000:0760 and

83、 al, 2 ; 這個操作,可以讓后面的代碼判斷是由CX=0退出循環(huán)的,還是由緩沖器空退出循環(huán)的</p><p>  seg000:0762 retn</p><p>  seg000:0762 EmptyKbdBuffer endp</p><p>  seg000:0762</p><p> 

84、 seg000:0762 ; ---------------------------------------------------------------------------</p><p>  seg000:0763 aInvalidPartiti db 'Invalid partition table',0</p><p>  seg000:077B aError

85、LoadingOp db 'Error loading operating system',0</p><p>  seg000:079A aMissingOperati db 'Missing operating system',0</p><p>  seg000:07B3 dw 0</p><p>

86、;  seg000:07B5 ErrPartition db 63h ; DATA XREF: seg000:loc_73Br</p><p>  seg000:07B6 ErrorLoading db 7Bh ; DATA XREF: seg000:loc_736r</p><p>  seg000:07

87、B7 MissingOS db 9Ah ; DATA XREF: seg000:loc_731r</p><p>  seg000:07B8 db 0A3h, 99h,0BFh, 57h ; 4字節(jié)WIN系統(tǒng)磁盤簽名</p><p>  seg000:07BC dw 0

88、 ; 估計(jì)是保留字吧</p><p>  seg000:07BE db 80h, 20h, 21h, 0, 7,0FEh,2 dup(0FFh), 0, 8 ; 第一個分區(qū)表項(xiàng)</p><p>  seg000:07BE db 4 dup( 0), 7Fh, 2 ; 第1

89、字節(jié)是80H,表明這是活動分區(qū)了</p><p>  seg000:07CE db 10h dup( 0) ; 第二個分區(qū)表項(xiàng)</p><p>  seg000:07DE db 10h dup( 0) ; 第三個分區(qū)表項(xiàng)</p><p>  seg000:07EE

90、 db 10h dup( 0) ; 第四個分區(qū)表項(xiàng)</p><p>  seg000:07FE db 55h ; U</p><p>  seg000:07FF db 0AAh ; ?</p><p>  seg000:07FF seg000

91、 ends</p><p>  seg000:07FF</p><p>  seg000:07FF</p><p>  seg000:07FF end</p><p><b>  流程圖:</b></p><p>  4.上面已經(jīng)把活動分區(qū)DBR加載到內(nèi)存0x7

92、C00處,下面執(zhí)行DBR,在我電腦里是NTFS分區(qū)</p><p>  seg000:0000 seg000 segment byte public 'CODE' use16</p><p>  seg000:0000 assume cs:seg000</p><p>  seg000:0000

93、 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing</p><p>  seg000:0000 jmp short near ptr sub_10054跳到代碼區(qū)執(zhí)行</p><p>  seg000:0002 ; --------

94、-------------------------------------------------------------------</p><p>  seg000:0002 nop</p><p>  seg000:0002 ; --------------------------------------------------------------

95、-------------</p><p>  NTFS引導(dǎo)扇區(qū)結(jié)構(gòu)如下</p><p>  seg000:0003 db 'N', 'T', 'F', 'S' ; chOemID</p><p>  seg000:0003 db

96、4 dup(' ') ; chDummy</p><p>  seg000:0003 dw 200h ; wBytesPerSec</p><p>  seg000:0003 db 8 ; uchSecPerClust</p>&l

97、t;p>  seg000:0003 dw 0 ; wReservedSec</p><p>  seg000:0003 db 3 dup(0) ; uchReserved</p><p>  seg000:0003 dw 0

98、 ; wUnused1</p><p>  seg000:0003 db 0F8h ; uchMediaDescriptor</p><p>  seg000:0003 dw 0 ; wUnused2</p><p>  seg000:0003

99、 dw 3Fh ; wSecPerTrack</p><p>  seg000:0003 dw 0FFh ; wNumberOfHeads</p><p>  seg000:0003 dd 3Fh ; dwHiddenSec

100、</p><p>  seg000:0003 dd 0 ; dwUnused3</p><p>  seg000:0003 dd 800080h ; dwUnused4</p><p>  seg000:0003 dd 61

101、AB7E7h, 0 ; n64TotalSec</p><p>  seg000:0003 dd 0C0000h, 0 ; n64MFTLogicalClustNum</p><p>  seg000:0003 dd 10h, 0 ; n64MFTMirrLogicalClustN

102、um</p><p>  seg000:0003 dd 0F6h ; nClustPerMFTRecord</p><p>  seg000:0003 dd 1 ; nClustPerIndexRecord</p><p>  seg000:0003

103、 dd 38677D4Eh, 783867C1h ; n64VolumeSerialNum</p><p>  seg000:0003 dd 0 ; dwChecksum</p><p>  seg000:0054</p><p>  seg000:0054 ; ====

104、=========== S U B R O U T I N E =======================================</p><p>  seg000:0054</p><p>  seg000:0054 ; Attributes: noreturn</p><p>  seg000:0054</p><p>  s

105、eg000:0054 sub_10054 proc far ; CODE XREF: seg000:0000j</p><p>  seg000:0054 cli關(guān)中斷</p><p>  seg000:0055 xor ax, axax=0&

106、lt;/p><p>  seg000:0057 mov ss, axss=0</p><p>  seg000:0059 mov sp, 7C00hsp=7C00</p><p>  seg000:005C sti開

107、中斷</p><p>  seg000:005D push 7C0h</p><p>  seg000:0060 pop dsds=0x7C0</p><p>  seg000:0061 assume ds:nothing<

108、/p><p>  seg000:0061 push ds</p><p>  seg000:0062 push 66h</p><p>  seg000:0065 retf</p><p>  轉(zhuǎn)到ds:66=0x7C66

109、處執(zhí)行,也就是下面</p><p>  seg000:0065 sub_10054 endp</p><p>  seg000:0065</p><p>  seg000:0066</p><p>  seg000:0066 ; =============== S U B R O U T I N E ===============

110、========================</p><p>  seg000:0066</p><p>  seg000:0066</p><p>  seg000:0066 sub_10066 proc near由上面跳到這里</p><p>  seg000:0066 mo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論