链接器错误未定义引用调用PsGetProcess

时间:2013-06-04 17:47:18

标签: c++ c drivers rootkit

这是一个隐藏给定Pid的特定进程的代码,但我不能让PsGetCurrentProcess()工作,它不断抛出未定义的引用错误,我不知道该做什么是代码

#include <iostream>
#include <conio.h>
#include "ddk\ntddk.h"
#include <stdio.h>
unsigned long SearchProcId(unsigned int Pid){

unsigned long eproc,aux,proceso,ret;
PLIST_ENTRY lista;
unsigned int idProceso=0;

eproc=(unsigned long)PsGetCurrentProcess();//estamos en "System"
lista=(LIST_ENTRY*)(eproc+0x88);//tenemos los punteros al siguiente y al anterior
aux=(unsigned long)lista->Blink;
proceso=(unsigned long)lista;
idProceso=*((int *)(proceso+0x84));

while(proceso!=0 && aux!=proceso && Pid!=idProceso)//recorremos la lista
{
    proceso-=0x88;
    ret=proceso;

    idProceso=*((int *)(proceso+0x84));
    //avanzamos
    lista=lista->Flink;
    proceso=(unsigned long)lista;
}

if(Pid!=idProceso)
ret=0;

return ret;
}








int main(int argc, char** argv) {
PLIST_ENTRY plist_active_procs;
unsigned long eproc=0;
printf ("id del proceso del lol?");
unsigned int i=0;
scanf ("%d",&i);
eproc = SearchProcId(i);
plist_active_procs = (LIST_ENTRY*)(eproc+0x88);
plist_active_procs -> Blink -> Flink=plist_active_procs->Flink;
plist_active_procs -> Flink -> Blink=plist_active_procs->Blink;

return 0;
} 

它一直让我犯这个错误我不知道该怎么做C:\ Users \ Gabriel \ Documents \ main.o main.cpp :(。text + 0xe):未定义引用` imp _IoGetCurrentProcess @ 0&#39;

1 个答案:

答案 0 :(得分:0)

您在同一源文件中包含<iostream>ddk/ntddk.h的事实表明您可能没有编写驱动程序。

PsGetCurrentProcess仅适用于司机。在普通应用程序中,您应该使用GetCurrentProcess

当然,像代码的其他部分一样,围绕过程控制块进行调整,在用户模式下根本不起作用。如果你想这样做,你需要构建一个驱动程序(因此,删除所有stdio,iostream和类似的用法 - 你需要编写一个单独的应用程序,将数据输入和输出驱动程序)

相关问题