下面我简单看说下以上关键的几个APIHOOK: 1.KiAttachProcess 函数 2.NtReadVirtualMemory 内存函数 3.NtWriteVirtualMemory 内存函数 7 4.NtOpenThread 线程函数 5.NtOpenProcess 进程函数 那么前3个函数是可以直接SSDT恢复的,第4个函数是有监视, 一般来说,读取当前内存中的值是不会影响到当前进程的。如果是虚拟机(CPU)则需要读取到当前内存。如果是操作系统进程(OS)则需要读取当前内存。如果是虚拟机进程(内核)则需要读写当前内存。
在函数中,KiAttachProcess(线程函数):指定一个线程对该进程进行控制或调用时执行某个特定的操作,比如创建新的进程、关闭进程、重启进程。
KiATTACKProcess(线程函数):指定一个线程对当前进程或者目标进程进行监视,以便于能够确定哪些程序在后台运行或者是否已经结束。
最后,为了能更方便地查看和分析进程的性能和状态,我们还需要使用到“read_memory”函数。当线程对该函数感兴趣的时候,可以使用这个语句来检查线程的状态。
扩展资料:
1.KiAttachThread:用于检查线程的状态,用于判断哪些进程是在后台运行。如果没有触发它,它会立即返回错误信息。这个方法适用于任何进程,只是检测到进程发生了错误。
2.KiActiveThread:用于清除当前线程的状态,用于检查是否被分配了一个新进程。如果分配了新进程,那么它将从内存中删除一个已知的实例进程并将其重新命名为一个空进程,而不是指向该空进程中的一个子进程。如果一个未分配的新实例进程被注册,那么这将是一个空进程。如果没有被分配给另一个实例进程,它将自动退出。
3.Ki沐浴:用于清除当前内存中的缓存数据。如果没有被分配给任何新实例进程,则它会继续清除之前释放过的缓存数据。如果一个未分配的虚拟机进程被注册,那么这将是一个空进程。如果一个已分配的虚拟机进程被注册,那么这将是一个空进程。
4.KiAppend淘金币:用于清除当前内存中的数据。如果有一个未分配的虚拟机进程被注册,那么它将从内存中删除一个已知实例进程并将其重新命名为空进程。如果没有被分配给另一个虚拟机进程,它将出现在主菜单中,并重新启动该应用程序。
5.HiResMain:用于回收CPU资源。如果一个没有分配给任何虚拟机的任务正在发生,那么它们将被回收。在某些情况下,这个指令可能会导致负载过大,从而无法获取和访问这些资源。在这种情况下,HiresMain将不再被回收。
6.GetMemorycache:获取内存的快照。如果没有指定,它将被回收。如果没有指定,它将被回收。