国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > 易語言 > 正文

易語言NTAPI進程操縱的代碼

2024-07-21 23:02:35
字體:
來源:轉載
供稿:網友

本程序實現的功能:

  • 打開進程_強力
  • 進程暫停
  • 取api函數地址
  • 進程結束
  • 進程結束_強力
  • 進程_NT內存清零
  • 進程_取自進程ID
  • 進程_提高權限
  • Kill_Process命令

DLL命令表

.版本 2.DLL命令 打開進程_, 整數型, "kernel32.dll", "OpenProcess", 公開, 將句柄返回給過程對象  .參數 進程對象, 整數型, , dwDesiredAccess   .參數 繼承句柄, 整數型, , bInheritHandle    .參數 進程標識符, 整數型, , dwProcessId.DLL命令 ZwOpenProcess, 整數型, "ntdll.dll", "ZwOpenProcess", 公開  .參數 hProcess, 整數型, 傳址  .參數 DesiredAccess, 整數型  .參數 ObjectAttributes, OBJECT_ATTRIBUTES  .參數 ClientId, CLIENT_ID.DLL命令 ZwQuerySystemInformation, 整數型, "ntdll.dll", "ZwQuerySystemInformation"  .參數 SystemInformationClass, 整數型, , 未知類型:SYSTEM_INFORMATION_CLASS。  .參數 SystemInformation, 字節集, , any  .參數 SystemInformationLength, 整數型  .參數 ReturnLength, 整數型, 傳址.DLL命令 取指針_字節集, 整數型, , "lstrcpyn", 公開, 常規API  .參數 欲取其指針, 字節集, 傳址  .參數 欲取其指針, 字節集, 傳址  .參數 保留, 整數型, , 0.DLL命令 RtlMoveMemory3, 整數型, , "RtlMoveMemory", 公開, 常規API,從地址讀一個整數  .參數 dest, 整數型, 傳址  .參數 Source, 整數型  .參數 len, , , 4.DLL命令 RtlMoveMemory1, 整數型, , "RtlMoveMemory", , 常規API  .參數 dest, SYSTEM_HANDLE_TABLE_ENTRY_INFO  .參數 Source, 整數型  .參數 len.DLL命令 ZwDuplicateObject, 整數型, "ntdll.dll", , 公開  .參數 SourceProcessHandle, 整數型  .參數 SourceHandle, 整數型  .參數 TargetProcessHandle, 整數型  .參數 TargetHandle, 整數型, 傳址  .參數 DesiredAccess, 整數型  .參數 HandleAttributes, 整數型  .參數 Options, 整數型.DLL命令 ZwQueryInformationProcess, 整數型, "ntdll.dll", "ZwQueryInformationProcess"  .參數 SystemInformationClass, 整數型, , 未知類型:SYSTEM_INFORMATION_CLASS。  .參數 dd, 整數型  .參數 SystemInformation, PROCESS_BASIC_INFORMATION, , any  .參數 SystemInformationLength, 整數型  .參數 ReturnLength, 整數型, 傳址.DLL命令 ZwClose, 整數型, "ntdll.dll", "ZwClose", 公開, 關閉進程句柄  .參數 handle.DLL命令 取函數地址_, 整數型, "kernel32", "GetProcAddress", , 返回函數地址  .參數 模塊句柄, 整數型  .參數 函數名, 文本型.DLL命令 取模塊句柄_, 整數型, "kernel32", "GetModuleHandleA", , 獲取一個應用程序或動態鏈接庫的模塊句柄 如執行成功成功,則返回模塊句柄。零表示失敗。會設置GetLastError  .參數 模塊名, 文本型, , 指定模塊名,這通常是與模塊的文件名相同的一個名字。例如,NOTEPAD.EXE程序的模塊文件名就叫作NOTEPAD;.DLL命令 _動態調用子程序, 整數型, , "CallWindowProcA"  .參數 動態調用代碼, 字節集, , 字節集代碼  .參數 子程序, 整數型, , 子程序指針 到整數(子程序指針)  .參數 參數, 整數型, 數組, 為整數數組,參數1為成員1…類推;文本型和字節集型(自定義結構)為指針  .參數 參數數目, 整數型, , 一定要和參數數組相符,不然會出錯  .參數 是否C調用, 邏輯型, , 真為cdecl調用方式,假為stdcall調用方式(即標準WINAPI方式).DLL命令 ZwCreateJobObject, 整數型, "ntdll.dll", , 公開  .參數 JobHandle, 整數型, 傳址  .參數 DesiredAccess, 整數型  .參數 ObjectAttributes, OBJECT_ATTRIBUTES.DLL命令 關閉內核對象_, 整數型, "kernel32.dll", "CloseHandle", 公開, $(b)非零表示成功,零表示失敗  .參數 對象句柄, 整數型, , hObject,欲關閉的一個對象的句柄.DLL命令 TerminateProcess_, 整數型, "kernel32", "TerminateProcess", , 結束一個進程 非零表示成功,零表示失敗。會設置GetLastError  .參數 hProcess, 整數型, , 指定要中斷的一個進程的句柄  .參數 uExitCode, 整數型, , 進程的一個退出代碼;.DLL命令 ZwAssignProcessToJobObject, 整數型, "ntdll.dll", , 公開  .參數 JobHandle, 整數型  .參數 ProcessHandle, 整數型.DLL命令 ZwTerminateJobObject, 整數型, "ntdll.dll", , 公開  .參數 JobHandle, 整數型  .參數 ExitStatus, 整數型.DLL命令 ZwTerminateProcess, 整數型, "ntdll.dll", , 公開  .參數 ProcessHandle, 整數型  .參數 ExitStatus, 整數型.DLL命令 ZwProtectVirtualMemory, 整數型, "NTDLL.DLL", "ZwProtectVirtualMemory"  .參數 ProcessHandle, 整數型  .參數 BaseAddress, 整數型  .參數 RegionSize, 整數型  .參數 NewProtect, 整數型  .參數 OldProtect, 整數型.DLL命令 ZwWriteVirtualMemory, 整數型, "NTDLL.DLL", "ZwWriteVirtualMemory"  .參數 ProcessHandle, 整數型  .參數 BaseAddress, 整數型  .參數 pBuffer, 字節集  .參數 NumberOfBytesToWrite, 整數型  .參數 NumberOfBytesWritten, 整數型, 傳址.DLL命令 RtlAdjustPrivilegeA, 整數型, "ntdll.dll", "RtlAdjustPrivilege"  .參數 Privilege, 整數型  .參數 Enable, 邏輯型  .參數 Client, 邏輯型  .參數 WasEnabled, 整數型, 傳址.DLL命令 API_CreateRemoteThread, 整數型, "kernel32", "CreateRemoteThread", , 在另一進程中建立線索  .參數 hProcess, 整數型  .參數 lpThreadAttributes, SECURITY_ATTRIBUTES  .參數 dwStackSize, 整數型  .參數 lpStartAddress, 整數型  .參數 lpParameter, 整數型  .參數 dwCreationFlags, 整數型  .參數 lpThreadId, 整數型.DLL命令 CreateToolhelp32Snapshot, 整數型, "Kernel32.dll", "CreateToolhelp32Snapshot"  .參數 falg, 整數型  .參數 id, 整數型.DLL命令 Thread32First, 整數型, "kernel32", "Thread32First"  .參數 hSnapshot, 整數型  .參數 lppe, THREADENTRY32.DLL命令 OpenThread, 整數型, "kernel32", "OpenThread"  .參數 h, 整數型  .參數 a, 邏輯型  .參數 b, 整數型.DLL命令 TerminateThread, 整數型, "NTDLL.DLL", "ZwTerminateThread"  .參數 hThread, 整數型  .參數 dwExitCode, 整數型.DLL命令 Thread32Next, 整數型, "kernel32", "Thread32Next"  .參數 hSnapshot, 整數型  .參數 lppe, THREADENTRY32.DLL命令 NtUnmapViewOfSection, 整數型, "ntdll.dll", "NtUnmapViewOfSection"  .參數 hProcess  .參數 addr.DLL命令 LoadLibrary, 整數型, "kernel32", "LoadLibraryA", 公開  .參數 lpLibFileName, 文本型.DLL命令 DebugActiveProcess, 邏輯型, "kernel32", "DebugActiveProcess"  .參數 dwProcessId, 整數型

