⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dioc.asm

📁 window编程,非常的好
💻 ASM
字号:
;@GOTO TRANSLATE

.586P

.MODEL            FLAT, STDCALL

   OPTION         CASEMAP: NONE
   INCLUDE        WINDOWS.inc
   UNICODE        = FALSE
   INCLUDE        APIMACRO.mac

   INCLUDE        ApiHooks.inc

   INCLUDELIB     iKERNEL32.lib
   INCLUDELIB     iUSER32.lib

;------------------------------------------------------------------
.DATA
   hLog      HANDLE    INVALID_HANDLE_VALUE
   FileSize  DWORD     0
   RecSize   EQU       0C3H
   MAX_FILE_SIZE EQU   1000*RecSize
   TEXTA     KERNEL32, <KERNEL32.dll/0> 
   TEXTA     DeviceIoControl, <DeviceIoControl/0> 
   TEXT      DIOtext,  <Sending command /#0.8X to device referenced by handle /#0.8X./nInBuffer=/#0.8X size=/#0.8X. OutBuffer=/#0.8X size=/#0.8X./nInBuffer=/0>
   TEXT      OutPart,  </nOutBuffer=>
   TEXT      Failed,   </nReturn: failed/:/n>
   TEXT      Succeeded,</nReturn: succeeded./n---------------/n>
   TEXT      LogName,  <dioc.log/0>

.DATA?
   Place     ACHAR     4096   DUP (?)


.CODE
  DllMain    PROC     DllHandle, Reason, pContext
    MOV      EAX,     Reason
    CMP      EAX,     DLL_PROCESS_ATTACH
    JE       Attach
    CMP      EAX,     DLL_PROCESS_DETACH
    JE       Detach
   Success:
    MOV      EAX,     TRUE
    RET

   Attach:
    CMP      hLog, INVALID_HANDLE_VALUE
    JNE      Success
    iWin32i  CreateFile, sLogName, GENERIC_WRITE, FILE_SHARE_READ,\
                         NULL, CREATE_ALWAYS, NULL, NULL
    MOV      hLog, EAX
    JMP      Success

   Detach:
    iWin32   CloseHandle, hLog
    MOV      hLog, INVALID_HANDLE_VALUE
    JMP      Success

  DllMain    ENDP
;------------------------------------------------------------------
  NewDeviceIoControl PROC    hDevice, dwIoControlCode, lpInBuffer, nInBuffer,\
                             lpOutBuffer, nOutBuffer, lpbytesReturned,\
                             lpOverlapped
                     LOCAL   Written : DWORD
                     CMP     FileSize, MAX_FILE_SIZE
                     JB      @F
                     LEAVE
                     iWin32j DeviceIoControl
                    @@:
                     iWin32i wsprintf, OFFSET Place, sDIOtext, dwIoControlCode, hDevice, lpInBuffer, nInBuffer, lpOutBuffer, nOutBuffer
                     LEA     ECX, Written
                     iWin32  WriteFile, hLog, OFFSET Place, EAX, ECX, NULL
                     LEA     ECX, Written
                     iWin32  WriteFile, hLog, lpInBuffer, nInBuffer, ECX, NULL
                     iWin32  DeviceIoControl, hDevice, dwIoControlCode, lpInBuffer, nInBuffer, lpOutBuffer, nOutBuffer, lpbytesReturned, lpOverlapped
                     PUSHp   EAX, EAX
                     LEA     ECX, Written
                     iWin32  WriteFile, hLog, sOutPart, LOutPart, ECX, NULL
                     LEA     ECX, Written
                     iWin32  WriteFile, hLog, lpOutBuffer, nOutBuffer, ECX, NULL
                     POP     EAX
                     MOV     EDX, sFailed
                     TEST    EAX, EAX
                     MOV     EAX, LFailed
                     JE      @F
                     MOV     EDX, sSucceeded
                     MOV     EAX, LSucceeded
                    @@:
                     LEA     ECX, Written
                     iWin32  WriteFile, hLog, EDX, EAX, ECX, NULL
                     ADD     FileSize, RecSize
                     POP     EAX
                     RET
  NewDeviceIoControl ENDP

;------------------------------------------------------------------
 BeginHooks DIOC  
   MkHook  ,, DeviceIoControl
 EndHooks
;------------------------------------------------------------------

END  DllMain

:TRANSLATE
@ECHO OFF
ML    /c /coff /nologo DIOC.bat
LINK3 DIOC /nologo /DLL /EXPORT:DIOC,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.idata=.text /MERGE:.rdata=.text /IGNORE:4078 /BASE:0X77770000
DEL   DIOC.obj
DEL   DIOC.exp
DEL   DIOC.lib

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -