在任务栏中隐藏进程

合集下载

WIN7系统怎样将正在运行的程序隐藏

WIN7系统怎样将正在运行的程序隐藏

在使用电脑的时候,如何保证个人的隐私是所有用户都十分关注的一件事。

尤其是在共用电脑上面使用的话,如果需要临时离开的话,那么要先把运行的程序关了等都回来再打开吗?这样做十分的耽误时间的。

那么有没有一个好的方法呢?下面就来看看win7系统将正在运行程序隐藏的方法吧。

可以先下载一个WindowManager软件,然后打开软件把需要隐藏的窗口加密隐藏,等到回来之后解密继续使用。

当软件打开之后,鼠标右键点击软件的图标,这时候选中菜单里面的Open WindowManager dialog选项,直接将窗口打开,如下图所示。

这个打开的窗口里面右键收录了目前全部正在运行程序的窗口名称,选择你需要隐藏的,点击Hide,然后程序就从桌面上消失不见了,窗口也会消失了,之后就可以关闭这个软件了。

如果回来继续使用程序的话,就要将其进行恢复,具体的做法是:右键点击软件图标,Restore window里面直接点击程序的名称就可以了。

不过这种方法其他人也可以将程序恢复,因此我们可以对其进行加密,防止他人操作。

加密的时候鼠标右键点击菜单里面的Settings,选择Security标签,将restoring hidden windows打勾,然后再点击Set Password,设置相关的密码就可以了。

隐藏进程_精品文档

隐藏进程_精品文档

隐藏进程什么是隐藏进程?在操作系统中,进程是指正在运行的程序的执行实例。

正常情况下,操作系统会为每个正在运行的程序创建一个进程,并分配资源给它。

这些进程会被显示在任务管理器或进程管理器中,以便用户可以监控和管理它们。

然而,有时候会有一些恶意软件或黑客攻击会隐藏自己的进程,以逃避用户或系统管理员的监控和控制。

隐藏的进程可以执行各种恶意行为,如损坏文件、窃取敏感信息、攻击网络等。

隐藏进程常常被用于恶意软件中,如计算机病毒、木马和恶意软件。

它们通过各种技术手段来隐藏自己的存在,使自己难以被检测和清除。

隐藏进程的常见技术RootkitRootkit 是一种恶意软件,它通过操纵操作系统的功能来隐藏自己。

Rootkit 可以修改操作系统的核心组件,如内核模块、驱动程序等,以便隐藏进程和其他恶意活动。

Rootkit 通常会修改系统函数调用,使它们返回虚假的结果,以掩盖自己的存在。

它还可以修改进程列表、进程状态和文件系统,来隐藏进程和文件。

HookingHooking 是一种技术,通过修改函数调用表或中断向量表来劫持系统的正常行为。

恶意软件可以使用 Hooking 技术来修改操作系统的函数调用,从而隐藏自己的进程。

通常,Hooking 会劫持一些与进程管理相关的函数,如寻找和遍历进程列表的函数。

当用户或系统管理员尝试查看进程列表时,这些被劫持的函数会返回虚假的结果,隐藏恶意进程的存在。

用户模式隐藏用户模式隐藏是一种技术,恶意软件使用它来隐藏自己的进程。

在用户模式下,操作系统提供了一组 API,用于管理进程和线程。

恶意软件可以使用这些 API 来隐藏自己的进程。

恶意软件可以通过修改自身进程的属性和访问权限来隐藏自己。

例如,它可以将自己的进程标记为“隐藏”或修改进程列表,使自己不可见。

驱动程序隐藏驱动程序是操作系统中的一种特殊类型的软件,它们用于控制硬件设备和提供操作系统功能。

恶意软件可以使用驱动程序来隐藏自己的进程。

vb在任务管理器里面隐藏应用程序进程

vb在任务管理器里面隐藏应用程序进程