自定義數據類型表

.版本 2.數據類型 CLIENT_ID, 公開, CLIENT_ID結構包含進程和線程的標識符。  .成員 UniqueProcess, 整數型, , , 進程標識符  .成員 UniqueThread, 整數型, , , 線程標識符.數據類型 OBJECT_ATTRIBUTES, 公開, OBJECT_ATTRIBUTES結構指定屬性,可以應用于對象或對象處理的例程創建對象和/或返回對象的處理。  .成員 Length, 整數型  .成員 RootDirectory, 整數型  .成員 ObjectName, 整數型  .成員 Attributes, 整數型  .成員 SecurityDescriptor, 整數型  .成員 SecurityQualityOfService, 整數型.數據類型 SECURITY_ATTRIBUTES, , 安全性結構;  .成員 nLength, 整數型  .成員 lpSecurityDescriptor, 整數型  .成員 bInheritHandle, 整數型.數據類型 PROCESS_BASIC_INFORMATION, 公開  .成員 ExitStatus, 整數型  .成員 PebBaseAddress, 整數型  .成員 AffinityMask, 整數型  .成員 BasePriority, 整數型  .成員 UniqueProcessId, 整數型  .成員 InheritedFromUniqueProcessId, 整數型.數據類型 MEMORY_BASIC_INFORMATION, 公開  .成員 BaseAddress, 整數型  .成員 AllocationBase, 整數型  .成員 AllocattionProtect, 整數型  .成員 RegionSize, 整數型  .成員 State, 整數型  .成員 Protect, 整數型  .成員 Type, 整數型.數據類型 SYSTEM_HANDLE_TABLE_ENTRY_INFO, 公開  .成員 UniqueProcessId, 短整數型  .成員 CreatorBackTraceIndex, 短整數型  .成員 ObjectTypeIndex, 字節型  .成員 HandleAttributes, 字節型  .成員 HandleValue, 短整數型  .成員 pObject, 整數型  .成員 GrantedAccess, 整數型.數據類型 THREADENTRY32  .成員 dwsize, 整數型  .成員 cntusage, 整數型  .成員 th32threadID, 整數型  .成員 th32OwnerProcessID, 整數型  .成員 tpBasePri, 整數型  .成員 tpDeltaPri, 整數型  .成員 dwFlags, 整數型

