在dll动态库中枚举线程句柄并传递

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:16:46
我现在写了一个test.exe的壳程序,并写了一个test.dll动态库,test.exe启动运行时加载test.dll。
现在我在test.dll的代码中使用createprocess创建了另一个监控进程monitor.exe,现在问题是我如何在test.dll的代码中把test.dll自身的所有线程句柄全部传送到monitor.exe中去,好让monitor.exe程序能做些监控。

1、如何传送test.dll自身所有线程句柄给monitor.exe(听说可以用枚举,但我还太懂怎么弄)
2、monitor.exe接到test.dll传过来的句柄后,如何一一挂起test.dll所有线程,当要换它们时,又如何一一唤醒?
我的问题概括起来就是上面列举的两点。

楼主要做这么复杂的东西啊。
建议一下,刚学的时候还是尽量多做些书中的列子,吃透了,然后进行些变换。不能才学了点,就立刻自己想一些根本没接触过的程序。

看楼主说要做这样的东西,可楼主连最基本的进程间通信都没学过。而且概念都有问题,DLL哪里来的线程?DLL是依附在test.exe中的,monitor.exe要监控的是test.exe,跟DLL没关系。
楼主问如何传送test.dll自身的线程句柄,显然就是想通过进程间通信把一个进程里的数据发往另一个进程。可是线程句柄又有可继承的句柄和伪句柄之分的,传递的时候也要注意代码上的细节问题,不可能像传递个int, double这样的数据类型这么简单。句柄传过去,如果是伪句柄根本是无法使用的。只有传递可继承句柄,那还行。
考虑楼主要传递的是句柄,所以最好不要采用“传”的动作。而是当创建了monitor.exe后,让它自己去枚举系统中的进程或线程。
不知道楼主是不是想监控DLL里的函数调用?如果是的话,那涉及到API挂接技术,还要复杂。我还是不太明白楼主为什么要监控,监控的究竟是什么?

两个最基本的知识点楼主都没学会,这样操之过急是做不出东西来的。
基础知识打扎实了,然后才能开始写属于自己的程序。连走路都困难,就急着跑,只会头破血流。
我不是在骂楼主,只是非常诚恳的提醒楼主,别操之过急,一定要慢慢学习基础知识。

另外,楼主提出的这个程序要求其实小菜一碟,可即便如此,刚开始学习VC还是要求太高了。