WEB开发网
开发学院软件开发VC WinNT & Win2K下实现进程的完全隐藏 阅读

WinNT & Win2K下实现进程的完全隐藏

 2006-07-19 11:36:57 来源:WEB开发网   
核心提示: 好了,程序编译执行后会在进程号为992的进程中创建一线程,WinNT & Win2K下实现进程的完全隐藏(4),弹出hello对话框,是不是非常简单呢!这里有几个地方需要注意的:1、远程线程在宿主进程中申请空间时,熟悉汇编的朋友,可用softice调试,空间大小的确定了是我一直无法解决的问

好了,程序编译执行后会在进程号为992的进程中创建一线程,弹出hello对话框。是不是非常简单呢!

这里有几个地方需要注意的:

1、远程线程在宿主进程中申请空间时,空间大小的确定了是我一直无法解决的问题。我曾使用两个贴近一起的线程,以线程间的距离大小,并加上参数大小,作为申请空间时,仍然会出现非法操作,如下:

static void StartThread (LPVOID *lpPara){
  return ;
}
static void EndThread(LPVOID *lpPara){
  return;
}

然后使用DWORD dwLenght = (DWORD)((char *)&StartThread - (char *)&EndThread);//得到StartThread线程代码长度,

dwLenght += sizeof(ThreadPara);

仍会出现非法操作让我很迷惑。在win2k中,线程的默认堆栈的页大小是4KB,这里我在为线程申请内存时,申请的大小暂时使用一个常数,始终为4KB的倍数,选取时尽量取大,在线程可成功运行后,再一点点改小。办法是笨了点,如这里的朋友有更好的方法,请不吝赐教。

2、什么时侯,什么参数是需要从外部传递进来的呢?我这里并没有一个十分有力的答案,我的理解是:PE文件中除了.text节以外的所有节,均需使用外部参数传递到线程中使用,如:.rsrc、.data、rdata等其他的15个节。在我们实际编写的过程中,初学者并不知道我们的代码会编译在什么地方,这个时侯,我们可以在运行的时侯ALT + 8(VC中快捷键)反编译过来,一般有lea eax p、push offset p等取地址语句,这个时侯,我们大都需要以参数传递进来。所以,大家在编写的时侯,一定要注意参数,因为线程的执行是在别的进程中,一个普通权限的应用程序是无法跨越进程来调试其他进程的。包括VC,也无法调试我们的远程线程,熟悉汇编的朋友,可用softice调试,这需要一定的功底。

上一页  1 2 3 4 5  下一页

Tags:WinNT WinK 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接