-
浅析进程“伪隐藏”技术与实现两则
2005-08-04 13:03:00这里的"伪隐藏"指的是,虽然在"WINDOWS任务管理器"进程列表中可以看到其进程存在,但在硬盘中却找不到或者说不容易找到其相对应的程序文件。 一:乾坤大挪移 大家都知道,当一个程序正在运行时,WIN系统进程隐藏?干吗用?你不知道?我晕!进程隐藏技术多用于木马和病毒中(还用你说?!),用于提高其生存率。其实现方法因WIN系统架构不同而各异,一些常用方法资料很多,我在这里也就不多说啦!
这里的"伪隐藏"指的是,虽然在"WINDOWS任务管理器"进程列表中可以看到其进程存在,但在硬盘中却找不到或者说不容易找到其相对应的程序文件。
一:乾坤大挪移
大家都知道,当一个程序正在运行时,WIN系统是不允许我们把其删除的(所以才会有人寻找程序自删除_blank>技术),但却不知大家是否注意到,在WIN2000中,当一个程序正在运行时,我们虽然不能把它删除,但我们却可以把程序文件在同一分区内移动位置以及重命名,你可以自己试验一下!这也就是"Windows文件保护"所使用的方法!试想,如果我们的程序在运行后,立即把自身移动位置并重命名,而在"WINDOWS任务管理器"进程列表中显示的却还是原来的程序名,那你又该如何来查找到其对应的程序文件呢?当然如果程序在内存中没有进行变形的话,你可以利用内存查看_blank>软件(如WINHEX)并利用查找功能来找到相对应的程序文件,但如果程序在内存中变形
,也可以说解密,使得内存映像和硬盘中的原程序文件不同,那我是暂时没法找出来啦!
实现_blank>代码如下(MASM):
;进程隐藏之乾坤大挪移(只能在同分区内移动)
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
.data?
selfname db MAX_blank>_PATH dup(?)
.data
movename db "c:/mm.jpg",0
.code
main:
invoke GetModuleFileName,NULL,addr selfname,MAX_blank>_PATH ;得到自身路径
mov al, byte ptr selfname ;得到所在分区
mov byte ptr movename,al ;修正movename,使其在同分区内移动
invoke MoveFile,addr selfname,addr movename ;把自身移动位置并改名
invoke MessageBox,NULL,offset selfname,offset movename,MB_blank>_OK
invoke ExitProcess, NULL
end main
本例程在WIN2000下调试通过,XP" target=_blank>XP和WIN2003应该也可以,请有条件的弟兄测试,WIN98和WINME不能用,与硬盘格式无关!二:程序自删除(仅适用于NTFS硬盘分区格式)
在NTFS分区下存在文件流早已不是什么秘密啦,但大家主要用它来隐藏文件,我在一次测试中却发现当我运行一个文件流程序时,这个文件流程序所在的宿主文件却是可以被删除的!进一步测试发现文件流程序运行时并无法直接删除这个文件流程序,只能删除宿主文件,从而来删除文件流程序。利用此特性,我们同样可以实现类似于上例的效果,且比其隐藏效果要好点。方法为:判断是否是NTFS格式分区,如果是则把自身复制为一个文件流,并运行复制的文件流,运行时检测到自己是存在于文件流中时就删除宿主文件。
实现_blank>代码如下(MASM):
;进程隐藏之文件流(只能用于NTFS分区格式)
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
.data?
selfname db MAX_blank>_PATH dup(?)
szFileSystemName db 10 dup(?)
.data
delname db "`.`:icyfox.exe",0
;此处的"`.`:icyfox.exe"可以改为其他文件名如"cs.txt:cs.exe"
;我这里用"`.`"的目的是为了防止删除其他存在的文件
szErr db "我不在NTFS格式的分区内,退出!",0
szYes db "我在下面的流内,已被删除!",0
.code
main:
invoke GetModuleFileName,NULL,addr selfname,MAX_blank>_PATH
mov bl,byte ptr selfname+3
mov byte ptr selfname+3,0
xor eax,eax
;下面获取自身所在分区格式,并判断是否是NTFS格式
invoke GetVolumeInformation,addr selfname,eax,eax,/
eax,eax,eax,addr szFileSystemName, sizeof szFileSystemName
mov byte ptr selfname+3,bl
.if dword ptr szFileSystemName!='SFTN';NTFS
invoke MessageBox,NULL,offset szErr,NULL,MB_blank>_OK
invoke ExitProcess, NULL
.endif
;下面判断自己是否在流(STREAM)中
;如果路径中含有两个:号,说明自己在文件流中
lea esi,selfname
xor edx,edx
@@:
LODSB
or al,al
jz @F ;遇到0结束
.if al==":"
INC edx
.endif
.if edx==2
mov byte ptr [esi-1],0
invoke DeleteFile,addr selfname ;删除宿主文件
invoke MessageBox,NULL,offset delname,offset szYes,MB_blank>_OK
invoke ExitProcess, NULL
.endif
jmp @B
;下面是当自身不在文件流中时,把自身复制到流中并运行
@@:
invoke CopyFile,addr selfname,addr delname,FALSE
invoke WinExec,addr delname,NULL
invoke ExitProcess, NULL
end main
附加品:
我在测试时发现,当delname(也就是流名)为" .:icyfox.exe" (.前为一空格,也可以是其他字符)时,会产生一个无法删除的文件" .",我的盘中还留着它,请大家想想办法帮我删掉它!我怀疑可能和那个文件夹_blank>漏洞有关,但现在是文件,我在后面加上/也删不掉! -
内存管理内存管理内存管理
2011-04-04 20:16:26对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。 追溯到在 Apple II 上... -
操作系统(内存管理)
2009-09-20 12:55:25对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。 追溯到在 Apple II 上进行... -
Oracle Database 11g数据库管理艺术--详细书签版
2012-09-30 01:09:45第4章 使用SQL*Plus和Oracle企业管理器 73 4.1 启动SQL*Plus会话 73 4.1.1 设置环境 73 4.1.2 从命令行启动SQL*Plus会话 74 4.1.3 用CONNECT命令进行连接 75 4.1.4 用/NOLOG的无连接SQL*Plus会话 76 ... -
-
-
-
Visual Studio程序员箴言--详细书签版
2012-10-16 20:37:39技巧4.4 直接打开包含活动文件的Windows资源管理器 74 技巧4.5 只关闭选定的文件 74 技巧4.6 在什么情况下,文件选项卡频道的下拉按钮会改变图标 75 4.1.2 IDE导航器 76 技巧4.7 使用Ctrl+Tab键打开IDE... -
EXCEL集成工具箱完整版 (简体/繁体/英文多国语言版) V7.0
2010-08-13 10:31:10【任务管理器】 增强型的系统任务管理器,提供进程的PID及路径、进程文件属性及详细说明,以及进行结束进程与删除进程及设置LEVEL等操作。 【系统功能信息】 系统功能调用及相关信息,关闭电脑、重启电脑、电脑使用... -
EXCEL集成工具箱V9.0 多国语言最终原版(2003-2010通用)
2011-01-07 20:40:25【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表... -
EXCEL集成工具箱V8.0 多国语言版(2003-2010通用)
2010-09-11 12:08:58【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表... -
EXCEL集成工具箱V8.0完整增强版(精简)
2010-09-23 16:58:17【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表... -
EXCEL集成工具箱V6.0
2010-09-11 01:44:37【任务管理器】 增强型的系统任务管理器,提供进程的PID及路径、进程文件属性及详细说明,以及进行结束进程与删除进程及设置LEVEL等操作。 【系统功能信息】 系统功能调用及相关信息,关闭电脑、重启电脑、电脑使用... -
asp.net知识库
2015-06-18 08:45:45在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 ... -
基于手机远程控制电脑应用
2012-09-14 11:49:333、打开任务管理器 4、启动Word与Excel(输入文件路径) 5、垃圾清理(清理系统垃圾文件) 6、启动360杀毒软件 功能二:安防管理 1、禁用鼠标键盘(发现电脑被别人打开时,可以执行禁止操作命令) 2、解禁鼠标键盘... -
Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好
2011-01-28 17:02:08序并没有结束,我们可以打开windows 任务管理器,可以看到我们的程序仍在执 行。 因为return a.exec();一句表示只要主窗口界面不退出,那么程 序就会一直执行。所以只有用第一种方法,将该语句也放到if 语句中,而在... -
4.3.4 在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?为什么。 4.3.5 说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法。 ...
-
自己动手写操作系统(含源代码).part2
2010-10-18 19:47:45另外,书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件,从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中 代码的准确位置。 此外,在第二版中还有一些小的变化。首先是操作系统的... -
自己动手写操作系统(含源代码).part1
2010-10-18 19:41:25另外,书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件,从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中 代码的准确位置。 此外,在第二版中还有一些小的变化。首先是操作系统的... -
net学习笔记及其他代码应用
2010-11-16 18:15:09protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString,... -
计算机应用技术(实用手册)
2011-07-29 16:32:16识别常见病毒,病毒一般是以隐藏形式藏匿在计算机的文件中,要把文件的隐藏属性打开。每一盘都有工具这个选项,如下图所示: 49 五.常用DOS命令 60 第一章COMS的设置 开机画面现在有两种,一种为AMI公司开发的,... -
将isVideoApplication = true,就可以切换成application模块,与app主工程解绑,实际开发中,比如你负责这个模块,那么你运行的时候,直接编译该模块,不会编译整个项目而导致耗费大量时间。 同理,设置成false,...
-
Linux操作系统基础教程
2013-04-08 21:34:26在这一讲中,我们主要是了解一下 Linux 的概况,以及对 Linux 有一个初步的感性认识。 一.什么是Linux? Linux 是一个以 Intel 系列 CPU(CYRIX,AMD 的 CPU也可以)为硬件平台,完全免费的 UNIX 兼容系统,完全... -
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p 即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r 找到坏扇区并... -
亮剑.NET深入体验与实战精要2
2013-04-02 16:05:24读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例...
-
基于Qt的LibVLC开发教程
-
Linux基础入门系列课程
-
用微服务spring cloud架构打造物联网云平台
-
iptables 企业级防火墙配置(四表五链)
-
STM32F373XXDataSheet.zip
-
快速过度到程序员工作的个人总结
-
2021 PHP租车系统 毕业设计 毕设源码 源代码使用教程
-
VS2019 getline()
-
2021.2.25日报
-
程序员必修基础套餐课
-
PPTP_NNN 服务生产环境实战教程
-
阿里架构师,讲述基于微服务的软件架构模式
-
Samba 服务配置与管理
-
三大基础排序算法(冒泡排序,选择排序,插入排序)
-
计算机网络复习(第一天)
-
ASP.NET学习——用户增删改查(三层,数据库+源码)
-
spark大数据分析与实战
-
ApacheFlink漫谈系列-概述
-
常用的分布式事务解决方案
-
什么是计算机?