在执行快照的快照之后,如何获取所有进程的完整命令行?

墓碑

因此,我的目标是获取所有当前正在运行的进程的完整命令行。为此,我要做的是使用CreateToolhelp32SnapshotAPI拍摄流程快照,然后执行流程遍历以将PROCESSENTRY32类型流程存储在称为数组的数组中process_list

BOOL GetProcessList( FILE *f, PROCESSENTRY32* process_list, int process_count)
{
  HANDLE hProcessSnap;
  HANDLE hProcess;
  PROCESSENTRY32 pe32;
  DWORD dwPriorityClass;


  hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
  if( hProcessSnap == INVALID_HANDLE_VALUE )
  {
    return( FALSE );
  }

  // Set the size of the structure before using it.
  pe32.dwSize = sizeof( PROCESSENTRY32 );

  // Retrieve information about the first process,
  // and exit if unsuccessful
  if( !Process32First( hProcessSnap, &pe32 ) )

  {
    CloseHandle( hProcessSnap );          // clean the snapshot object
    return( FALSE );
  }
  // Now walk the snapshot of processes, and
  // display information about each process in turn
  int i = 0;
  do
  {
    // Retrieve the priority class.
    dwPriorityClass = 0;
    hProcess = OpenProcess( PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, pe32.th32ProcessID );

    if( hProcess == NULL ) { }

    else
    {
      dwPriorityClass = GetPriorityClass( hProcess );
      if( !dwPriorityClass )
      CloseHandle( hProcess );
    }

    process_list[i] = pe32;
    i++;

  } while( Process32Next( hProcessSnap, &pe32 ) && i <= process_count);

  CloseHandle( hProcessSnap );
  return( TRUE );
}

现在,是否可以遍历一系列进程并收集每个进程的完整命令行?我怎样才能做到这一点?

如果重要的话,我会将代码编译为64位进程,并且需要主机上运行的所有进程的完整命令行。

雷米·勒博(Remy Lebeau)

对于每个进程ID:

  1. 用于OpenProcess()获取HANDLE流程。

  2. 然后使用QueryFullProcessImageName()GetProcessImageFileName()GetModuleFileNameEx获取进程的路径和文件名。

  3. 然后使用NtQueryInformationProcess()来检索流程PEB结构的地址,该地址包含一个ProcessParameters成员,该成员包含该流程的命令行参数(您也可以从那里获取图像路径PEB)。ReadProcessMemory()阅读的内容PEB

请查看以下文章以了解更多详细信息:

使用NtQueryInformationProcess获取流程信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在执行快照的快照之后,如何获取所有进程的完整命令行?

来自分类Dev

如何在Windows中显示所有进程的完整命令行

来自分类Dev

亚马逊EC2命令行界面未返回我的所有快照

来自分类Dev

亚马逊EC2命令行界面未返回我的所有快照

来自分类Dev

从命令行调用快照(FastLane工具>快照)

来自分类Dev

铬快照转换:命令行选项

来自分类Dev

如何从命令行杀死某个进程的所有子进程?

来自分类Dev

如何使用命令行管理快照应用程序权限?

来自分类Dev

Linux命令行共享EC2快照

来自分类Dev

Windows命令行中的iPhone屏幕快照

来自分类Dev

如何知道正在执行哪个命令行进程?

来自分类Dev

如何在单个命令行中杀死所有PHP-FPM进程

来自分类Dev

如何在Windows的命令行中列出所有进程?

来自分类Dev

如何从进程中获取整个命令行?

来自分类Dev

从minidump获取进程命令行参数

来自分类Dev

从命令行获取进程年龄

来自分类Dev

获取python中的所有命令行参数

来自分类Dev

如何从命令行获取存储库部分中所有软件包的列表?

来自分类Dev

如何在命令行中获取所有打开的窗口的列表?

来自分类Dev

如何在命令行中获取所有打开的窗口的列表?

来自分类Dev

如何从命令行获取存储库部分中所有软件包的列表?

来自分类Dev

如何使用TFS命令行获取更改集中存在的所有文件的名称

来自分类Dev

清除所有快照程序快照

来自分类Dev

为什么所有快照进程都挂了?

来自分类Dev

在Powershell中显示进程的完整命令行?

来自分类Dev

在Powershell中显示进程的完整命令行?

来自分类Dev

如何获得在命令行执行的命令?

来自分类Dev

如何获取html快照?

来自分类Dev

如何从命令行删除所有MySQL表?

Related 相关文章

  1. 1

    在执行快照的快照之后,如何获取所有进程的完整命令行?

  2. 2

    如何在Windows中显示所有进程的完整命令行

  3. 3

    亚马逊EC2命令行界面未返回我的所有快照

  4. 4

    亚马逊EC2命令行界面未返回我的所有快照

  5. 5

    从命令行调用快照(FastLane工具>快照)

  6. 6

    铬快照转换:命令行选项

  7. 7

    如何从命令行杀死某个进程的所有子进程?

  8. 8

    如何使用命令行管理快照应用程序权限?

  9. 9

    Linux命令行共享EC2快照

  10. 10

    Windows命令行中的iPhone屏幕快照

  11. 11

    如何知道正在执行哪个命令行进程?

  12. 12

    如何在单个命令行中杀死所有PHP-FPM进程

  13. 13

    如何在Windows的命令行中列出所有进程?

  14. 14

    如何从进程中获取整个命令行?

  15. 15

    从minidump获取进程命令行参数

  16. 16

    从命令行获取进程年龄

  17. 17

    获取python中的所有命令行参数

  18. 18

    如何从命令行获取存储库部分中所有软件包的列表?

  19. 19

    如何在命令行中获取所有打开的窗口的列表?

  20. 20

    如何在命令行中获取所有打开的窗口的列表?

  21. 21

    如何从命令行获取存储库部分中所有软件包的列表?

  22. 22

    如何使用TFS命令行获取更改集中存在的所有文件的名称

  23. 23

    清除所有快照程序快照

  24. 24

    为什么所有快照进程都挂了?

  25. 25

    在Powershell中显示进程的完整命令行?

  26. 26

    在Powershell中显示进程的完整命令行?

  27. 27

    如何获得在命令行执行的命令?

  28. 28

    如何获取html快照?

  29. 29

    如何从命令行删除所有MySQL表?

热门标签

归档