Delphi如何获取一个隐藏进程的程序的进程ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi如何获取一个隐藏进程的程序的进程ID相关的知识,希望对你有一定的参考价值。

如题,用getwindowthreadprocessid函数可以获取一个进程的ID,但这个进程被隐藏了之后就获取不到了,把自己提升到debug级也获取不到,请问还能通过什么办法获取该隐藏进程的ID.delphi编程... 如题,用getwindowthreadprocessid函数可以获取一个进程的ID,但这个进程被隐藏了之后就获取不到了,把自己提升到debug级也获取不到,请问还能通过什么办法获取该隐藏进程的ID.delphi编程 怎么恢复被隐藏的进程 展开

参考技术A 恢复隐藏的进程然后用常规的方法来取得
你得先知道它是怎么隐藏的,可能是被HOOK了系统的API,你恢复一下就行了
还有一种方法是穷举所有的PID值直接打开进程的空间
当然得先把系统可见的PID排除,然后穷举
for
i:=0
to
10000
这个值可以再大些,没关系
do
begin
if
i=系统可见的
then
//系统可见的,肯定不是要找的进程
else
begin
if
OpenProcess(XXX,XXX,i)>0
then
begin
//可能就是要找的进程的PID
end;
end;
end;
我不是说了麻,系统中能列出的可以直接跳过
if
i=系统可见的
then
//系统可见的,肯定不是要找的进程
else
这里跳过系统中可见的
那得看它是如何隐藏的,是HOOK
API的,还是删除了进程的双向链表的对象的
不过这些都得在内核中操作,穷举是最方便不过的事情了

java在windows下如何实现获取进程ID

java在windows下如何实现获取进程ID??

参考技术A 给你个例子,通过调用windows的命令得到当前系统内的进程列表,然后你根据需要自己过滤出想要的进程ID(字符串分析).

try
Process p = Runtime.getRuntime().exec("cmd /c tasklist");
InputStream is = p.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buf = new byte[4096];
while(is.read(buf)>0)
//我在这里只是简单输出结果,你可以对结果进行你要的处理。
System.out.println(new String(buf));

bis.close();
is.close();
catch (IOException e)
e.printStackTrace();
答案补充 java是运行在其JVM中的,JVM是操作系统的一个进程,和操作系统中的其他进程是一样的.
对于你的补充提问,建议你使用java的jni来解决.java通过jni可以调用C来完成一些底层的事情.
参考技术B Process p = Runtime.getRuntime().exec("cmd /c tasklist");
InputStream is = p.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buf = new byte[4096];
while(is.read(buf)>0)
System.out.println(new String(buf));

bis.close();
is.close();

以上是关于Delphi如何获取一个隐藏进程的程序的进程ID的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 我想获得进程句柄,怎么每次都变化

Delphi 我想获得进程句柄,怎么每次都变化

Delphi的几个难题?

如何获取窗体中组件的句柄

delphi 知道路径和进程如何获取窗口句柄?

Java如何得到当前进程ID号