'该模块用于在任务管理器中隐藏进程Private Const STATUS_INFO_LENGTH_MISMATCH =&HC0000004 Private Const STATUS_ACCESS_DENIED =&HC0000022Private Const STATUS_INVALID_HANDLE =&HC0000008Private Const ERROR_SUCCESS = 0&Private Const SECTION_MAP_WRITE =&H2Private Const SECTION_MAP_READ =&H4Private Const READ_CONTROL =&H20000Private Const WRITE_DAC =&H40000Private Const NO_INHERITANCE = 0Private Const DACL_SECURITY_INFORMATION =&H4Private Type IO_STATUS_BLOCKStatus As LongInformation As LongEnd TypePrivate Type UNICODE_STRINGLength As IntegerMaximumLength As IntegerBuffer As LongEnd TypePrivate Const OBJ_INHERIT =&H2Private Const OBJ_PERMANENT =&H10Private Const OBJ_EXCLUSIVE =&H20Private Const OBJ_CASE_INSENSITIVE =&H40Private Const OBJ_OPENIF =&H80Private Const OBJ_OPENLINK =&H100Private Const OBJ_KERNEL_HANDLE =&H200 Private Const OBJ_VALID_ATTRIBUTES =&H3F2Private Type OBJECT_ATTRIBUTESLength As LongRootDirectory As LongObjectName As LongAttributes As LongSecurityDeor As Long SecurityQualityOfService As LongEnd TypePrivate Type ACLAclRevision As ByteSbz1 As ByteAclSize As IntegerAceCount As IntegerSbz2 As IntegerEnd TypePrivate Enum ACCESS_MODENOT_USED_ACCESSGRANT_ACCESSSET_ACCESSDENY_ACCESSREVOKE_ACCESSSET_AUDIT_SUCCESSSET_AUDIT_FAILUREEnd EnumPrivate Enum MULTIPLE_TRUSTEE_OPERATIONNO_MULTIPLE_TRUSTEETRUSTEE_IS_IMPERSONATEEnd EnumPrivate Enum TRUSTEE_FORMTRUSTEE_IS_SIDTRUSTEE_IS_NAMEEnd EnumPrivate Enum TRUSTEE_TYPETRUSTEE_IS_UNKNOWNTRUSTEE_IS_USERTRUSTEE_IS_GROUPEnd EnumPrivate Type TRUSTEEpMultipleTrustee As LongMultipleTrusteeOperation As MULTIPLE_TRUSTEE_OPERATION TrusteeForm As TRUSTEE_FORMTrusteeType As TRUSTEE_TYPEptstrName As StringEnd TypePrivate Type EXPLICIT_ACCESSgrfAccessPermissions As LonggrfAccessMode As ACCESS_MODEgrfInheritance As LongTRUSTEE As TRUSTEEEnd TypePrivate Type AceArrayList() As EXPLICIT_ACCESSEnd TypePrivate Enum SE_OBJECT_TYPESE_UNKNOWN_OBJECT_TYPE = 0SE_FILE_OBJECTSE_SERVICESE_PRINTERSE_REGISTRY_KEYSE_LMSHARESE_KERNEL_OBJECTSE_WINDOW_OBJECTSE_DS_OBJECTSE_DS_OBJECT_ALLSE_PROVIDER_DEFINED_OBJECTSE_WMIGUID_OBJECTEnd EnumPrivate Declare Function SetSecurityInfo Lib "advapi32.dll"(ByVal Handle As Long, ByVal ObjectType As SE_OBJECT_TYPE, ByVal SecurityInfo As Long, ppsidOwnerAs Long, ppsidGroup As Long, ppDacl As Any, ppSacl As Any) As LongPrivate Declare Function GetSecurityInfo Lib "advapi32.dll"(ByVal Handle As Long, ByVal ObjectType As SE_OBJECT_TYPE, ByVal SecurityInfo As Long, ppsidOwnerAs Long, ppsidGroup As Long, ppDacl As Any, ppSacl As Any, ppSecurityDeor As Long) As LongPrivate Declare Function SetEntriesInAcl Lib "advapi32.dll" Alias "SetEntriesInAclA"(ByVal cCountOfExplicitEntries As Long, pListOfExplicitEntries AsEXPLICIT_ACCESS, ByVal OldAcl As Long, NewAcl As Long) As LongPrivate Declare Sub BuildExplicitAccessWithName Lib "advapi32.dll" Alias "BuildExplicitAccessWithNameA"(pExplicitAccess As EXPLICIT_ACCESS, ByValpTrusteeName As String, ByVal AccessPermissions As Long, ByVal AccessMode As ACCESS_MODE, ByVal Inheritance As Long)Private Declare Sub RtlInitUnicodeString Lib "NTDLL.DLL"(DestinationString As UNICODE_STRING, ByVal SourceString As Long)Private Declare Function ZwOpenSection Lib "NTDLL.DLL"(SectionHandle As Long, ByVal DesiredAccess As Long, ObjectAttributes As Any) As LongPrivate Declare Function LocalFree Lib "kernel32"(ByVal hMem As Any) As LongPrivate Declare Function CloseHandle Lib "kernel32"(ByVal hObject As Long) As Long Private Declare Function MapViewOfFile Lib "kernel32"(ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByValdwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As LongPrivate Declare Function UnmapViewOfFile Lib "kernel32"(lpBaseAddress As Any) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"(Destination As Any, Source As Any, ByVal Length As Long)Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As LongPrivate Type OSVERSIONINFOdwOSVersionInfoSize As LongdwMajorVersion As LongdwMinorVersion As LongdwBuildNumber As LongdwPlatformId As LongszCSDVersion As String* 128End TypePrivate verinfo As OSVERSIONINFOPrivate g_hNtDLL As LongPrivate g_pMapPhysicalMemory As LongPrivate g_hMPM As LongPrivate aByte(3) As BytePublic Sub HideCurrentProcess()'在进程列表中隐藏当前应用程序进程'转载请注名来自爱软件()阿江编注。

如何在计算机上设置一个新的任务栏自动隐藏方式

如何在计算机上设置一个新的任务栏自动隐藏方式

如何在计算机上设置一个新的任务栏自动隐藏方式在计算机上设置一个新的任务栏自动隐藏方式是一项非常实用的技巧,它可以让我们在使用电脑时拥有更大的屏幕空间,提高工作效率。

本文将介绍如何在Windows和Mac操作系统上设置任务栏的自动隐藏功能。

一、Windows系统设置任务栏自动隐藏方式Windows操作系统是广泛使用的系统之一,设置任务栏自动隐藏可以按照以下步骤操作:1. 鼠标右击任务栏,选择"任务栏设置"。

2. 在弹出的窗口中,找到"任务栏"选项卡。

3. 在"任务栏行为"部分,打开"自动隐藏任务栏"开关。

4. 确认设置后,点击"应用"按钮,然后点击"确定"按钮。

设置完成后,任务栏将自动隐藏在屏幕底部,当鼠标移动到任务栏的位置时,任务栏将重新显示出来。

这样,我们可以在需要时快速访问任务栏,而不会占据屏幕空间。

二、Mac系统设置任务栏自动隐藏方式对于Mac操作系统,设置任务栏自动隐藏也非常简单。

请按照以下步骤进行操作:1. 打开"系统偏好设置"。

2. 在弹出的窗口中,找到"Dock"选项。

3. 在"显示和隐藏自动隐藏Dock"选项,勾选上即可。

设置完成后,任务栏(也称为Dock)将隐藏在屏幕底部。

当鼠标靠近屏幕底部时,任务栏将自动显示出来。

这样可以让我们在Mac上获得更多的屏幕空间,同时方便我们快速启动应用程序。

无论是在Windows系统还是Mac系统上,设置任务栏自动隐藏都是一种非常实用的方式,可以提高我们的工作效率。

通过隐藏任务栏,我们可以拥有更大的屏幕空间,并且可以根据需要随时访问任务栏。

这对于处理复杂的任务、多窗口操作以及各种工作场景都非常有帮助。

值得一提的是,为了确保设置的自动隐藏方式能够正常工作,我们需要保持操作系统和相关应用程序的更新,确保系统的稳定性和兼容性。

WinNTWin2K下实现进程的完全隐藏.net-电脑资料

WinNTWin2K下实现进程的完全隐藏.net-电脑资料

WinNTWin2K下实现进程的完全隐藏.net-电脑资料面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助,。

关于进程的隐藏,98下的例子数不胜数。

WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。

关于进程的隐藏,98下的例子数不胜数。

WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网上发布出实例《揭开木马的神秘面纱<四designtimesp=21638>》,我也多次拜读他的文章,对他的计算机水平及热心帮助朋友的作风十分敬佩。

这里也可算是对shotgun的文章的补充与深入介绍吧,好了,闲话少说。

