zoukankan      html  css  js  c++  java
  • 进程线程和模块

    DuplicateHandle  复制一个句柄可以用来当注入器使用   (先扫描进程发现要OpenProcess打开的句柄就复制就不用打开了)复制后给予给予PROCESS_ALL_ACCESS权限
    
    DuplicateHandle 转换复制的句柄成实句柄
    CloseHandle 关闭打开的句柄
    
    
    进程管理
    GetCommandLine 获得指向当前命令行缓冲区的一个指针。
    CommandLineToArgvW 分离命令行参数。
    GetStartupInfo 获取进程创建时的启动信息结构体指针。
    GetCurrentProcess 获取本进程的句柄。
    GetCurrentProcessId 获取本进程的PID。
    GetPriorityClass 获取指定进程进程的优先级别。
    GetProcessTimes 获取指定进程的经过时间有关的信息,包括进程创建时间、退出时间、用户模式时间和内核模式时间。
    GetProcessIdOfThread 获取指定线程所属进程的PID。
    GetProcessImageFileName 获取指定进程模块的可执行文件的全路径。
    GetProcessMemoryInfo 获取指定进程的内存使用情况。
    GetProcessHandleCount 获取进程的打开的句柄数。
    GetProcessAffinityMask 获取进程的亲缘关系。
    GetProcessVersion 获取进程的版本信息。
    GetExitCodeProcess 获取进程退出码。
    GetProcessIOCounters 获取进程的IO操作信息。
    SetErrorMode 设置进程运行错误模式。(如何使用???)
    GetProcessWorkingSetSize了解一个应用程序在运行过程中实际向它交付了多大容量的内存。
    ExitProcess 进行立即退出运行。
    TerminateProcess 终止其他进程的运行。
    
    CreateProcess 创建进程。
    CreateProcessAsUser 在不同凭据下启用启动过程 。(使用???)
    CreateProcessWithLogonW 将子进程以User权限运行。
    CreateProcessWithTokenW 将子进程以特定的Token环境运行。
    
    GetEnvironmentStrings 获取所有环境变量字符串。
    FreeEnvironmentStrings 释放GetEnvironmentStrings返回的PVOID指针。
    GetEnvironmentVariable 获取指定的环境变量。
    SetEnvironmentVariable 设置指定的环境变量。
    
    线程、纤程
    CloseHandle关闭内核对象 比如创建的线程
    WaitForSingleObject等待新线程运行(INFINITE表示无限等待,到等待的对象变成受信状态)
    CreateThread 创建线程。
    ExitThread 退出线程。
    TerminateThread 终止指定线程,必须要有THREAD_TERMINATE权限。
    GetThreadPriority 获取线程优先级。
    SetThreadPriority 设置线程优先级。
    GetThreadPriorityBoost 获取线程的动态优先级。
    SetThreadPriorityBoost 设置线程的动态优先级。
    Sleep 将线程挂起指定的时间。
    SleepEx 挂起线程,但是在以下三种情况下,线程会恢复执行。IO完成回调函数被调用,异步过程i用APC被安排进入到线程中,超过最小时间。
    SuspendThread 挂起线程。
    ResumeThread 调度线程。
    SwithcToThread 使线程主动让出程序的执行,主操作系统选择正在等待的线程执行。
    
    根据句柄得到线程ID: GetThreadId
    得到当前线程ID: GetCurrentThreadId(void)
    根据ID得到线程句柄: OpenThread(unsigned long)
    CreateRemoteThread 为指定进程创建线程,线程将会在其他进程的地址空间中执行,访问其他进程的资源。
    WriteProcessMemory 可以将数据写入到目标进程的虚拟地址空间中。
    
    CreateFiber 创建纤程
    CreateFiber 创建纤程
    DeleteFiber 删除纤程
    SwitchToFiber 调度纤程
    ConvertThreadToFiber 将当前线程转换为纤程
    ConvertThreadToFiberEx 将当前线程转换为纤程
    ConvertFiberToThread 将当前纤程转换为线程
    ConvertFiberToThreadEx 将当前纤程转换为线程
    
    进程状态信息
    EnumProcess 获取当前系统中所有进程的PID,此函数只能获取进程PID,若需要获取其他信息,可使用OpenProcess函数。
    EnumProcessModules 枚举进程的模块信息。
    CreateToolhelp32Snapshot获取系统中进程的快照,或指定进程的快照,包括线程、模块、堆等可用参数指定要获取的信息。
    Process32First 从快照中获取第一个进程的信息。使用TH32CS_SNAPPROCESS参数调用CreateToolhelp32Snapshot。
    Process32Next 依次从快照中获取下一个进程的信息。
    Thread32First 从快照中获取进程的第一个线程信息。TH32CS_SNAPTHREAD
    Thread32Next 依次从快照中获取进程的下一个线程信息。
    Module32First 从快照中获取第一个模块信息。TH32CS_SNAPMODULE
    Module32Next 依次从快照中获取下一个模块信息
    Heap32ListFirst 获取指定进程中第一个堆的信息。TH32CS_SNAPHEAPLIST
    Heap32ListNext 依次获取指定进程中下一个堆的信息。
    Heap32First 
    获得指定进程中指定堆内部的第一个块的信息。信息包括块的首地址、块大小、块标志等。
    Heap32Next 依次获得指定进程中指定堆内部的下一个块的信息。信息包括块的首地址、块大小、块标志等。
    /////////////////////////////////////////////////////////////////////////////////////
    等待函数
    WaitForSingleObject 等待单个对象,如果对象置位则返回。
    WaitForSingleObjectEx 等待单个对象,可以设置是否使用APC机制和I/O完成回调函数机制。
    WaitForMultipleObjects 等待多个对象,当所等待的多个对象都设置为标记的或多个对象中的一个对象设置为标记则返回。
    WaitForMultipleObjectsEx 等待多个对象,当所等待的多个对象都设置为标记的或多个对象中的一个对象设置为标记则返回,可以设置是否使用APC机制和I/O完成回调函数机制。
    MsgWaitForMultipleObjects 阻塞时仍然可以相应消息。
    MsgWaitForMultipleObjectsEx 阻塞时仍然可以相应消息。可以设置是否使用APC机制和I/O完成回调函数机制。
    SingleObjectAndWait 向一个句柄发送消息,接着等待另一个句柄。
    RegisterWaitForSingleObject
    UnRegisterWait
    UnRegisterWaitEx
    
    事件
    CreateEvent 创建事件对象。无CreateEventEx!!
    CloseHandle 关闭事件对象
    SetEvent 将事件对象设置为受信。
    ResetEvent 将事件对象设置为未受信。
    OpenEvent 从事件名中得到事件句柄。
    
    互斥对象:具有如下机制:如果互斥对象没有被任何线程拥有,那么它是标记的,如果被一个线程拥有,那么它是未标记的,任何一个线程获得后,互斥对象就未标记的,其他线程不可以再拥有这个互斥对象。
    CreateMutex 创建互斥对象。
    OpenMutex 通过互斥对象名获取对象句柄。
    ReleaseMutex 释放互斥对象。
    
    信号量:信号量维护了一个计数器,计数器的值可以在0到指定的最大值之间,当一个线程完成了对信号量的等待后,信号量计数器减少,当一个线程释放信号量时,信号量计数器值增加。当计数器值到达0后,信号量是未标志的,当计数器值大于0时,信号量时标志的。当计数器值降为0时,任何线程都无法等待信号量变为标志的,因此信号量对限制可访问共享数据的线程数量很有用处。
    CreateSemaphore 创建信号量对象。
    OpenSemaphore 通过信号量名,获得信号量对象句柄。
    ReleaseSemaphore 释放信号量。
    
    可等待计时器:在达到指定的时间间隔后被置为标志的,处于等待状态的等待函数返回,可用于程序中需要等待特定时间间隔的情况。共有三种可等待计时器,分别为“手工重置计时器”“同步计时器”和“周期性计时器”。其中周期性计时器最为常用,周期性计时器会每间隔指定时间后就置位同步对象或调用一次回调函数,直到进程退出或者取消计时器。
    CreateWaitableTimer 创建可等待计时器。
    SetWaitableTimer 用来设置CreateWaitableTimer创建的计时器的间隔等参数。可设置回调函数。
    TimerAPCProc SetWaitableTime时需要的回调函数。
    CancelWaitableTimer 取消计时器。
    CreateTimerQueue 创建计时器队列。
    CreateTimerQueueTimer 创建一个计时器,并加入计时器队列。
    DeleteTimerQueue 删除计时器队列。
    WaitOrTimerCallback 计时器的回调函数。
    
    
    
    动态链接库
    LoadLibrary 加载指定DLL,返回模块句柄。
    GetProcAddress 获取模块的导出函数的地址。
    FreeLibrary 释放已经加载的模块,以模块句柄为参数。
    FreeLibraryAndExitThread 释放已经加载的模块,以模块句柄为参数。
    GetDllDirectory 获取dll和模块所在的路径
    GetModuleFileName 获取DLL和模块的文件名。
    GetModuleFileNameEx 获取DLL和模块的文件名。
    GetModuleBaseName 获得进程的名字。
    GetModuleHandle 获取当前进程中指定模块名的模块句柄。
    GetModuleInfomation 获取指定进程的指定模块的模块信息。
  • 相关阅读:
    MySQL安装图解
    程序员感触
    一个人的生活
    开始懂了
    limit 检索记录行
    Ajax的完整兼容各种浏览器版本代码
    java.lang.UnsupportedClassVersionError: Unsupported major.minor version 49.0的错误 [转]
    通信协议
    SDK
    毕业三个多月的感悟
  • 原文地址:https://www.cnblogs.com/IMyLife/p/4826013.html
Copyright © 2011-2022 走看看