易語言NTAPI進程操縱的代碼
更新時間:2018年11月24日 11:15:47 作者:易語言源碼教程
今天小編就為大家分享一篇關(guān)于易語言NTAPI進程操縱的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
本程序?qū)崿F(xiàn)的功能:
- 打開進程_強力
- 進程暫停
- 取api函數(shù)地址
- 進程結(jié)束
- 進程結(jié)束_強力
- 進程_NT內(nèi)存清零
- 進程_取自進程ID
- 進程_提高權(quán)限
- Kill_Process命令
DLL命令表
.版本 2 .DLL命令 打開進程_, 整數(shù)型, "kernel32.dll", "OpenProcess", 公開, 將句柄返回給過程對象 .參數(shù) 進程對象, 整數(shù)型, , dwDesiredAccess .參數(shù) 繼承句柄, 整數(shù)型, , bInheritHandle .參數(shù) 進程標(biāo)識符, 整數(shù)型, , dwProcessId .DLL命令 ZwOpenProcess, 整數(shù)型, "ntdll.dll", "ZwOpenProcess", 公開 .參數(shù) hProcess, 整數(shù)型, 傳址 .參數(shù) DesiredAccess, 整數(shù)型 .參數(shù) ObjectAttributes, OBJECT_ATTRIBUTES .參數(shù) ClientId, CLIENT_ID .DLL命令 ZwQuerySystemInformation, 整數(shù)型, "ntdll.dll", "ZwQuerySystemInformation" .參數(shù) SystemInformationClass, 整數(shù)型, , 未知類型:SYSTEM_INFORMATION_CLASS。 .參數(shù) SystemInformation, 字節(jié)集, , any .參數(shù) SystemInformationLength, 整數(shù)型 .參數(shù) ReturnLength, 整數(shù)型, 傳址 .DLL命令 取指針_字節(jié)集, 整數(shù)型, , "lstrcpyn", 公開, 常規(guī)API .參數(shù) 欲取其指針, 字節(jié)集, 傳址 .參數(shù) 欲取其指針, 字節(jié)集, 傳址 .參數(shù) 保留, 整數(shù)型, , 0 .DLL命令 RtlMoveMemory3, 整數(shù)型, , "RtlMoveMemory", 公開, 常規(guī)API,從地址讀一個整數(shù) .參數(shù) dest, 整數(shù)型, 傳址 .參數(shù) Source, 整數(shù)型 .參數(shù) len, , , 4 .DLL命令 RtlMoveMemory1, 整數(shù)型, , "RtlMoveMemory", , 常規(guī)API .參數(shù) dest, SYSTEM_HANDLE_TABLE_ENTRY_INFO .參數(shù) Source, 整數(shù)型 .參數(shù) len .DLL命令 ZwDuplicateObject, 整數(shù)型, "ntdll.dll", , 公開 .參數(shù) SourceProcessHandle, 整數(shù)型 .參數(shù) SourceHandle, 整數(shù)型 .參數(shù) TargetProcessHandle, 整數(shù)型 .參數(shù) TargetHandle, 整數(shù)型, 傳址 .參數(shù) DesiredAccess, 整數(shù)型 .參數(shù) HandleAttributes, 整數(shù)型 .參數(shù) Options, 整數(shù)型 .DLL命令 ZwQueryInformationProcess, 整數(shù)型, "ntdll.dll", "ZwQueryInformationProcess" .參數(shù) SystemInformationClass, 整數(shù)型, , 未知類型:SYSTEM_INFORMATION_CLASS。 .參數(shù) dd, 整數(shù)型 .參數(shù) SystemInformation, PROCESS_BASIC_INFORMATION, , any .參數(shù) SystemInformationLength, 整數(shù)型 .參數(shù) ReturnLength, 整數(shù)型, 傳址 .DLL命令 ZwClose, 整數(shù)型, "ntdll.dll", "ZwClose", 公開, 關(guān)閉進程句柄 .參數(shù) handle .DLL命令 取函數(shù)地址_, 整數(shù)型, "kernel32", "GetProcAddress", , 返回函數(shù)地址 .參數(shù) 模塊句柄, 整數(shù)型 .參數(shù) 函數(shù)名, 文本型 .DLL命令 取模塊句柄_, 整數(shù)型, "kernel32", "GetModuleHandleA", , 獲取一個應(yīng)用程序或動態(tài)鏈接庫的模塊句柄 如執(zhí)行成功成功,則返回模塊句柄。零表示失敗。會設(shè)置GetLastError .參數(shù) 模塊名, 文本型, , 指定模塊名,這通常是與模塊的文件名相同的一個名字。例如,NOTEPAD.EXE程序的模塊文件名就叫作NOTEPAD; .DLL命令 _動態(tài)調(diào)用子程序, 整數(shù)型, , "CallWindowProcA" .參數(shù) 動態(tài)調(diào)用代碼, 字節(jié)集, , 字節(jié)集代碼 .參數(shù) 子程序, 整數(shù)型, , 子程序指針 到整數(shù)(子程序指針) .參數(shù) 參數(shù), 整數(shù)型, 數(shù)組, 為整數(shù)數(shù)組,參數(shù)1為成員1…類推;文本型和字節(jié)集型(自定義結(jié)構(gòu))為指針 .參數(shù) 參數(shù)數(shù)目, 整數(shù)型, , 一定要和參數(shù)數(shù)組相符,不然會出錯 .參數(shù) 是否C調(diào)用, 邏輯型, , 真為cdecl調(diào)用方式,假為stdcall調(diào)用方式(即標(biāo)準WINAPI方式) .DLL命令 ZwCreateJobObject, 整數(shù)型, "ntdll.dll", , 公開 .參數(shù) JobHandle, 整數(shù)型, 傳址 .參數(shù) DesiredAccess, 整數(shù)型 .參數(shù) ObjectAttributes, OBJECT_ATTRIBUTES .DLL命令 關(guān)閉內(nèi)核對象_, 整數(shù)型, "kernel32.dll", "CloseHandle", 公開, $(b)非零表示成功,零表示失敗 .參數(shù) 對象句柄, 整數(shù)型, , hObject,欲關(guān)閉的一個對象的句柄 .DLL命令 TerminateProcess_, 整數(shù)型, "kernel32", "TerminateProcess", , 結(jié)束一個進程 非零表示成功,零表示失敗。會設(shè)置GetLastError .參數(shù) hProcess, 整數(shù)型, , 指定要中斷的一個進程的句柄 .參數(shù) uExitCode, 整數(shù)型, , 進程的一個退出代碼; .DLL命令 ZwAssignProcessToJobObject, 整數(shù)型, "ntdll.dll", , 公開 .參數(shù) JobHandle, 整數(shù)型 .參數(shù) ProcessHandle, 整數(shù)型 .DLL命令 ZwTerminateJobObject, 整數(shù)型, "ntdll.dll", , 公開 .參數(shù) JobHandle, 整數(shù)型 .參數(shù) ExitStatus, 整數(shù)型 .DLL命令 ZwTerminateProcess, 整數(shù)型, "ntdll.dll", , 公開 .參數(shù) ProcessHandle, 整數(shù)型 .參數(shù) ExitStatus, 整數(shù)型 .DLL命令 ZwProtectVirtualMemory, 整數(shù)型, "NTDLL.DLL", "ZwProtectVirtualMemory" .參數(shù) ProcessHandle, 整數(shù)型 .參數(shù) BaseAddress, 整數(shù)型 .參數(shù) RegionSize, 整數(shù)型 .參數(shù) NewProtect, 整數(shù)型 .參數(shù) OldProtect, 整數(shù)型 .DLL命令 ZwWriteVirtualMemory, 整數(shù)型, "NTDLL.DLL", "ZwWriteVirtualMemory" .參數(shù) ProcessHandle, 整數(shù)型 .參數(shù) BaseAddress, 整數(shù)型 .參數(shù) pBuffer, 字節(jié)集 .參數(shù) NumberOfBytesToWrite, 整數(shù)型 .參數(shù) NumberOfBytesWritten, 整數(shù)型, 傳址 .DLL命令 RtlAdjustPrivilegeA, 整數(shù)型, "ntdll.dll", "RtlAdjustPrivilege" .參數(shù) Privilege, 整數(shù)型 .參數(shù) Enable, 邏輯型 .參數(shù) Client, 邏輯型 .參數(shù) WasEnabled, 整數(shù)型, 傳址 .DLL命令 API_CreateRemoteThread, 整數(shù)型, "kernel32", "CreateRemoteThread", , 在另一進程中建立線索 .參數(shù) hProcess, 整數(shù)型 .參數(shù) lpThreadAttributes, SECURITY_ATTRIBUTES .參數(shù) dwStackSize, 整數(shù)型 .參數(shù) lpStartAddress, 整數(shù)型 .參數(shù) lpParameter, 整數(shù)型 .參數(shù) dwCreationFlags, 整數(shù)型 .參數(shù) lpThreadId, 整數(shù)型 .DLL命令 CreateToolhelp32Snapshot, 整數(shù)型, "Kernel32.dll", "CreateToolhelp32Snapshot" .參數(shù) falg, 整數(shù)型 .參數(shù) id, 整數(shù)型 .DLL命令 Thread32First, 整數(shù)型, "kernel32", "Thread32First" .參數(shù) hSnapshot, 整數(shù)型 .參數(shù) lppe, THREADENTRY32 .DLL命令 OpenThread, 整數(shù)型, "kernel32", "OpenThread" .參數(shù) h, 整數(shù)型 .參數(shù) a, 邏輯型 .參數(shù) b, 整數(shù)型 .DLL命令 TerminateThread, 整數(shù)型, "NTDLL.DLL", "ZwTerminateThread" .參數(shù) hThread, 整數(shù)型 .參數(shù) dwExitCode, 整數(shù)型 .DLL命令 Thread32Next, 整數(shù)型, "kernel32", "Thread32Next" .參數(shù) hSnapshot, 整數(shù)型 .參數(shù) lppe, THREADENTRY32 .DLL命令 NtUnmapViewOfSection, 整數(shù)型, "ntdll.dll", "NtUnmapViewOfSection" .參數(shù) hProcess .參數(shù) addr .DLL命令 LoadLibrary, 整數(shù)型, "kernel32", "LoadLibraryA", 公開 .參數(shù) lpLibFileName, 文本型 .DLL命令 DebugActiveProcess, 邏輯型, "kernel32", "DebugActiveProcess" .參數(shù) dwProcessId, 整數(shù)型
自定義數(shù)據(jù)類型表
.版本 2 .數(shù)據(jù)類型 CLIENT_ID, 公開, CLIENT_ID結(jié)構(gòu)包含進程和線程的標(biāo)識符。 .成員 UniqueProcess, 整數(shù)型, , , 進程標(biāo)識符 .成員 UniqueThread, 整數(shù)型, , , 線程標(biāo)識符 .數(shù)據(jù)類型 OBJECT_ATTRIBUTES, 公開, OBJECT_ATTRIBUTES結(jié)構(gòu)指定屬性,可以應(yīng)用于對象或?qū)ο筇幚淼睦虅?chuàng)建對象和/或返回對象的處理。 .成員 Length, 整數(shù)型 .成員 RootDirectory, 整數(shù)型 .成員 ObjectName, 整數(shù)型 .成員 Attributes, 整數(shù)型 .成員 SecurityDescriptor, 整數(shù)型 .成員 SecurityQualityOfService, 整數(shù)型 .數(shù)據(jù)類型 SECURITY_ATTRIBUTES, , 安全性結(jié)構(gòu); .成員 nLength, 整數(shù)型 .成員 lpSecurityDescriptor, 整數(shù)型 .成員 bInheritHandle, 整數(shù)型 .數(shù)據(jù)類型 PROCESS_BASIC_INFORMATION, 公開 .成員 ExitStatus, 整數(shù)型 .成員 PebBaseAddress, 整數(shù)型 .成員 AffinityMask, 整數(shù)型 .成員 BasePriority, 整數(shù)型 .成員 UniqueProcessId, 整數(shù)型 .成員 InheritedFromUniqueProcessId, 整數(shù)型 .數(shù)據(jù)類型 MEMORY_BASIC_INFORMATION, 公開 .成員 BaseAddress, 整數(shù)型 .成員 AllocationBase, 整數(shù)型 .成員 AllocattionProtect, 整數(shù)型 .成員 RegionSize, 整數(shù)型 .成員 State, 整數(shù)型 .成員 Protect, 整數(shù)型 .成員 Type, 整數(shù)型 .數(shù)據(jù)類型 SYSTEM_HANDLE_TABLE_ENTRY_INFO, 公開 .成員 UniqueProcessId, 短整數(shù)型 .成員 CreatorBackTraceIndex, 短整數(shù)型 .成員 ObjectTypeIndex, 字節(jié)型 .成員 HandleAttributes, 字節(jié)型 .成員 HandleValue, 短整數(shù)型 .成員 pObject, 整數(shù)型 .成員 GrantedAccess, 整數(shù)型 .數(shù)據(jù)類型 THREADENTRY32 .成員 dwsize, 整數(shù)型 .成員 cntusage, 整數(shù)型 .成員 th32threadID, 整數(shù)型 .成員 th32OwnerProcessID, 整數(shù)型 .成員 tpBasePri, 整數(shù)型 .成員 tpDeltaPri, 整數(shù)型 .成員 dwFlags, 整數(shù)型
常量數(shù)據(jù)表
.版本 2 .常量 PROCESS_ALL_ACCESS, "2035711", 公開 .常量 STATUS_INFO_LENGTH_MISMATCH, "-1073741820", 公開 .常量 STATUS_SUCCESS, "0", 公開 .常量 PROCESS_QUERY_INFORMATION, "1024", 公開 .常量 STATUS_INVALID_PARAMETER, "-1073741811", 公開 .常量 OBJ_INHERIT, "2", 公開 .常量 DUPLICATE_CLOSE_SOURCE, "1", 公開 .常量 DUPLICATE_SAME_ACCESS, "2", 公開 .常量 DUPLICATE_SAME_ATTRIBUTES, "4", 公開 .常量 OB_TYPE_PROCESS, "5", 公開 .常量 ZwGetCurrentProcess, "-1", 公開 .常量 PROCESS_DUP_HANDLE, "64", 公開 .常量 PAGE_EXECUTE_READWRITE, "64" .常量 JOB_OBJECT_ALL_ACCESS, "2031647", 公開
NTAPI進程操縱代碼
.版本 2
.程序集 主程序集
.子程序 _啟動子程序, 整數(shù)型
進程_提高權(quán)限 ()
信息框 (進程暫停 (3796, 假), 0, , )
返回 (0)
.子程序 打開進程_強力, 整數(shù)型, 公開, 主要為NATIVE API
.參數(shù) dwDesiredAccess, 整數(shù)型
.參數(shù) bInhert, 邏輯型
.參數(shù) ProcessId, 整數(shù)型
.局部變量 st, 整數(shù)型
.局部變量 cid, CLIENT_ID, , , CLIENT_ID結(jié)構(gòu)包含進程和線程的標(biāo)識符。
.局部變量 oa, OBJECT_ATTRIBUTES
.局部變量 NumOfHandle, 整數(shù)型
.局部變量 pbi, PROCESS_BASIC_INFORMATION
.局部變量 i, 整數(shù)型
.局部變量 hProcessToDup, 整數(shù)型
.局部變量 hProcessCur, 整數(shù)型
.局部變量 hProcessToRet, 整數(shù)型
.局部變量 h_info, SYSTEM_HANDLE_TABLE_ENTRY_INFO
.局部變量 retlen, 整數(shù)型
.局部變量 a, 字節(jié)集
.局部變量 b, 整數(shù)型
.局部變量 c, 字節(jié)集
.局部變量 ret, 整數(shù)型
.如果真 (ProcessId = 0)
返回 (0)
.如果真結(jié)束
oa.Length = 24
.如果真 (bInhert)
oa.Attributes = 位或 (oa.Attributes, #OBJ_INHERIT)
.如果真結(jié)束
cid.UniqueProcess = ProcessId + 1
st = ZwOpenProcess (hProcessToRet, dwDesiredAccess, oa, cid)
.如果真 (st ≥ 0)
ret = hProcessToRet
返回 (ret)
.如果真結(jié)束
retlen = 1
.循環(huán)判斷首 ()
a = 取空白字節(jié)集 (retlen)
ret = ZwQuerySystemInformation (16, a, retlen, 0)
.如果 (ret = #STATUS_INFO_LENGTH_MISMATCH)
retlen = retlen × 2
a = 取空白字節(jié)集 (retlen)
.否則
跳出循環(huán) ()
.如果結(jié)束
.循環(huán)判斷尾 (ret = #STATUS_INFO_LENGTH_MISMATCH)
b = 取指針_字節(jié)集 (a, a, 0)
RtlMoveMemory3 (NumOfHandle, b, 4)
b = b + 4
.計次循環(huán)首 (NumOfHandle, i)
RtlMoveMemory1 (h_info, b, 16)
.如果真 (h_info.ObjectTypeIndex = #OB_TYPE_PROCESS)
cid.UniqueProcess = h_info.UniqueProcessId
st = ZwOpenProcess (hProcessToDup, #PROCESS_DUP_HANDLE, oa, cid)
.如果真 (st ≥ 0)
st = ZwDuplicateObject (hProcessToDup, h_info.HandleValue, #ZwGetCurrentProcess, hProcessCur, #PROCESS_ALL_ACCESS, 0, #DUPLICATE_SAME_ATTRIBUTES)
.如果真 (st ≥ 0)
st = ZwQueryInformationProcess (hProcessCur, 0, pbi, 24, 0)
.如果真 (st ≥ 0)
.如果真 (pbi.UniqueProcessId = ProcessId)
st = ZwDuplicateObject (hProcessToDup, h_info.HandleValue, #ZwGetCurrentProcess, hProcessToRet, dwDesiredAccess, #OBJ_INHERIT, #DUPLICATE_SAME_ATTRIBUTES)
.如果真 (st ≥ 0)
ret = hProcessToRet
.如果真結(jié)束
.如果真結(jié)束
.如果真結(jié)束
.如果真結(jié)束
st = ZwClose (hProcessCur)
.如果真結(jié)束
st = ZwClose (hProcessToDup)
.如果真結(jié)束
b = b + 16
.計次循環(huán)尾 ()
返回 (ret)
.子程序 進程暫停, 邏輯型, 公開, 進程暫停(成功返回真,失敗假)
.參數(shù) PID, 整數(shù)型
.參數(shù) 狀態(tài), 邏輯型, 可空
.局部變量 進程句柄, 整數(shù)型
.局部變量 a, 整數(shù)型
進程句柄 = 打開進程_ (2035711, 0, PID)
.如果真 (進程句柄 = 0)
進程句柄 = 打開進程_強力 (2035711, 假, PID)
.如果真結(jié)束
.如果真 (進程句柄 = 0)
返回 (假)
.如果真結(jié)束
.如果 (狀態(tài))
a = API_ZwSuspendProcess (進程句柄)
.否則
a = API_ZwResumeProcess (進程句柄)
.如果結(jié)束
關(guān)閉內(nèi)核對象_ (進程句柄)
返回 (a = 0)
.子程序 API_ZwSuspendProcess, 整數(shù)型, , NTDLL.DLL,API_ZwSuspendProcess
.參數(shù) 進程句柄, 整數(shù)型
.局部變量 地址, 整數(shù)型
.局部變量 參數(shù), 整數(shù)型, , "1"
地址 = 取api函數(shù)地址 (“NTDLL.DLL”, “ZwSuspendProcess”) ' 取出NTDLL中函數(shù)ZwSuspendProcess的地址
參數(shù) [1] = 進程句柄 ' ZwSuspendProcess的參數(shù),ZwSuspendProcess是系統(tǒng)自帶的掛起進程命令,動態(tài)調(diào)用防止鉤子
返回 (_動態(tài)調(diào)用子程序 (#動態(tài)調(diào)用代碼, 地址, 參數(shù), 1, 假)) ' 動態(tài)調(diào)用
.子程序 取api函數(shù)地址, 整數(shù)型, 公開
.參數(shù) dll文件名, 文本型
.參數(shù) dll命令名, 文本型
返回 (取函數(shù)地址_ (取模塊句柄_ (dll文件名), dll命令名))
.子程序 API_ZwResumeProcess, 整數(shù)型, , NTDLL.DLL,API_ZwResumeProcess
.參數(shù) 進程句柄, 整數(shù)型
.局部變量 地址, 整數(shù)型
.局部變量 參數(shù), 整數(shù)型, , "1"
地址 = 取api函數(shù)地址 (“NTDLL.DLL”, “ZwResumeProcess”) ' 取出NTDLL中函數(shù)ZwResumeProcess的地址
參數(shù) [1] = 進程句柄 ' ZwResumeProcess的參數(shù),ZwResumeProcess是系統(tǒng)自帶的恢復(fù)進程命令,動態(tài)調(diào)用防止鉤子
返回 (_動態(tài)調(diào)用子程序 (#動態(tài)調(diào)用代碼, 地址, 參數(shù), 1, 假)) ' 動態(tài)調(diào)用
.子程序 進程結(jié)束, 邏輯型, 公開, 終止一個進程(成功返回真,失敗返回假)
.參數(shù) 進程ID, 整數(shù)型, , 欲結(jié)束的進程ID
.局部變量 進程句柄, 整數(shù)型
.局部變量 a, 整數(shù)型
進程句柄 = 打開進程_ (進程ID)
a = TerminateProcess_ (進程句柄, 0)
關(guān)閉內(nèi)核對象_ (進程句柄)
返回 (a > 0)
.子程序 進程結(jié)束_強力, 邏輯型, 公開, 主要為NATIVE API
.參數(shù) hProcess, 整數(shù)型
.參數(shù) ExitStatus, 整數(shù)型, , 0
.局部變量 st, 整數(shù)型
.局部變量 hJob, 整數(shù)型
.局部變量 oa, OBJECT_ATTRIBUTES
.局部變量 ret, 邏輯型
ret = 假
oa.Length = 24
st = ZwCreateJobObject (hJob, #JOB_OBJECT_ALL_ACCESS, oa)
.如果真 (st ≥ 0)
st = ZwAssignProcessToJobObject (hJob, hProcess)
.如果真 (st ≥ 0)
st = ZwTerminateJobObject (hJob, ExitStatus)
.如果真 (st ≥ 0)
ret = 真
.如果真結(jié)束
.如果真結(jié)束
ZwClose (hJob)
.如果真結(jié)束
.如果真 (ret = 假)
st = ZwTerminateProcess (hProcess, ExitStatus)
.如果真 (st ≥ 0)
ret = 真
.如果真結(jié)束
.如果真結(jié)束
返回 (ret)
.子程序 進程_NT內(nèi)存清零, 邏輯型, 公開, 注意,該命令十分強力,可以清除進程大部分殘余命令和內(nèi)存(注:速度太慢,CPU占量很高,請慎用?。?
.參數(shù) PID, 整數(shù)型
.局部變量 hprocess, 整數(shù)型
.局部變量 i, 整數(shù)型
.局部變量 內(nèi)存填充物, 整數(shù)型
hprocess = 打開進程_強力 (#PROCESS_ALL_ACCESS, 假, PID)
內(nèi)存填充物 = 取空白字節(jié)集 (255)
.變量循環(huán)首 (0, 40960000, 4096, i)
ZwProtectVirtualMemory (hprocess, i, 4096, #PAGE_EXECUTE_READWRITE, 0)
ZwWriteVirtualMemory (hprocess, i, 內(nèi)存填充物, 4096, 0)
.變量循環(huán)尾 ()
ZwClose (hprocess)
.子程序 進程_取自進程ID, 整數(shù)型, 公開, 取自身進程PID,成功返回進程ID,失敗返回-1
置入代碼 ({ 100, 139, 5, 32, 0, 0, 0, 201, 195 })
返回 (-1)
.子程序 進程_提高權(quán)限, 邏輯型, 公開, NT強力提高權(quán)限,限自身
RtlAdjustPrivilegeA (20, 真, 假, 0)
返回 (真)
.子程序 Kill_Process, 邏輯型, 公開, 包含8種殺進程方法
.參數(shù) PID, 整數(shù)型
.局部變量 hJob, 整數(shù)型
.局部變量 oa, OBJECT_ATTRIBUTES
.局部變量 H, 整數(shù)型
.局部變量 h_d, 整數(shù)型
.局部變量 sa, SECURITY_ATTRIBUTES
.局部變量 i, 整數(shù)型
H = 打開進程_ (PID)
.如果真 (H = 0)
H = 打開進程_強力 (#PROCESS_ALL_ACCESS, 假, PID)
.如果真結(jié)束
.如果 (H ≠ 0)
.如果真 (ZwTerminateProcess (H, 1) ≥ 1)
返回 (真)
.如果真結(jié)束
.如果真 (進程結(jié)束 (PID))
返回 (真)
.如果真結(jié)束
.如果真 (進程結(jié)束_強力 (H, 0))
返回 (真)
.如果真結(jié)束
oa.Length = 24
.如果真 (ZwCreateJobObject (hJob, 2031647, oa) ≥ 0)
.如果真 (ZwAssignProcessToJobObject (hJob, H) ≥ 0 且 ZwTerminateJobObject (hJob, 0) ≥ 0)
ZwClose (H)
ZwClose (hJob)
返回 (真)
.如果真結(jié)束
ZwClose (hJob)
.如果真結(jié)束
h_d = 取api函數(shù)地址 (“kernel32.dll”, “ExitProcess”)
API_CreateRemoteThread (H, sa, 0, h_d, 0, 0, 0)
關(guān)閉內(nèi)核對象_ (H)
.如果真 (KillAllTheard (PID))
返回 (真)
.如果真結(jié)束
.否則
H = 打開進程_ (8, 0, PID)
.如果真 (H = 0)
H = 打開進程_強力 (8, 假, PID)
.如果真結(jié)束
i = NtUnmapViewOfSection (H, LoadLibrary (“kernel32.dll”)) ' 強制卸載kernel32.dll
i = NtUnmapViewOfSection (H, LoadLibrary (“USER32.dll”)) ' 強制卸載USER32.dll
i = NtUnmapViewOfSection (H, LoadLibrary (“GDI32.dll”)) ' 強制卸載GDI32.dll
i = NtUnmapViewOfSection (H, LoadLibrary (“KERNELBASE.dll”)) ' 強制卸載KERNELBASE.dll
i = NtUnmapViewOfSection (H, LoadLibrary (“ntdll.dll”)) ' 強制卸載ntdll.dll
ZwClose (H)
.如果真 (i ≥ 0)
返回 (真)
.如果真結(jié)束
返回 (DebugActiveProcess (PID))
.如果結(jié)束
返回 (假)
.子程序 KillAllTheard, 邏輯型
.參數(shù) pid
.局部變量 hSnapShot, 整數(shù)型
.局部變量 End, 整數(shù)型
.局部變量 buffer, THREADENTRY32
.局部變量 tid, 整數(shù)型
.局部變量 handle
tid = -1
hSnapShot = CreateToolhelp32Snapshot (4, 0)
buffer.dwsize = 28
End = Thread32First (hSnapShot, buffer)
.判斷循環(huán)首 (End ≠ 0)
.如果真 (buffer.th32OwnerProcessID = pid)
tid = buffer.th32threadID
handle = OpenThread (2032639, 假, tid)
.如果真 (TerminateThread (handle, 0) = 0)
關(guān)閉內(nèi)核對象_ (handle)
關(guān)閉內(nèi)核對象_ (hSnapShot)
返回 (假)
.如果真結(jié)束
關(guān)閉內(nèi)核對象_ (handle)
跳出循環(huán) ()
.如果真結(jié)束
End = Thread32Next (hSnapShot, buffer)
.判斷循環(huán)尾 ()
關(guān)閉內(nèi)核對象_ (hSnapShot)
返回 (真)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

