[原创]另一种进入NT内核方法的汇编版本

要说明的是该方法本身不是我的原创 ,是其他大牛首先写出来的。

而我只是将该方法的C版本 "翻译" 成 masm32 版本。: )

 

. 386
. model flat ,  stdcall
option casemap
:none

include  c:
masm32 include windows . inc
include  c:
masm32 include user32 . inc
include  c:
masm32 include kernel32 . inc
include  c:
masm32 include advapi32 . inc
includelib c:
masm32 lib user32 . lib
includelib c:
masm32 lib kernel32 . lib
includelib  c:
masm32 lib advapi32 . lib
include  c:
masm32 macros ucmacros . asm

UNICODE_STRING STRUCT
  _Length  WORD ?
  MaximumLength WORD ?
  Buffer  DWORD ?
UNICODE_STRING ENDS

SystemLoadAndCallImage  equ 
38

_ZwSetSystemInformation  typedef proto 
:dword , :dword , :dword
lpZwSetSystemInformation typedef ptr _ZwSetSystemInformation

_RtlInitUnicodeString  typedef proto 
:dword , :dword
lpRtlInitUnicodeString  typedef ptr _RtlInitUnicodeString

SYSTEM_LOAD_AND_CALL_IMAGE struct

 ModuleName UNICODE_STRING 
< ? >

SYSTEM_LOAD_AND_CALL_IMAGE ends

 
. const
txt    db 'Just 
Do  It!' , 0
cp    db 'hopy|侯佩'
, 0
WSTR    drvnameW
, " ??c: mpDrv.sys "
drvname    db '
?? c: tmp Drv . sys' , 0
dllname    db 'ntdll
. dll' , 0
szZwSetSystemInformation db 'ZwSetSystemInformation'
, 0
szRtlInitUnicodeString  db 'RtlInitUnicodeString'
, 0

 
. data?
hInstance   dd    ?
hdll    dd    ?
stSysCallImage   SYSTEM_LOAD_AND_CALL_IMAGE 
<>
ZwSetSystemInformation  lpZwSetSystemInformation ?
RtlInitUnicodeString  lpRtlInitUnicodeString  ?

 
. code
start :
 invoke GetModuleHandle
,   0
 mov hInstance
, eax

 invoke LoadLibrary
, addr dllname
 mov hdll
, eax

 invoke GetProcAddress
, hdll , addr szZwSetSystemInformation
 mov ZwSetSystemInformation
, eax

 invoke GetProcAddress
, hdll , addr szRtlInitUnicodeString
 mov RtlInitUnicodeString
, eax
 
 invoke RtlInitUnicodeString
, addr stSysCallImage . ModuleName ,
  addr drvnameW

 invoke ZwSetSystemInformation
, SystemLoadAndCallImage ,
  addr stSysCallImage
,
  sizeof SYSTEM_LOAD_AND_CALL_IMAGE

 invoke MessageBox
, NULL , addr txt , addr cp , MB_OK

 invoke ExitProcess
, NULL
end   start

你可能感兴趣的:(汇编,image,null,System,include,macros)