|
- IncludeLib User32.Lib
- IncludeLib Kernel32.Lib
- EXTERN LoadLibraryA:PROC
- EXTERN GetProcAddress:PROC
- EXTERN ExitProcess:PROC
- EXTERN CreateFileA:PROC
- EXTERN OpenProcess:PROC
- EXTERN MessageBoxA:PROC
- EXTERN GetCurrentProcess:PROC
- EXTERN CloseHandle:PROC
- EXTERN SetHandleInformation:PROC
- .DATA?
- hMod qword 0
- pApi1 qword 0
- pApi2 qword 0
- bRet qword 0
- hsFile qword 0
- htFile qword 0
- hProc qword 0
- hMyProc qword 0
- iii qword 0
-
- .DATA
- szTit BYTE "c:\TryToDel2.txt",0
- szDll BYTE "ntdll.dll",0
- szFun1 BYTE "RtlAdjustPrivilege",0
- szFun2 BYTE "NtDuplicateObject",0
- szStr1 BYTE "Tips",0
- szStr2 BYTE "OK!!",0
-
- .CODE
- Entry PROC
- ;hMod=LoadLibraryA("ntdll.dll")
- sub rsp,16
- lea rcx,szDll
- call LoadLibraryA
- mov hMod,rax
- add rsp,16
- ;pApi1=GetProcAddress(hMod,"RtlAdjustPrivilege")
- sub rsp,24
- mov rcx,hMod
- lea rdx,szFun1
- call GetProcAddress
- mov pApi1,rax
- add rsp,24
- ;pApi2=GetProcAddress(hMod,"NtDuplicateObject")
- sub rsp,24
- mov rcx,hMod
- lea rdx,szFun2
- call GetProcAddress
- mov pApi2,rax
- add rsp,24
- ;RtlAdjustPrivilege(20,1,0,&bRet);
- sub rsp,40
- mov rcx,20
- mov rdx,1
- mov r8,0
- lea r9,bRet
- call pApi1
- add rsp,40
- ;hMyProc=GetCurrentProcess()
- sub rsp,8
- call GetCurrentProcess
- mov hMyProc,rax
- add rsp,8
- ;hsFile=CreateFileA(pFile, 0x80000000, 0, 0, 3, 0, 0)
- sub rsp,64
- xor rax,rax
- mov [rsp+48],rax
- mov [rsp+40],rax
- mov rax,3
- mov [rsp+32],rax
- xor r9,r9
- xor r8,r8
- mov rdx,80000000h
- lea rcx,szTit
- call CreateFileA
- mov hsFile,rax
- add rsp,64
- ;SetHandleInformation(hsFile,0,2)
- sub rsp,32
- mov rcx,hsFile
- mov rdx,0
- mov r8,2
- call SetHandleInformation
- add rsp,32
- ;for(i=100;i<19996;i+=4) [copy file handle to other process]
- mov iii,100 ;start pid
- addto19996:
- ;OpenProcess(0x1F0FFF, 0, iii);
- sub rsp,32
- mov rcx,1F0FFFh
- mov rdx,0
- mov r8,iii
- call OpenProcess
- mov hProc,rax
- add rsp,32
- ;if (rax==0) goto [loopnext]
- cmp rax,0
- je loopnext
- ;NtDuplicateObject((HANDLE)-1, hsFile, hProcess, &htFile, 0, 0, 4);
- sub rsp,64
- mov rax,4
- mov [rsp+48],rax
- xor rax,rax
- mov [rsp+40],rax
- mov [rsp+32],rax
- lea r9,htFile
- mov r8,hProc
- mov rdx,hsFile
- mov rcx,hMyProc
- call pApi2
- add rsp,64
- ;CloseHandle(hProc)
- sub rsp,16
- mov rcx,hProc
- call CloseHandle
- add rsp,16
- loopnext:
- mov rbx,iii
- add rbx,4
- mov iii,rbx
- ;if (rbx<>19996) goto [addto19996]
- cmp rbx,19996 ;end pid
- jb addto19996
- ;MessageBoxA(0,"OK!!","TIPS",0)
- sub rsp,40
- mov rcx,0
- lea rdx,szStr2
- lea r8,szStr1
- mov r9,0
- call MessageBoxA
- add rsp,40
- ;ExitProcess(0)
- sub rsp,8
- mov rcx,0
- call ExitProcess
- add rsp,8
- ret
- Entry ENDP
- END
复制代码 |
|