常量數據表

.版本 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.程序集 主程序集.子程序 _啟動子程序, 整數型進程_提高權限 ()信息框 (進程暫停 (3796, 假), 0, , )返回 (0).子程序 打開進程_強力, 整數型, 公開, 主要為NATIVE API.參數 dwDesiredAccess, 整數型.參數 bInhert, 邏輯型.參數 ProcessId, 整數型.局部變量 st, 整數型.局部變量 cid, CLIENT_ID, , , CLIENT_ID結構包含進程和線程的標識符。.局部變量 oa, OBJECT_ATTRIBUTES.局部變量 NumOfHandle, 整數型.局部變量 pbi, PROCESS_BASIC_INFORMATION.局部變量 i, 整數型.局部變量 hProcessToDup, 整數型.局部變量 hProcessCur, 整數型.局部變量 hProcessToRet, 整數型.局部變量 h_info, SYSTEM_HANDLE_TABLE_ENTRY_INFO.局部變量 retlen, 整數型.局部變量 a, 字節集.局部變量 b, 整數型.局部變量 c, 字節集.局部變量 ret, 整數型.如果真 (ProcessId = 0)  返回 (0).如果真結束oa.Length = 24.如果真 (bInhert)  oa.Attributes = 位或 (oa.Attributes, #OBJ_INHERIT).如果真結束cid.UniqueProcess = ProcessId + 1st = ZwOpenProcess (hProcessToRet, dwDesiredAccess, oa, cid).如果真 (st ≥ 0)  ret = hProcessToRet  返回 (ret).如果真結束retlen = 1.循環判斷首 ()  a = 取空白字節集 (retlen)  ret = ZwQuerySystemInformation (16, a, retlen, 0)  .如果 (ret = #STATUS_INFO_LENGTH_MISMATCH)    retlen = retlen × 2    a = 取空白字節集 (retlen)  .否則    跳出循環 ()  .如果結束.循環判斷尾 (ret = #STATUS_INFO_LENGTH_MISMATCH)b = 取指針_字節集 (a, a, 0)RtlMoveMemory3 (NumOfHandle, b, 4)b = b + 4.計次循環首 (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            .如果真結束          .如果真結束        .如果真結束      .如果真結束      st = ZwClose (hProcessCur)    .如果真結束    st = ZwClose (hProcessToDup)  .如果真結束  b = b + 16.計次循環尾 ()返回 (ret).子程序 進程暫停, 邏輯型, 公開, 進程暫停(成功返回真,失敗假).參數 PID, 整數型.參數 狀態, 邏輯型, 可空.局部變量 進程句柄, 整數型.局部變量 a, 整數型進程句柄 = 打開進程_ (2035711, 0, PID).如果真 (進程句柄 = 0)  進程句柄 = 打開進程_強力 (2035711, 假, PID).如果真結束.如果真 (進程句柄 = 0)  返回 (假).如果真結束.如果 (狀態)  a = API_ZwSuspendProcess (進程句柄).否則  a = API_ZwResumeProcess (進程句柄).如果結束關閉內核對象_ (進程句柄)返回 (a = 0).子程序 API_ZwSuspendProcess, 整數型, , NTDLL.DLL,API_ZwSuspendProcess.參數 進程句柄, 整數型.局部變量 地址, 整數型.局部變量 參數, 整數型, , "1"地址 = 取api函數地址 (“NTDLL.DLL”, “ZwSuspendProcess”) ' 取出NTDLL中函數ZwSuspendProcess的地址參數 [1] = 進程句柄 ' ZwSuspendProcess的參數,ZwSuspendProcess是系統自帶的掛起進程命令,動態調用防止鉤子返回 (_動態調用子程序 (#動態調用代碼, 地址, 參數, 1, 假)) ' 動態調用.子程序 取api函數地址, 整數型, 公開.參數 dll文件名, 文本型.參數 dll命令名, 文本型返回 (取函數地址_ (取模塊句柄_ (dll文件名), dll命令名)).子程序 API_ZwResumeProcess, 整數型, , NTDLL.DLL,API_ZwResumeProcess.參數 進程句柄, 整數型.局部變量 地址, 整數型.局部變量 參數, 整數型, , "1"地址 = 取api函數地址 (“NTDLL.DLL”, “ZwResumeProcess”) ' 取出NTDLL中函數ZwResumeProcess的地址參數 [1] = 進程句柄 ' ZwResumeProcess的參數,ZwResumeProcess是系統自帶的恢復進程命令,動態調用防止鉤子返回 (_動態調用子程序 (#動態調用代碼, 地址, 參數, 1, 假)) ' 動態調用.子程序 進程結束, 邏輯型, 公開, 終止一個進程(成功返回真,失敗返回假).參數 進程ID, 整數型, , 欲結束的進程ID.局部變量 進程句柄, 整數型.局部變量 a, 整數型進程句柄 = 打開進程_ (進程ID)a = TerminateProcess_ (進程句柄, 0)關閉內核對象_ (進程句柄)返回 (a > 0).子程序 進程結束_強力, 邏輯型, 公開, 主要為NATIVE API.參數 hProcess, 整數型.參數 ExitStatus, 整數型, , 0.局部變量 st, 整數型.局部變量 hJob, 整數型.局部變量 oa, OBJECT_ATTRIBUTES.局部變量 ret, 邏輯型ret = 假oa.Length = 24st = ZwCreateJobObject (hJob, #JOB_OBJECT_ALL_ACCESS, oa).如果真 (st ≥ 0)  st = ZwAssignProcessToJobObject (hJob, hProcess)  .如果真 (st ≥ 0)    st = ZwTerminateJobObject (hJob, ExitStatus)    .如果真 (st ≥ 0)      ret = 真    .如果真結束  .如果真結束  ZwClose (hJob).如果真結束.如果真 (ret = 假)  st = ZwTerminateProcess (hProcess, ExitStatus)  .如果真 (st ≥ 0)    ret = 真  .如果真結束.如果真結束返回 (ret).子程序 進程_NT內存清零, 邏輯型, 公開, 注意,該命令十分強力,可以清除進程大部分殘余命令和內存(注:速度太慢,CPU占量很高,請慎用!).參數 PID, 整數型.局部變量 hprocess, 整數型.局部變量 i, 整數型.局部變量 內存填充物, 整數型hprocess = 打開進程_強力 (#PROCESS_ALL_ACCESS, 假, PID)內存填充物 = 取空白字節集 (255).變量循環首 (0, 40960000, 4096, i)  ZwProtectVirtualMemory (hprocess, i, 4096, #PAGE_EXECUTE_READWRITE, 0)  ZwWriteVirtualMemory (hprocess, i, 內存填充物, 4096, 0).變量循環尾 ()ZwClose (hprocess).子程序 進程_取自進程ID, 整數型, 公開, 取自身進程PID,成功返回進程ID,失敗返回-1置入代碼 ({ 100, 139, 5, 32, 0, 0, 0, 201, 195 })返回 (-1).子程序 進程_提高權限, 邏輯型, 公開, NT強力提高權限,限自身RtlAdjustPrivilegeA (20, 真, 假, 0)返回 (真).子程序 Kill_Process, 邏輯型, 公開, 包含8種殺進程方法.參數 PID, 整數型.局部變量 hJob, 整數型.局部變量 oa, OBJECT_ATTRIBUTES.局部變量 H, 整數型.局部變量 h_d, 整數型.局部變量 sa, SECURITY_ATTRIBUTES.局部變量 i, 整數型H = 打開進程_ (PID).如果真 (H = 0)  H = 打開進程_強力 (#PROCESS_ALL_ACCESS, 假, PID).如果真結束.如果 (H ≠ 0)  .如果真 (ZwTerminateProcess (H, 1) ≥ 1)    返回 (真)  .如果真結束  .如果真 (進程結束 (PID))    返回 (真)  .如果真結束  .如果真 (進程結束_強力 (H, 0))    返回 (真)  .如果真結束  oa.Length = 24  .如果真 (ZwCreateJobObject (hJob, 2031647, oa) ≥ 0)    .如果真 (ZwAssignProcessToJobObject (hJob, H) ≥ 0 且 ZwTerminateJobObject (hJob, 0) ≥ 0)      ZwClose (H)      ZwClose (hJob)      返回 (真)    .如果真結束    ZwClose (hJob)  .如果真結束  h_d = 取api函數地址 (“kernel32.dll”, “ExitProcess”)  API_CreateRemoteThread (H, sa, 0, h_d, 0, 0, 0)  關閉內核對象_ (H)  .如果真 (KillAllTheard (PID))    返回 (真)  .如果真結束.否則  H = 打開進程_ (8, 0, PID)  .如果真 (H = 0)    H = 打開進程_強力 (8, 假, PID)  .如果真結束  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)    返回 (真)  .如果真結束  返回 (DebugActiveProcess (PID)).如果結束返回 (假).子程序 KillAllTheard, 邏輯型.參數 pid.局部變量 hSnapShot, 整數型.局部變量 End, 整數型.局部變量 buffer, THREADENTRY32.局部變量 tid, 整數型.局部變量 handletid = -1hSnapShot = CreateToolhelp32Snapshot (4, 0)buffer.dwsize = 28End = Thread32First (hSnapShot, buffer).判斷循環首 (End ≠ 0)  .如果真 (buffer.th32OwnerProcessID = pid)    tid = buffer.th32threadID    handle = OpenThread (2032639, 假, tid)    .如果真 (TerminateThread (handle, 0) = 0)      關閉內核對象_ (handle)      關閉內核對象_ (hSnapShot)      返回 (假)    .如果真結束    關閉內核對象_ (handle)    跳出循環 ()  .如果真結束  End = Thread32Next (hSnapShot, buffer).判斷循環尾 ()關閉內核對象_ (hSnapShot)返回 (真)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到易語言教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘山县| 金塔县| 石景山区| 三亚市| 和硕县| 桃园市| 遂平县| 保康县| 静宁县| 安庆市| 金门县| 高密市| 汪清县| 包头市| 尚义县| 平凉市| 齐齐哈尔市| 双鸭山市| 漳平市| 开原市| 马山县| 台湾省| 克什克腾旗| 韩城市| 宣城市| 万年县| 重庆市| 陵水| 青铜峡市| 棋牌| 蒙自县| 普安县| 璧山县| 建昌县| 民勤县| 东明县| 榕江县| 沈丘县| 邻水| 绿春县| 梁平县|