社区
Delphi
帖子详情
急问在DELPHI中怎么实现在进程列表中隐藏运行的程序?
chsilence
2004-10-20 03:22:53
如题,希望能给源码学习,谢谢!chsilence@sina.com
...全文
431
17
打赏
收藏
急问在DELPHI中怎么实现在进程列表中隐藏运行的程序?
如题,希望能给源码学习,谢谢!chsilence@sina.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
g961681
2004-12-09
打赏
举报
回复
我要学习!
kiss2
2004-12-08
打赏
举报
回复
to ly_liuyang(Liu Yang):
你网站上的那个例子只是给我们演示了下,并没有原码啊,都是DCU文件的
kiss2
2004-12-08
打赏
举报
回复
to ly_liuyang(Liu Yang):
你说的 JEDI Win32API 去哪里找啊??
ksaiy
2004-10-27
打赏
举报
回复
去这里下例子吧:
人家已经做得很完整了。
http://www.delphibox.com/article.asp?articleid=1494
beyondsun
2004-10-21
打赏
举报
回复
这个问题确实看见提了N次了,但是----从来没人真正给提问者解决过.俺不会,帮顶
yjm820604
2004-10-21
打赏
举报
回复
极度反对做广告! 我跟他没完!
chsilence
2004-10-20
打赏
举报
回复
唾弃做广告的人!!!!!!!!!!!!!!!!
ly_liuyang
2004-10-20
打赏
举报
回复
这个问题N次了!
请看我在FAQ上的内容了
http://lysoft.7u7.net
pengxuan
2004-10-20
打赏
举报
回复
下面转载一篇关于这方面的文章(用C/C++描述的)
WinNT & Win2K下实现进程的完全隐藏
作者:AntGhazi 主页:antghazi.yeah.net
面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。
关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网上发布出实例《揭开木马的神秘面纱<四>》 ,我也多次拜读他的文章,对他的计算机水平及热心帮助朋友的作风十分敬佩。这里也可算是对shotgun的文章的补充与深入介绍吧,好了,闲话少说。
在WinNT下"真正隐藏进程"这一说法,可以讲是根本不可能实现,只要我们的程序是以进程内核的形式运行,都是不可能逃离CTRL+ALT+DEL的法眼。那么奇怪了,这岂不是与我们的标题《WinNT & Win2K下实现进程的完全隐藏》相矛盾吗?是的,实际上应该是:以非进程方式执行目标代码,而逃避进程查看器的检查,从而达到"进程隐藏"的目的。
我们这里用的,是在宿主进程中,以线程的方式执行我们的代码。实现起来非常简单。首先,我们先建立一个不执行任何语句的线程
DWORD stdcall ThreadProc(LPVOID *lpVoid){
return 0;
}
然后,将线程代码拷备至宿主进程所能够执行的任何地方(即页面属性为PAGGE_EXECUTE_READWRITE),如:共享内存影射区、宿主进程内。这里我们选择宿主进程,拷备的时侯,我们需要先在宿主进程中使用VirtualAllocEx函数申请一段内存,然后再使用WriteProcessMemory将线程体写入宿主进程中。
以上工作完成后,我们便可CreateRemoteThread函数激活其执行。下面给出一个完整的例子
//远程线程执行体
DWORD __stdcall ThreadProc (void *lpPara){
return 0;
}
int main(int argc, char* argv[]){
const DWORD THREADSIZE=1024*4;//暂定线程体大小为4K,实际上没这么大,稍后我将会介绍
DWORD byte_write;
//获得指定进程ID句柄,并设其权限为PROCESS_ALL_ACCESS,992是宿进程的ID号,获取ID号的方法这里我就不多讲了
HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,992);
if(!hWnd)return 0;
void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE);//申请
if(!pRemoteThread)return 0;
if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0))//写入进程
return 0;
//启动线程
HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,NULL,0,&byte_write);
if(!hThread){ //还有内存分配未释放
return 0;
}
return 0;
}
到这里,对于隐藏的方法就算告一段落,相信看过的朋友对这个思路有个非常明确的概念了吧。
在理解隐藏的方法后,我们着重开始写线程的执行部分了。如下:
DWORD __stdcall ThreadProc(void *lpPara){
MessageBox(NULL,"hello","hello",0);
return 0;
}
编译执行后,你会发现出现一个非法操作错误,为什么呢?在我们以段页式内存管理的win2K操作系统中,编译时会把所有的常量编译在PE文件的.data节中,而代码段则在.text中,所以,我们拷备到宿主进程中的代码是在.text中的代码,MessageBox(NULL,(char *)指针,p,0);所指向的地址是本进程的内存虚拟地址。而在宿主进程中是无法访问的。解决的方法很简单,按旧照搬的将"hello"也拷备到目标进程中,然后再引用。同理,MessageBox函数地址编译时,也是保存在.Import中,写过Win2k病毒的朋友都知道,所有常量与函数入口地址都需在代码段定义与得出,我们这里也与他有点类似。言归正传,同样情况我们也把函数的入口地址一起写入目标进程中。
//先定义参数结构
typedef struct _RemotePara{//参数结构
char pMessageBox[12];
DWORD dwMessageBox;
}RemotePara;
//付值
RemotePara myRemotePara;
::ZeroMemory(&myRemotePara,sizeof(RemotePara));
HINSTANCE hUser32 = ::LoadLibrary ("user32.dll");
myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , "MessageBoxA");
strcat(myRemotePara.pMessageBox,"hello\0");
//写进目标进程
RemotePara *pRemotePara =(RemotePara *) ::VirtualAllocEx (hWnd ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);//注意申请空间时的页面保护属性
if(!pRemotePara)return 0;
if(!::WriteProcessMemory (hWnd ,pRemotePara,&myRemotePara,sizeof myRemotePara,0))return 0;
//启动进将参数传递进入
HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write);
if(!hThread){
return 0;
}
好了,就这么简单,下在给出一个弹出一个MessageBox的实例:
// RemoteThread.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
typedef struct _RemotePara{//参数结构
char pMes
chsilence
2004-10-20
打赏
举报
回复
我说的是进程中:(
hmily1688
2004-10-20
打赏
举报
回复
是指任务管理器,我只能在应用程序中看不到,在进程中还是有的。就是设置一下application.title:='';就行了。在进程中的我搞不定
chsilence
2004-10-20
打赏
举报
回复
楼上的,是指在任务管理器中,不是写木马,请问你怎么实现呀
hmily1688
2004-10-20
打赏
举报
回复
但是在资源管理器,进程中还可以看到
hmily1688
2004-10-20
打赏
举报
回复
你是不是指在任务管理器中应用程序看不到啊,你不会是写个木马类的吧,用application.title:='';
chsilence
2004-10-20
打赏
举报
回复
我说是在WIN2000/NT/XP下
yueyixing
2004-10-20
打赏
举报
回复
注册为系统服务应该就可以了
hottey
2004-10-20
打赏
举报
回复
不会,帮你顶!
Delphi
实现
的QQ自由幻想窗口
隐藏
工具
Delphi
,作为一种高效、快速、强大的面向对象的编程语言,自1995年诞生以来就深受开发者的喜爱。本章将介绍
Delphi
语言的发展历程、特性、以及其在当代编程语言领域的地位。QQ自由幻想作为腾讯公司推出的一款游戏,拥有其独特的游戏背景和发展历程。它的游戏窗口特性是吸引玩家的关键之一。
Delphi
IDE允许开发者通过插件(Plugins)扩展其功能。开发者可以安装第三方插件或者开发自己的插件以适应特定的开发需求。
Delphi
的插件架构非常灵活,可以
实现
从简单的文本编辑功能到复杂的自动化任务。
劫持ZwQuerySystemInformation进行
进程
隐藏
背景
进程
隐藏
,顾名思义就是
运行
注入
程序
之后,可以在任务管理器
中
让可见的目标
进程
消失。 当然,
进程
隐藏
的方法有很多,例如 DLL 劫持、DLL注入、代码注入、
进程
内存替换、HOOK API 等等。我们本文要介绍的就是 HOOK API 函数 ZwQuerySystemInformation
实现
的
隐藏
指定
进程
。 主要思路是通过Hook API技术抓ZwQuerySystemInformation函数,对它获取的
进程
列表
信息进行修改,把有我们要
隐藏
的
进程
信息从
中
去掉,那么 ZwQuerySystemIn
进程
的攻与“防” ----
进程
隐藏
(Win7 x32 绕过PC Hunter)
说来惭愧,360一面的时候,面试官问我如何去
隐藏
一个
进程
,我说很简单那,从EProcess的ActiveProcessLinks的双向
列表
中
断开就完事了啊,面试官当时也没有提醒我,直到面试完,我自己研究了一下从双向
列表
中
断开,但是发现只能躲过任务管理器的眼睛,但是用PcHunter 还是可以枚举出来的,我自己又试了一下从暴力方式去枚举
进程
,发现也是枚举出来,这时候我才想到,双向
列表
的断开,其本质上...
Delphi
实现
QQ窗体
隐藏
功能教程
本文还有配套的精品资源,点击获取 简介:本文详细介绍了使用
Delphi
编程语言
实现
类似QQ窗体
隐藏
功能的方法,包括监听窗体移动事件和处理消息,以优化用户界面和提高效率。通过实践项目"like_hidden_form_QQ.rar",学习者能够掌握如何自动
隐藏
窗体并处理用户交互,从而提升
Delphi
编程能力。 1.
Delphi
编程基础
Delphi
,作为一种...
【原创】用
Delphi
编写系统
进程
监控
程序
本
程序
通过调用kernel32.dll
中
的几个API 函数,搜索并列出系统
中
除本
进程
外的所有
进程
的ID、对应的文件说明符、优先级、CPU占有率、线程数、相关
进程
信息等有关信息,并可
中
止所选
进程
。 本
程序
运行
时会在系统托盘区加入图标,不会出现在按Ctrl+Alt+Del出现的任务
列表
中
,也不会在任务栏上显示任务按钮,在不活动或最小化时会自动
隐藏
。不会重复
运行
,若
程序
已经
运行
,再想
运行
时只会激
Delphi
5,943
社区成员
262,941
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章