阅读:1236回复:9
怎么在VxD里面知道当前进程的ID?
似乎只可在VxD得到进程的Handle,可是得到的Handle又跟在应用层取到的不一致。:(
还是问怎么去到当前进程的ID。 |
|
最新喜欢:![]() |
沙发#
发布于:2002-11-29 14:26
GJP也来凑热闹.:) HEHE,也好久没看到你了,最近在忙些啥啊。 |
|
|
板凳#
发布于:2002-11-29 11:39
明白了,虽然没有时间去试一下,应该错不了,结账了。
|
|
地板#
发布于:2002-11-28 22:08
GJP也来凑热闹.:)
这是我的取PDB的函数. 同样可以用PDB转PID.GetDllFuncA请自己写.:) //A dirty hack to KERNEL32.DLL that get a un-xored PDB object //Internal routine from 95/98 typedef DWORD (WINAPI *TTDBToTid)(DWORD tdb); typedef DWORD (WINAPI *TPDBToPid)(DWORD pdb); DWORD __cdecl Pid2PDB(DWORD pid) //for 9x only { DWORD dwTmp; DWORD dwTmp1; TPDBToPid PDBToPid; dwTmp = (DWORD)GetDllFuncA(\"kernel32\",\"GetCurrentProcessId\"); dwTmp1 = dwTmp + 8; dwTmp = *(DWORD*)dwTmp1 + dwTmp + 12; PDBToPid = (TPDBToPid)dwTmp; return PDBToPid(pid); } [编辑 - 11/28/02 by lu0] |
|
|
地下室#
发布于:2002-11-28 21:51
再插一句:那个算出来的gdwObsfucator其实是Windows设计小组最初为了防hack用的,实际上没有什么用处。
|
|
|
5楼#
发布于:2002-11-28 21:49
非常easy啊!:)
DWORD UTIL_GetCurrentProcessId() { DWORD dwRing0Handle = (DWORD)VWIN32_GetCurrentProcessHandle(); DWORD dwPID = dwRing0Handle ^ gdwObsfucator; return dwPID; } 事先让app把自己的PID通过DeviceIoControl传进来。 gdwObsfucator = pInfo->dwRing3PID ^ ((DWORD)VWIN32_GetCurrentProcessHandle()); 至于原理嘛,去看Matt的那本很老的95 Secret,好像是第3章。 |
|
|
6楼#
发布于:2002-11-28 09:38
http://www.gjpsoft.com/vxd_process.txt
不过不是ID,是APP的完整路径。 |
|
|
7楼#
发布于:2002-11-28 09:24
没有找到,但是有VWIN32_GetCurrentProcessHandle. http://www.driverdevelop.com/forum/viewthread.php?tid=11745#pid51261 不是什么好办法 |
|
8楼#
发布于:2002-11-27 17:38
没有找到,但是有VWIN32_GetCurrentProcessHandle.
|
|
9楼#
发布于:2002-11-27 17:29
帮你UP一下。
我不熟悉,不过有没有VWIN32_GetCurrentProcessId()这样的函数呢? |
|
|