在WinNT下"真正隐藏进程"这一说法,可以讲是根本不可能实现,只要我们的程序是以进程内核的形式运行,都是不可能逃离CTRL+ALT+DEL的法眼。

那么奇怪了,这岂不是与我们的标题《WinNT & Win2K下实现进程的完全隐藏》相矛盾吗?是的,实际上应该是:以非进程方式执行目标代码,而逃避进程查看器的检查,从而达到"进程隐藏"的目的。

我们这里用的,是在宿主进程中,以线程的方式执行我们的代码。

实现起来非常简单。

首先,我们先建立一个不执行任何语句的线程DWORD stdcall ThreadProc(LPVOID *lpVoid){return 0;}然后,将线程代码拷备至宿主进程所能够执行的任何地方(即页面属性为PAGGE_EXECUTE_READWRITE),如:共享内存影射区、宿主进程内。

这里我们选择宿主进程,拷备的时侯,我们需要先在宿主进程中使用VirtualAllocEx函数申请一段内存,然后再使用WriteProcessMemory将线程体写入宿主进程中。

将你的进程统统隐藏

将你的进程统统隐藏

结 束掉 ( 图 1】 如 。
h ona pppo/ f 3 0 tl n: wld co m o57 m o c St 8h / h pd n / p/ l
迅雷装机必备 ’ ea 。 t1
N t n s e Me d
‘ 2 7
D S通配 符 来设 置 监视 的 文件 类 型 ( : d c表示 只 O 如 .o 监视 Wo d文档 的 d c文 件 ) r o 。还可 以在 “ 操作 类型筛 选 ”
项 中选 择对 哪些操 作进行 监视 。
步 骤 3单 击 “ 录一 导 出记 录到 文件 ” 记 ,软件 可 以
把 操作 记录导 出到 一个 文本 文件 中。ee
● 利 用Uhe来 隐 藏 你 的 进 程 nir d
将你 的进 程统统 隐藏
一 文/ 图 普 勇
QQ、 N或者其 它不 想让 别人看 到 的程序 怎么办? MS “ 鸟 ”会 手 脚 无 措 ,而 “ 鸟 ”则 会 使 用诸 如 隐 身 专 菜 老 家之 类 的软 件 来进 行 隐藏 。其 实 ,还有 款软 件 可 以更简 单 的让 所有 程 序 隐藏得 一 干二 净 !就连 桌面 上 的 图标和 任 务栏都 会全 都消失 ,留下 的 ,只 有那美 丽 的桌面壁 纸 。 这就是 我 的杀手锏 :U hd r n ie 。 桌 面 图 标 和 任 务 栏 全 隐 藏, 怎 么 做? 首 先 按



调ห้องสมุดไป่ตู้

“W n d OW 任 i S
务 管 理 器 ” 然 。
后 把 进 程 中 的
“ EXPL RER E 0 XE’ ’

蛰 彭
I 关键是要记住进程所关 联的程序,如Q Q的进程一般就

电脑进程隐藏方法

电脑进程隐藏方法

电脑进程隐藏方法
1、方法比较简单,首先,你需要在网上搜索相关的隐藏进程的第三方软件工具。

这里就以HideToolz为例子,你在浏览器上输入“HideToolz”就会出现相关的官方下载界面,下载并将这个软件安装到你的电脑当中。

2、下载完后,电脑桌面上就会显示出一个HideToolz的压缩包,鼠标选中这个压缩包,双击打开这个压缩包。

然后在压缩包中找到该软件的应用程序,就能够进入到这个软件了。

通过这个软件,你可以看到目前电脑正在运行的软件有哪些、一共有多少软件是电脑当下所在运行的。

3、做完上面的步骤后,现在就开始隐藏电脑的进程。

找到电脑键盘上Ctrl + Alt +【启动任务管理器】,这几个按键,同时按下去,接着在HideToolz软件上面找到你即将要将其隐藏的运行程序,鼠标放在你要进行隐藏的程序上面,然后点击右键,选择隐藏。

做完这个步骤后,你可以进入到人物管理器里面,看看程序是否已经成功隐藏了。

被成功隐藏的程序是不会出现在任务管理器里面的。

4、最后,在隐藏了相关的运行程序之后,如果你想要将隐藏的程序再次调处来,那么你则需要再次打开HideToolz这个软件,在里面找到已经隐藏的程序,并且鼠标放在隐藏的程序上,单击右键,选择“显示”这个按钮,那么随后你就又能在任务管理器中看到该运行
的进程了!
5、除了利用上面说的第三方软件进行隐藏进程,其他不利用第三方软件隐藏进程的方法也有。

但是相对来说步骤复杂一些。

进程隐藏的若干方法

进程隐藏的若干方法

一、最为古老的DLL注入方法。

虽说古老,但也经历了不少变动,最初的win9X的系统没有Psapi,没有进程快照,所以一般是三级跳。

跳啊跳……NT下可以直接用OpenProcess打开进程(打不开的话,提权到Debug 权限),利用LoadLibrary,并且申请远程地址空间,然后把DLL注入到目标EXE进程当中,可谓省时省力,这也是目前应用作为普遍的方法之一。

典型代码:Delphi(Pascal) codefunction AttachToProcess(const HostFile, GuestFile: string; const PID: DWORD = 0): DWORD;varhRemoteProcess: THandle;dwRemoteProcessId: DWORD;cb: DWORD;pszLibFileRemote: Pointer;iReturnCode: Boolean;TempVar: DWORD;pfnStartAddr: TFNThreadStartRoutine;pszLibAFilename: PwideChar;beginResult := 0;EnabledDebugPrivilege(True);Getmem(pszLibAFilename, Length(GuestFile) * 2 + 1);StringToWideChar(GuestFile, pszLibAFilename, Length(GuestFile) * 2 + 1);if PID > 0 thendwRemoteProcessID := PIDelseFindAProcess(HostFile, False, dwRemoteProcessID);hRemoteProcess := OpenProcess(PROCESS_CREATE_THREAD + {允许远程创建线程}PROCESS_VM_OPERATION + {允许远程VM操作}PROCESS_VM_WRITE, {允许远程VM写}FALSE, dwRemoteProcessId);cb := (1 + lstrlenW(pszLibAFilename)) * sizeof(WCHAR);pszLibFileRemote := PWIDESTRING(VirtualAllocEx(hRemoteProcess, nil, cb, MEM_COMMIT, PAGE_READWRITE));TempVar := 0;iReturnCode := WriteProcessMemory(hRemoteProcess, pszLibFileRemote, pszLibAFilename, cb, TempVar);if iReturnCode thenbeginpfnStartAddr := GetProcAddress(GetModuleHandle('Kernel32'), 'LoadLibraryW'); TempVar := 0;Result := CreateRemoteThread(hRemoteProcess, nil, 0, pfnStartAddr, pszLibFileRemote, 0, TempVar);end;Freemem(pszLibAFilename);end;二、EXE注入。

进程隐藏的方法

进程隐藏的方法

进程隐藏的方法最基本的隐藏:不可见窗体+隐藏文件木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序。

Windows下常见的程序有两种:1.Win32应用程序(Win32 Application),比如QQ、Office等都属于此行列。

2.Win32控制台程序(Win32 Console),比如硬盘引导修复程序FixMBR。

其中,Win32应用程序通常会有应用程序界面,比如系统中自带的"计算器"就有提供各种数字按钮的应用程序界面。

木马虽然属于Win32应用程序,但其一般不包含窗体或隐藏了窗体(但也有某些特殊情况,如木马使用者与被害者聊天的窗口),并且将木马文件属性设置为"隐藏",这就是最基本的隐藏手段,稍有经验的用户只需打开"任务管理器",并且将"文件夹选项"中的"显示所有文件"勾选即可轻松找出木马,于是便出现了下面要介绍的"进程隐藏"技术。

第一代进程隐藏技术:Windows 98的后门在Windows 98中,微软提供了一种能将进程注册为服务进程的方法。

尽管微软没有公开提供这种方法的技术实现细节(因为Windows的后续版本中没有提供这个机制),但仍有高手发现了这个秘密,这种技术称为RegisterServiceProcess。

只要利用此方法,任何程序的进程都能将自己注册为服务进程,而服务进程在Windows 98中的任务管理器中恰巧又是不显示的,所以便被木马程序钻了空子。

要对付这种隐藏的木马还算简单,只需使用其他第三方进程管理工具即可找到其所在,并且采用此技术进行隐藏的木马在Windows 2000/XP(因为不支持这种隐藏方法)中就得现形!中止该进程后将木马文件删除即可。

可是接下来的第二代进程隐藏技术,就没有这么简单对付了。

第二代进程隐藏技术:进程插入在Windows中,每个进程都有自己的私有内存地址空间,当使用指针(一种访问内存的机制)访问内存时,一个进程无法访问另一个进程的内存地址空间,就好比在未经邻居同意的情况下,你无法进入邻居家吃饭一样。

在任务栏和开始菜单属性中隐藏不活动

在任务栏和开始菜单属性中隐藏不活动

这是任务栏和开始菜单栏中隐藏不活动图标的过去项目和当前项目,TRAYNOTIFY表示系统托盘图标。或者windows任务栏右下角图标。
在任务栏和开始菜单属性中隐藏不活动的图标自定义通知里如何删除过去的项目中的某个项目
系统运行一段时间后,在 notifiction 中会留下一些已经删除程序的图标,这些没用的图标看上去很碍眼,
2008年01月11日 星期五 下午 01:11
HKEY_CURRENT_CONFIG\Software\Microsoft\Windows\CurrentVersion\ Explorer\TrayNotify”,其中“IconStreams”项存储着“当前项目”而“PastIconsStream”项存储着“过去的项目”
打开任务管理器,在进程标签中选择结束EXPLORER进程。然后,单击任务管理器的应用程序标签,
点击新建任务按钮,在出来的对话框中输入EXPLORER,确定既可。
重新打开 customize notifiction 你会发现那些碍眼的图标已经一干二净。经过一段时间系统的运行,
还会重新留下一些图标,如果你不想让它们留驻的话,重复以上操作过程即可。
我们可以用修改注册表的办法将它们删除掉。做法如下:
在任务栏和开始菜单属性中隐藏不活动的图标自定义通知里如何删除过去的项目中的某个项目?
运行regedit打开注册表编辑器,找到
一、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify,把IconStreams和PastIconsStream的键值更改为0,即双击打开后,删除里面所有的内容,然后重新注销或者重新启动计算机就可以了.

Win7如何隐藏任务栏游戏图标?Win7隐藏任务栏游戏图标的方法

Win7如何隐藏任务栏游戏图标?Win7隐藏任务栏游戏图标的方法

Win7如何隐藏任务栏游戏图标?Win7隐藏任务栏游戏图标的方法
我们在使用电脑玩游戏的时候任务栏中总是会显示出游戏的图标,于是就有小伙伴想要隐藏这个图标却不知如何操作,那么下面就和我一起来看看要如何去Win7隐藏任务栏游戏图标吧。

Win7隐藏任务栏游戏图标的方法
进到桌面上后,在底端的任务栏空白右键单击,随后挑选"属性'。

在弹出来的对话框中,点一下"任务栏'标签页下的"自定'。

在通告地区图标设定对话框的左下方,撤消启用"自始至终在任务栏上表明全部图标和通告'。

随后在上边目录中寻找必须删除的游戏图标,点一下后边的选择项,挑选"掩藏图标和通告'。

变更设定后,点一下右下方的"明确'按键才会起效。

除此之外,还能根据拖拽任务栏上的游戏图标到自定栏中掩藏。

木马的隐藏技术

木马的隐藏技术
使用RunDLL32的方法进行进程隐藏很简单,但非 常容易被识破
真隐藏实现方式
在Windows系统中常见的真隐藏实现方 式有:
利用DLL实现简单隐藏 采用替代技术的DLL木马 采用动态嵌入技术的DLL木马
采用替代技术的DLL木马
工作原理是替换常用的DLL文件,截获并处理 特定的消息,将正常的调用转发给原DLL
此种技术是比较古老的技术,因此微软也做 了相当的防范
在Windows的system32目录下有一个dllcache目录,一旦操 作系统发现被保护的DLL文件被篡改(利用数字签名技术),就 会自动从dllcache中恢复该文件
真隐藏实现方式
在Windows系统中常见的真隐藏实现方 式有:
利用DLL实现简单隐藏 采用替代技术的DLL木马 采用动态嵌入技术的DLL木马
进程隐藏
想要隐藏木马的服务器端,可以伪隐藏, 也可以真隐藏
伪隐藏是指程序的进程仍然存在,只不过是让 它消失在进程列表里
真隐藏则是让程序彻底的消失,不以一个进程 或者服务的方式工作
进程隐藏
伪隐藏
把木马服务器端的程序注册为一个服务,这样, 程序就会从任务列表中消失了,当按下 Ctrl+Alt+Delete的时候,也看不到这个程序。 但是通过服务管理器,会发现在系统中注册过 的服务
进程隐藏
进程、线程、服务 进程:一个正常的Windows应用程序,在运行之
后,都会在系统之中产生一个进程,分别对应一 个不同的PID(进程标识符)。这个进程会被系统 分配一个虚拟的内存空间地址段,一切相关的程 序操作,都会在这个虚拟的空间中进行 线程:一个进程,可以存在一个或多个线程,线 程之间同步执行多种操作,一般地,线程之间是 相互独立的,当一个线程发生错误的时候,并不 一定会导致整个进程的崩溃 服务:一个进程当以服务的方式工作的时候,它 将会在后台工作,不会出现在任务列表中,但可 通过服务管理器检查任何的服务程序是否被启动 运行

C#程序在任务管理器中隐藏

C#程序在任务管理器中隐藏

C#在任务管理器里隐藏这里说的只是在WINDOWS 任务管理器里隐藏,不是在进程里消失例如我们要隐藏QQ进程,不在WINDOWS任务管理器里显示使用方法private WindowsAPI.HideTaskmgrList _List = new WindowsAPI.HideTaskmgrList();private void Form1_Load(object sender, EventArgs e){_List.ProcessName = "QQ.exe";_List.Star();}下面是全部的类view plaincopy to clipboardprint?namespace WindowsAPI{/// <summary>/// 在WINDOWS任务管理器里不显示进程/// qq:116149/// zgke@sina.copm/// </summary>public class HideTaskmgrList{private System.Timers.Timer m_Time = new System.Timers.Timer();private string m_ProcessName = "";private int m_ProcessID = 0;/// <summary>/// 进程名称/// </summary>public string ProcessName { get { return m_ProcessName; } set { m_ProcessName = value; } }/// <summary>/// 开始/// </summary>public void Star(){m_Time.Enabled = true;}/// <summary>/// 停止/// </summary>public void Stop(){m_Time.Enabled = false;}public HideTaskmgrList(){m_Time.Interval = 1;m_Time.Elapsed += new System.Timers.ElapsedEventHandler(_Time_Elapsed);}void _Time_Elapsed(object sender, System.Timers.ElapsedEventArgs e){HideTaskmgrListOfName(m_ProcessName);}/// <summary>/// 获取所有控件/// </summary>/// <param name="p_Handle"></param>/// <param name="p_Param"></param>/// <returns></returns>private bool NetEnumControl(IntPtr p_Handle, int p_Param){WindowsAPI.Win32API.STRINGBUFFER _TextString = new WindowsAPI.Win32API.STRINGBUFFER();WindowsAPI.Win32API.GetWindowText(p_Handle, out _TextString, 256);WindowsAPI.Win32API.STRINGBUFFER _ClassName = new WindowsAPI.Win32API.STRINGBUFFER();WindowsAPI.Win32API.GetClassName(p_Handle, out _ClassName, 255);if (_TextString.szText == "进程" && _ClassName.szText == "SysListView32"){Hide(p_Handle);return false;}return true;}/// <summary>/// 隐藏/// </summary>/// <param name="p_ListViewIntPtr"></param>public void Hide(IntPtr p_ListViewIntPtr){IntPtr _ControlIntPtr = p_ListViewIntPtr;int _ItemCount = WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x1004, 0, 0);WindowsAPI.Win32API.ProcessAccessType _Type;_Type = WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_OPERATION | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_READ | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_WRITE;IntPtr _ProcessIntPtr = WindowsAPI.Win32API.OpenProcess(_Type, 1, (uint)m_ProcessID);IntPtr _Out = IntPtr.Zero;for (int z = 0; z != _ItemCount; z++){//分配一个内存地址保存进程的应用程序名称IntPtr _StrBufferMemory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, 255, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE);byte[] _OutBytes = new byte[40]; //定义结构体(LVITEM)byte[] _StrIntPtrAddress = BitConverter.GetBytes(_StrBufferMemory.ToInt32());_OutBytes[20] = _StrIntPtrAddress[0];_OutBytes[21] = _StrIntPtrAddress[1];_OutBytes[22] = _StrIntPtrAddress[2];_OutBytes[23] = _StrIntPtrAddress[3];_OutBytes[24] = 255;//给结构体分配内存IntPtr _Memory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, _OutBytes.Length, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE);//把数据传递给结构体(LVITEM)WindowsAPI.Win32API.WriteProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out);//发送消息获取结构体数据WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x102D, z, _Memory);//获取结构体数据WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out);//获取结构体pszText的地址IntPtr _ValueIntPtr = new IntPtr(BitConverter.ToInt32(_OutBytes, 20));byte[] _TextBytes = new byte[255]; //获取pszText的数据WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _ValueIntPtr, _TextBytes, 255, out _Out);//获取进程名称string _ProcessText = System.Text.Encoding.Default.GetString(_TextBytes).Trim(new Char[] { '\0' });//释放内存WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _StrBufferMemory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE);WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _Memory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE);if (_ProcessText == m_ProcessName){WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x1008, z, 0);}}}/// <summary>/// 在WINDOWS任务管理器里隐藏一行需要一直调用会被任务管理器刷新出来/// </summary>/// <param name="p_Name">名称如QQ.exe</param>public void HideTaskmgrListOfName(string p_Name){System.Diagnostics.Process[] _ProcessList = System.Diagnostics.Process.GetProcessesByName("taskmgr");for (int i = 0; i != _ProcessList.Length; i++){if (_ProcessList[i].MainWindowTitle == "Windows 任务管理器"){m_ProcessID = _ProcessList[i].Id;WindowsAPI.Win32API.EnumWindowsProc _EunmControl = new WindowsAPI.Win32API.EnumWindowsProc(NetEnumControl);WindowsAPI.Win32API.EnumChildWindows(_ProcessList[i].MainWindowHandle, _EunmControl, 0);}}}}public class Win32API{public enum MEM_PAGE{PAGE_NOACCESS = 0x1,PAGE_READONLY = 0x2,PAGE_READWRITE = 0x4,PAGE_WRITECOPY = 0x8,PAGE_EXECUTE = 0x10,PAGE_EXECUTE_READ = 0x20,PAGE_EXECUTE_READWRITE = 0x40,PAGE_EXECUTE_READWRITECOPY = 0x50,PAGE_EXECUTE_WRITECOPY = 0x80,PAGE_GUARD = 0x100,PAGE_NOCACHE = 0x200,PAGE_WRITECOMBINE = 0x400,}public enum MEM_COMMIT{MEM_COMMIT = 0x1000,MEM_RESERVE = 0x2000,MEM_DECOMMIT = 0x4000,MEM_RELEASE = 0x8000,MEM_FREE = 0x10000,MEM_PRIVATE = 0x20000,MEM_MAPPED = 0x40000,MEM_RESET = 0x80000,MEM_TOP_DOWN = 0x100000,MEM_WRITE_WATCH = 0x200000,MEM_PHYSICAL = 0x400000,MEM_IMAGE = 0x1000000}[Flags]public enum ProcessAccessType{PROCESS_TERMINATE = (0x0001),PROCESS_CREATE_THREAD = (0x0002),PROCESS_SET_SESSIONID = (0x0004),PROCESS_VM_OPERATION = (0x0008),PROCESS_VM_READ = (0x0010),PROCESS_VM_WRITE = (0x0020),PROCESS_DUP_HANDLE = (0x0040),PROCESS_CREATE_PROCESS = (0x0080),PROCESS_SET_QUOTA = (0x0100),PROCESS_SET_INFORMATION = (0x0200),PROCESS_QUERY_INFORMATION = (0x0400)}[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public struct STRINGBUFFER{[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]public string szText;}public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);[DllImport("kernel32.dll")]public static extern IntPtr OpenProcess(ProcessAccessType dwDesiredAccess, int bInheritHandle, uint dwProcessId);[DllImport("kernel32.dll")]public static extern Int32 CloseHandle(IntPtr hObject);[DllImport("kernel32.dll")]public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);[DllImport("kernel32.dll")]public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);[DllImport("kernel32.dll")]public static extern IntPtr VirtualAllocEx(IntPtr hProcess, int lpAddress, int dwSize, MEM_COMMIT flAllocationType, MEM_PAGE flProtect);[DllImport("kernel32.dll")]public static extern IntPtr VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, MEM_COMMIT dwFreeType);[DllImport("User32.dll", CharSet = CharSet.Auto)]public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER text, int nMaxCount);[DllImport("User32.dll", CharSet = CharSet.Auto)]public static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);[DllImport("user32.dll")]public static extern int EnumChildWindows(IntPtr hWndParent, EnumWindowsProc ewp, int lParam);}}。

C#程序在任务管理器中隐藏

C#程序在任务管理器中隐藏

C#在任务管理器里隐藏这里说的只是在WINDOWS 任务管理器里隐藏,不是在进程里消失例如我们要隐藏QQ进程,不在WINDOWS任务管理器里显示使用方法private WindowsAPI.HideTaskmgrList _List = new WindowsAPI.HideTaskmgrList();private void Form1_Load(object sender, EventArgs e){_List.ProcessName = "QQ.exe";_List.Star();}下面是全部的类view plaincopy to clipboardprint?namespace WindowsAPI{/// <summary>/// 在WINDOWS任务管理器里不显示进程/// qq:116149/// zgke@sina.copm/// </summary>public class HideTaskmgrList{private System.Timers.Timer m_Time = new System.Timers.Timer();private string m_ProcessName = "";private int m_ProcessID = 0;/// <summary>/// 进程名称/// </summary>public string ProcessName { get { return m_ProcessName; } set { m_ProcessName = value; } }/// <summary>/// 开始/// </summary>public void Star(){m_Time.Enabled = true;}/// <summary>/// 停止/// </summary>public void Stop(){m_Time.Enabled = false;}public HideTaskmgrList(){m_Time.Interval = 1;m_Time.Elapsed += new System.Timers.ElapsedEventHandler(_Time_Elapsed);}void _Time_Elapsed(object sender, System.Timers.ElapsedEventArgs e){HideTaskmgrListOfName(m_ProcessName);}/// <summary>/// 获取所有控件/// </summary>/// <param name="p_Handle"></param>/// <param name="p_Param"></param>/// <returns></returns>private bool NetEnumControl(IntPtr p_Handle, int p_Param){WindowsAPI.Win32API.STRINGBUFFER _TextString = new WindowsAPI.Win32API.STRINGBUFFER();WindowsAPI.Win32API.GetWindowText(p_Handle, out _TextString, 256);WindowsAPI.Win32API.STRINGBUFFER _ClassName = new WindowsAPI.Win32API.STRINGBUFFER();WindowsAPI.Win32API.GetClassName(p_Handle, out _ClassName, 255);if (_TextString.szText == "进程" && _ClassName.szText == "SysListView32"){Hide(p_Handle);return false;}return true;}/// <summary>/// 隐藏/// </summary>/// <param name="p_ListViewIntPtr"></param>public void Hide(IntPtr p_ListViewIntPtr){IntPtr _ControlIntPtr = p_ListViewIntPtr;int _ItemCount = WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x1004, 0, 0);WindowsAPI.Win32API.ProcessAccessType _Type;_Type = WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_OPERATION | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_READ | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_WRITE;IntPtr _ProcessIntPtr = WindowsAPI.Win32API.OpenProcess(_Type, 1, (uint)m_ProcessID);IntPtr _Out = IntPtr.Zero;for (int z = 0; z != _ItemCount; z++){//分配一个内存地址保存进程的应用程序名称IntPtr _StrBufferMemory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, 255, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE);byte[] _OutBytes = new byte[40]; //定义结构体(LVITEM)byte[] _StrIntPtrAddress = BitConverter.GetBytes(_StrBufferMemory.ToInt32());_OutBytes[20] = _StrIntPtrAddress[0];_OutBytes[21] = _StrIntPtrAddress[1];_OutBytes[22] = _StrIntPtrAddress[2];_OutBytes[23] = _StrIntPtrAddress[3];_OutBytes[24] = 255;//给结构体分配内存IntPtr _Memory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, _OutBytes.Length, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE);//把数据传递给结构体(LVITEM)WindowsAPI.Win32API.WriteProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out);//发送消息获取结构体数据WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x102D, z, _Memory);//获取结构体数据WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out);//获取结构体pszText的地址IntPtr _ValueIntPtr = new IntPtr(BitConverter.ToInt32(_OutBytes, 20));byte[] _TextBytes = new byte[255]; //获取pszText的数据WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _ValueIntPtr, _TextBytes, 255, out _Out);//获取进程名称string _ProcessText = System.Text.Encoding.Default.GetString(_TextBytes).Trim(new Char[] { '\0' });//释放内存WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _StrBufferMemory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE);WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _Memory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE);if (_ProcessText == m_ProcessName){WindowsAPI.Win32API.SendMessage(p_ListViewIntPtr, 0x1008, z, 0);}}}/// <summary>/// 在WINDOWS任务管理器里隐藏一行需要一直调用会被任务管理器刷新出来/// </summary>/// <param name="p_Name">名称如QQ.exe</param>public void HideTaskmgrListOfName(string p_Name){System.Diagnostics.Process[] _ProcessList = System.Diagnostics.Process.GetProcessesByName("taskmgr");for (int i = 0; i != _ProcessList.Length; i++){if (_ProcessList[i].MainWindowTitle == "Windows 任务管理器"){m_ProcessID = _ProcessList[i].Id;WindowsAPI.Win32API.EnumWindowsProc _EunmControl = new WindowsAPI.Win32API.EnumWindowsProc(NetEnumControl);WindowsAPI.Win32API.EnumChildWindows(_ProcessList[i].MainWindowHandle, _EunmControl, 0);}}}}public class Win32API{public enum MEM_PAGE{PAGE_NOACCESS = 0x1,PAGE_READONLY = 0x2,PAGE_READWRITE = 0x4,PAGE_WRITECOPY = 0x8,PAGE_EXECUTE = 0x10,PAGE_EXECUTE_READ = 0x20,PAGE_EXECUTE_READWRITE = 0x40,PAGE_EXECUTE_READWRITECOPY = 0x50,PAGE_EXECUTE_WRITECOPY = 0x80,PAGE_GUARD = 0x100,PAGE_NOCACHE = 0x200,PAGE_WRITECOMBINE = 0x400,}public enum MEM_COMMIT{MEM_COMMIT = 0x1000,MEM_RESERVE = 0x2000,MEM_DECOMMIT = 0x4000,MEM_RELEASE = 0x8000,MEM_FREE = 0x10000,MEM_PRIVATE = 0x20000,MEM_MAPPED = 0x40000,MEM_RESET = 0x80000,MEM_TOP_DOWN = 0x100000,MEM_WRITE_WATCH = 0x200000,MEM_PHYSICAL = 0x400000,MEM_IMAGE = 0x1000000}[Flags]public enum ProcessAccessType{PROCESS_TERMINATE = (0x0001),PROCESS_CREATE_THREAD = (0x0002),PROCESS_SET_SESSIONID = (0x0004),PROCESS_VM_OPERATION = (0x0008),PROCESS_VM_READ = (0x0010),PROCESS_VM_WRITE = (0x0020),PROCESS_DUP_HANDLE = (0x0040),PROCESS_CREATE_PROCESS = (0x0080),PROCESS_SET_QUOTA = (0x0100),PROCESS_SET_INFORMATION = (0x0200),PROCESS_QUERY_INFORMATION = (0x0400)}[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public struct STRINGBUFFER{[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]public string szText;}public delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);[DllImport("kernel32.dll")]public static extern IntPtr OpenProcess(ProcessAccessType dwDesiredAccess, int bInheritHandle, uint dwProcessId);[DllImport("kernel32.dll")]public static extern Int32 CloseHandle(IntPtr hObject);[DllImport("kernel32.dll")]public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);[DllImport("kernel32.dll")]public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);[DllImport("kernel32.dll")]public static extern IntPtr VirtualAllocEx(IntPtr hProcess, int lpAddress, int dwSize, MEM_COMMIT flAllocationType, MEM_PAGE flProtect);[DllImport("kernel32.dll")]public static extern IntPtr VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, MEM_COMMIT dwFreeType);[DllImport("User32.dll", CharSet = CharSet.Auto)]public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER text, int nMaxCount);[DllImport("User32.dll", CharSet = CharSet.Auto)]public static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);[DllImport("user32.dll")]public static extern int EnumChildWindows(IntPtr hWndParent, EnumWindowsProc ewp, int lParam);}}。

如何才能让打开的窗口不显示在下面的任务栏上?

如何才能让打开的窗口不显示在下面的任务栏上?

如何才能让打开的窗口不显示在下面的任务栏上?桌面的任务栏分为两个部分,左边为开始和正在运行的任务;右边是通知栏。

一、在通知栏取消显示的方法:1、右键任务栏--属性--通知区域自定义,如下图:2、在具体的程序中,选择隐藏图标和通知。

如下图:二、让运行的程序不在任务栏显示,这需要第三方程序来设置,如:《装模作样》,具体方法是:1、下载《装模作样》软件,此软件为绿色软件,不需要安装,打开就能使用。

如下图:2、点击隐藏设置--只隐藏下列窗口--加入,设置所需要婚期的软件,如下图:3、装模作样,不仅隐藏软件在任务栏的显示,也能按快捷键隐藏在桌面上的显示,同时,为了掩人耳目,还能自动自动打开一个文档、文件、软件等,如下图:4、设置快捷键,如下图:锁定任务栏真正锁定XP任务栏问:我的电脑安装的操作系统是Windows XP专业版,在其中设置了“锁定任务栏”后,其他人还是可以通过该设置来解除锁定。

请问有什么办法能解决这个问题?答:在Windows XP专业版中,可以用“组策略”来实现更高级的锁定。

具体操作步骤如下:(1)在系统桌面上用鼠标依次选择“开始→运行”。

(2)在出现窗口的“打开”栏中键入gpedit.msc后按回车键启动组策略。

(3)依次展开“用户配置→管理模板→任务栏和[开始]菜单”,在右侧窗口中找到“锁定任务栏”后用鼠标双击该选项。

(4)在弹出的窗口中选择“已启用”,再单击“确定”按钮即可。

再打开“任务栏”属性时你会发现“锁定任务栏”选项已经变成不可选状态了。

任务栏解决假死任务栏假死解决技巧使用Windows XP操作系统的用户,都遇到过这样的现象:操作过程中想在任务栏中切换窗口时,忽然发现点击任务栏中的图标没有任何反应了,就像系统死机一样,这就是Windows XP中常见的任务栏失去响应,又被称为“任务栏假死现象”。

我们可以用下面的方法解决它。

Windows XP的“高级文字服务”包括了语音、手写和中文键盘输入服务,我们常用的输入法在Windows XP中也被归入高级文字服务。

进程隐藏_精品文档

进程隐藏_精品文档

进程隐藏什么是进程隐藏?在计算机科学中,进程隐藏(Process hiding)是指将正在运行的进程从操作系统的进程列表中隐藏起来,使其在任务管理器或类似的进程查看工具中不可见。

进程隐藏的主要目的是为了增加对恶意软件和攻击行为的隐蔽性,使其难以被检测和终止。

进程隐藏的原理进程隐藏的原理主要依赖于操作系统的特定功能和接口。

以下是一些常见的进程隐藏技术:1. 修改进程ID操作系统会为每个运行的进程分配一个唯一的进程ID(PID)。

通过修改进程ID,可以使进程在进程列表中不可见。

这需要对操作系统的内核进行修改,以欺骗操作系统,使其认为进程ID不存在或已被终止。

2. 隐藏进程名称通过修改进程的名称,可以使其在进程列表中不易被注意到。

这可以通过修改操作系统内核中对进程名称的记录实现。

修改进程名称可以使恶意软件模拟其他常见进程的名称,或者完全隐藏进程的名称。

3. 隐藏进程路径进程隐藏还可以通过修改进程路径来实现。

进程路径是进程在操作系统中的存储位置。

通过修改进程路径,可以使进程在进程查看工具中不易被发现。

这需要对操作系统的内核进行修改,以欺骗操作系统,使其认为进程路径不存在或已被更改。

4. 隐藏进程启动项操作系统中的启动项指的是开机自动启动的进程。

通过隐藏进程的启动项,可以使进程在系统启动时不可见,从而增加其隐蔽性。

这需要对操作系统中的启动项进行修改。

5. 隐藏进程的线程进程通常由多个线程组成。

通过隐藏进程的线程,可以使进程在进程查看工具中只显示部分线程或不显示任何线程,从而隐藏其存在。

这需要在操作系统层面对线程进行管理和修改。

进程隐藏的应用进程隐藏技术通常被用于恶意软件和攻击行为。

以下是一些常见的应用场景:1. 计算机病毒计算机病毒通常会使用进程隐藏技术来增加其对防御机制的逃避能力。

通过隐藏恶意进程,病毒可以在操作系统中长时间潜伏,绕过杀毒软件和系统监控。

2. 黑客攻击黑客攻击中经常使用进程隐藏技术来隐藏攻击代码或后门程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
m_rsp(::GetCurrentProcessId(),1);//此时为隐藏,当第二个参数为0时显示
另外,还有一部分黑软是通过ShowWindowAsync()函数启动一个新的线程来显示一个新窗口的。该函数的原形为:
BOOL ShowWindowAsync(HWND hWnd,int nCmdShow);
而黑软正是钻了该函数的第二个参数可以设置窗体显示状态的空子,在设置成SW_HIDE时就可以使目标窗体(黑软)从任务列表中隐藏。
LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);
另一种很简便的是MFC的写法:在程序框架类的预创建窗口函数里通过直接对CREATESTRUCT结构对象的逻辑操作而将程序属性进行改变:
cs.style=WS_POPUP;
cs.dwExStyle|=WS_EX_TOOLWINDOW;
DWORD RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);
其第一个参数指定为一个服务进程的进程标识,如果是0则注册当前的进程;第二个参数指出是注册还是注销当前的进程,其状态分别为:
RSP_SIMPLE_SERVICE和RSP_UNREGISTER_SERVICE。黑软一般是在程序启动isterServiceProcess()函数加载到内存,然后再通过该函数将程序从任务列表中隐藏:
//从Kernel32.dll中加载RegisterServiceProcess()
HMODULE m_hKernel=::GetModuleHandle("Kernel32.DLL");
RSP m_rsp=(RSP)::GetProcAddress(m_hKernel,"RegisterServiceProcess");
在Win9x/2000中,一般每个应用程序都要通过一个API(应用程序接口)函数RegisterServiceProcess()向系统申请注册成为一个服务进程,并且也是通过这个函数注销其服务进程来结束这个服务进程的运行。如果一个进程注册为一个服务进程,通过Ctrl+Alt+Del就可以在任务列表里看见该进程的标题。而如果一个进程运行了但没有向系统申请注册成为服务进程那么就不会在任务列表里显示。黑软也正是利用这个原理使自身在运行时能在任务列表中实现隐藏。该函数存放于系统内核Kernel32.dll中,具体声明如下:
这两种写法虽然表现形式各不相同,其本质都是一样的。
三、程序在任务列表中的隐藏原理
任务列表(Ctrl+Alt+Del时弹出的对话框)显示了当前系统正在运行的一些应用程序,如果实现了上一步,虽然在任务栏看不见程序,但有经验的用户可以通过观察任务列表而发现一些值得怀疑的应用程序而在此将其关闭。所以大多数黑软也都通过较复杂的手段实现了自身在任务列表中的隐藏,使被发现的机会大大降低。
在任务栏中隐藏进程
程序在任务栏的隐藏比较简单,首先要保证程序主界面的隐藏,一般是通过修改应用程序类的初始化实例函数InitInstance()的
ShowWindow()语句的SW_SHOW参数为SW_HIDE来实现的。主界面隐藏的同时任务栏虽然也会消失,但在程序启动时会闪一下,因此需要修改程序的扩展属性。一种方法是SDK的写法,即直接利用GetWindowLong()获取到当前的扩展属性然后通过逻辑运算去掉原有的
WS_EX_APPWINDOW属性,并新添加一个WS_EX_TOOLWINDOW属性,这样系统会将其认为是一个工具条窗口而不会再在任务栏中加以显示。最后需要将修改过的扩展属性通过SetWindowLong()函数将其写回。这两个函数的声明分别如下:
LONG GetWindowLong(HWND hWnd,int nIndex);
相关文档
最新文档