溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

易語言中怎么使用NTAPI實現(xiàn)進程操縱

發(fā)布時間:2021-06-09 18:08:33 來源:億速云 閱讀:182 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關(guān)易語言中怎么使用NTAPI實現(xiàn)進程操縱,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

DLL命令表

.版本 2
.DLL命令 打開進程_, 整數(shù)型, "kernel32.dll", "OpenProcess", 公開, 將句柄返回給過程對象
  .參數(shù) 進程對象, 整數(shù)型, , dwDesiredAccess 
  .參數(shù) 繼承句柄, 整數(shù)型, , bInheritHandle  
  .參數(shù) 進程標識符, 整數(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)用方式(即標準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)包含進程和線程的標識符。
  .成員 UniqueProcess, 整數(shù)型, , , 進程標識符
  .成員 UniqueThread, 整數(shù)型, , , 線程標識符
.數(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ù)型
  .成員 th42threadID, 整數(shù)型
  .成員 th42OwnerProcessID, 整數(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)包含進程和線程的標識符。
.局部變量 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.th42OwnerProcessID = pid)
    tid = buffer.th42threadID
    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)
返回 (真)

以上就是易語言中怎么使用NTAPI實現(xiàn)進程操縱,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI