|
楼主 |
发表于 2010-7-16 22:21:46
|
显示全部楼层
本帖最后由 Tesla.Angela 于 2010-8-1 23:30 编辑
顺便装一下B,贴出我翻译的ASM代码:
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
include macro.asm
.data
NtDllDll db 'NTDLL.DLL',0
GetDebug db 'RtlAdjustPrivilege',0
.code
START:
getp proc
local hNtdll:DWORD
local pRtlAdjustPrivilege:DWORD
local rtv:DWORD
invoke LoadLibrary,offset NtDllDll
mov hNtdll,eax
invoke GetProcAddress,hNtdll,offset GetDebug
mov pRtlAdjustPrivilege,eax
;RtlAdjustPrivilege(20,1,0,VarPtr(rtv))
lea eax,rtv
push eax
push 0
push 1
push 20
call pRtlAdjustPrivilege
getp endp
vpkp proc
local MaxAddr:DWORD
local MinAddr:DWORD
local CurAddr:DWORD
local PageSize:DWORD
local OldProtect:DWORD
local PID:DWORD
local hProc:DWORD
local VirtualQueryExRt:DWORD
local SysInfo:SYSTEM_INFO
local MemBasicInfo:MEMORY_BASIC_INFORMATION
mov eax,8888 ;这里是待杀死进程的PID
mov PID,eax
invoke GetSystemInfo,addr SysInfo
mov eax,SysInfo.lpMinimumApplicationAddress
mov MinAddr,eax
mov eax,MinAddr
mov CurAddr,eax
mov eax,SysInfo.lpMaximumApplicationAddress
mov MaxAddr,eax
mov ebx,MaxAddr
mov eax,SysInfo.dwPageSize
mov PageSize,eax
invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,PID
mov hProc,eax
.while CurAddr <= ebx
invoke VirtualQueryEx,hProc,CurAddr,addr MemBasicInfo,sizeof MEMORY_BASIC_INFORMATION
mov VirtualQueryExRt,eax
.if VirtualQueryExRt!=0
invoke VirtualProtectEx,hProc,MemBasicInfo.BaseAddress,MemBasicInfo.RegionSize,PAGE_NOACCESS,addr OldProtect
.endif
mov ecx,CurAddr
mov edx,PageSize
add ecx,edx
mov CurAddr,ecx
mov ebx,MaxAddr
.endw
invoke CloseHandle,hProc
vpkp endp
invoke ExitProcess,0
end START |
|