阅读572 返回首页    go 支付宝


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

 

.386
.model flat, stdcall
option casemap
:none

include  c:
masm32includewindows.inc
include  c:
masm32includeuser32.inc
include  c:
masm32includekernel32.inc
include  c:
masm32includeadvapi32.inc
includelib c:
masm32libuser32.lib
includelib c:
masm32libkernel32.lib
includelib  c:
masm32libadvapi32.lib
include  c:
masm32macrosucmacros.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:tmpDrv.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

最后更新:2017-04-02 00:06:25

  上一篇:go 2007年度最离奇最不可思议奖(转),极度搞笑
  下一篇:go Make Money from Your Blog with ClickBank