搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
爱喝兽奶帝天荒
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
MySQL增删改查语句
2
Mac OS Git 安装
3
yolo入门 yolov8下载安装--2024.8
4
Fal.ai Flux 1-Pro/Viva.ai/哩布哩布AI:AI绘图部分免费工具+原图提示词Prompt_flux 千问
5
大模型面经之llm在任务型对话系统中的评价指标_大模型意图识别和实体识别指标
6
High&NewTech:【2019WAIC世界人工智能大会】上海正式开幕——马化腾的AI深思、二马激辩AI_案例研究:1.2019年8月29日,waic2019世界人工智能大会正式开幕。在开幕式上,腾
7
基于深度学习的图像处理有关项目_图像相关项目如何做
8
山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十四)_基于大模型的文旅应用实践
9
深入探索 Python 的 heapq 模块:实现高效的优先队列_python heapq效率
10
MySQL5.7多主一从同步配置
当前位置:
article
> 正文
VC下揭开“特洛伊木马”的隐藏面纱
作者:爱喝兽奶帝天荒 | 2024-08-21 20:51:17
赞
踩
VC下揭开“特洛伊木马”的隐藏面纱
一、引言
“特洛伊木马”曾在网上造成很大恐慌,此类黑客程序通过欺骗手段在普通网络用户端安装木马的服务端,使用户的计算机在上网时留有后门,而黑客则可以通过这个后门对被感染的计算机随心所欲地进行监视、破坏。显然这种黑软对于普通网络用户的危害是非常严重的。
就本质而言黑客软件仍然属于应用程序,是基于套接字的网络通讯程序。因此黑客能成功攻击被感染计算机的一个非常必要的先决条件就是此时被攻击方已经有木马程序的服务端在运行。由于木马程序是一种恶意程序,能在被攻击者没有察觉的情况下悄悄启动运行为攻击者打开后门,故显然不能象其他程序一样堂而皇之的显示在任务栏和任务列表中,否则会立即为用户所察觉而将其关闭,也就失去了为攻击者提供后门的作用。本文下面就针对其隐藏程序的机理展开讨论。
二、程序在任务栏中的隐藏原理
程序在任务栏的隐藏比较简单,首先要保证程序主界面的隐藏,一般是通过修改应用程序类的初始化实例函数InitInstance()的ShowWindow()语句的SW_SHOW参数为SW_HIDE来实现的。主界面隐藏的同时任务栏虽然也会消失,但在程序启动时会闪一下,因此需要修改程序的扩展属性。一种方法是SDK的写法,即直接利用GetWindowLong()获取到当前的扩展属性然后通过逻辑运算去掉原有的WS_EX_APPWINDOW属性,并新添加一个WS_EX_TOOLWINDOW属性,这样系统会将其认为是一个工具条窗口而不会再在任务栏中加以显示。最后需要将修改过的扩展属性通过SetWindowLong()函数将其写回。这两个函数的声明分别如下:
LONG GetWindowLong(HWND hWnd,int nIndex);
LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);
另一种很简便的是MFC的写法:在程序框架类的预创建窗口函数里通过直接对CREATESTRUCT结构对象的逻辑操作而将程序属性进行改变:
cs.style=WS_POPUP;
cs.dwExStyle|=WS_EX_TOOLWINDOW;
这两种写法虽然表现形式各不相同,其本质都是一样的。
三、程序在任务列表中的隐藏原理
任务列表(Ctrl+Alt+Del时弹出的对话框)显示了当前系统正在运行的一些应用程序,如果实现了上一步,虽然在任务栏看不见程序,但有经验的用户可以通过观察任务列表而发现一些值得怀疑的应用程序而在此将其关闭。所以大多数黑软也都通过较复杂的手段实现了自身在任务列表中的隐藏,使被发现的机会大大降低。
在Win9x/2000中,一般每个应用程序都要通过一个API(应用程序接口)函数RegisterServiceProcess()向系统申请注册成为一个服务进程,并且也是通过这个函数注销其服务进程来结束这个服务进程的运行。如果一个进程注册为一个服务进程,通过Ctrl+Alt+Del就可以在任务列表里看见该进程的标题。而如果一个进程运行了但没有向系统申请注册成为服务进程那么就不会在任务列表里显示。黑软也正是利用这个原理使自身在运行时能在任务列表中实现隐藏。该函数存放于系统内核Kernel32.dll中,具体声明如下:
DWORD RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);
其第一个参数指定为一个服务进程的进程标识,如果是0则注册当前的进程;第二个参数指出是注册还是注销当前的进程,其状态分别为:RSP_SIMPLE_SERVICE和RSP_UNREGISTER_SERVICE。黑软一般是在程序启动初始化时首先从Kernel32.dll动态连接库中将RegisterServiceProcess()函数加载到内存,然后再通过该函数将程序从任务列表中隐藏:
//从Kernel32.dll中加载RegisterServiceProcess()
HMODULE m_hKernel=::GetModuleHandle("Kernel32.DLL");
RSP m_rsp=(RSP)::GetProcAddress(m_hKernel,"RegisterServiceProcess");
m_rsp(::GetCurrentProcessId(),1);//此时为隐藏,当第二个参数为0时显示
另外,还有一部分黑软是通过ShowWindowAsync()函数启动一个新的线程来显示一个新窗口的。该函数的原形为:
BOOL ShowWindowAsync(HWND hWnd,int nCmdShow);
而黑软正是钻了该函数的第二个参数可以设置窗体显示状态的空子,在设置成SW_HIDE时就可以使目标窗体(黑软)从任务列表中隐藏。
四、小结
以上就是Win9x/2000下的黑客程序所具备的一些基本功能,在此基础上我们可以借助于其实现技巧来编写出一些诸如后台监控之类的实用程序。并且可以通过对黑客类软件的隐藏机理的分析能使广大用户对此类黑软采取一些必要的措施,通过加强防范来使自己的损失防患于未然。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/1013301
推荐阅读
article
FreeRTOS
卡在
SVC
_
Handler
_
smt32f411
移植
freertos
卡在svc 0...
FreeRTOS
已经实现了
SVC
_
Handler
()和PendSV
_
Handler
()两个函数的功能,对应port....
赞
踩
article
.
Net
RabbitMQ
(
消息
队列
)...
.
Net
RabbitMQ
消息
队列
,包括
RabbitMQ
的介绍以及工作模式,
RabbitMQ
的安装教程,
RabbitMQ
...
赞
踩
article
Q
-
learning
原理及其实现方法
_
q
learning
算法
...
Q
_
learning
原理及其实现方法声明简介
Q
_
learning
算法
Q
_
learning
算法
流程声明学习博客快乐的强化学...
赞
踩
article
my
sql
profile
调试
sql
_
My
SQL
使用
profile
分析
SQL
执行状态...
my
sql
> use testDatabase changedmy
sql
> set profiling=1;Query ...
赞
踩
article
主机
安全
-
开源
HIDS
字节跳动
Elkeid
安装使用_
开源
hids
...
HIDS
( host-based intrusion detection system,基于
主机
的入侵检测系统),通过监...
赞
踩
article
【重磅】
华为
云盘
古大
模型
5.0
,正式发布!_
华为
开发者
大会gpu...
此外,
华为
诺亚方舟实验室主任姚骏、
华为
云CTO张宇昕分别就盘
古大
模型
5.0
技术解密和
华为
云全栈系统性创新发表主题演讲,详...
赞
踩
article
2023-
DataWorks
数仓
开发
手册收藏版_
dataworks
官方
文档
...
目前的
数仓
为离线
数仓
,因此
DataWorks
开发
主要涉及到离线数据集成和数据模型
开发
,因此本节也是分两部分来描述。_da...
赞
踩
article
Oracle
数据
迁移
_
oracle
整库
迁移
到新机器...
数据
迁移
通俗的说就是将
数据
从一个地方转移到另一个地方。主要使用场景有:根据正式系统搭建测试环境、从内网复制到外网、
数据
库...
赞
踩
article
Yarn
安装与使用教程_
yarn
install
--
production
...
一、官网指引英文官网:
Yarn
英文官网中文文档:
Yarn
中文文档二、
Yarn
介绍
Yarn
是 Facebook, Go...
赞
踩
article
asp
.
net
(
c#
)
数据类型
格式
转换大全...
1、DateTime 数字型 System.DateTime currentTime=new System.Date...
赞
踩
article
mac
系统
SSH
配置
_
mac
生成
ssh
...
本文介绍了在Mac系统中
配置
SSH
的步骤,包括设置git用户名和邮箱、生成
SSH
密钥,以及如何检查
配置
是否成功。作者强调...
赞
踩
article
Neo4J
:
APOC
、JDBC插件的下载与安装_
apoc
-
3.5
.0.5-
core
.
jar
...
注意:
APOC
、JDBC的版本要和neo4j的版本匹配才能正常运行,我这里
apoc
用的是
apoc
-
3.5
.0.5-all...
赞
踩
article
Github
如何
上传
代码?...
Github
如何
上传
代码? 第一步:创建
Github
新账户 第二步:新建仓库 第三部:填写名称,简介(可选),勾选In...
赞
踩
article
小马
搬运
物品
-第13届
蓝桥
杯省赛
Pytho
n
真题精选_将
n
件
物品
从河的
一岸
搬另
一岸
...
小马
搬运
物品
,本题是2022年4月23日举办的第13届
蓝桥
杯青少组
Pytho
n
编程省赛真题编程部分第4题,13届一共举办...
赞
踩
article
用
Python
下载网页
视频
...
通过
Python
的requests库,可以方便地下载网页
视频
。首先安装requests,然后使用requests.get...
赞
踩
article
python
如何实现
switch
_
python
switch
...
python
如何实现
switch
python
如何实现
switch
python
如何实现
switch
_
python
swit...
赞
踩
article
使用
Ollama
和
SingleStore
构建本地
LLM
应用程序
...
在数据隐私问题日益严重的时代,本地大型语言模型 (
LLM
)
应用程序
的开发为基于云的解决方案提供了替代方案。
Ollama
...
赞
踩
article
成绩
分析(
C++
)
_
考试
成绩
的
分布情况
c++
...
问题描述小蓝给学生们组织了一场考试,卷面总分为 分,每个学生
的
得分都是一个 到
的
整数。请计算这次考试
的
最高分、最低分和...
赞
踩
article
Jmeter
之
Beanshell
详解_
jmeterbeanshell
后置
处理器
...
本文详细介绍了BeanShell在JMeter中的使用,包括定时器、预
处理器
、采样器、后置
处理器
、断言和监听器的应用,以...
赞
踩
article
neo4j
使用
详解(十四、
索引
之搜索
性能
索引
<
索引
提示
>——最全参考)_
neo4j
性能
调优
关系
索...
计划器
提示
用于在为查询构建执行计划时影响计划器的决策。规划器
提示
在
使用
USING关键字的查询中指定。强制计划器行为是一个...
赞
踩
相关标签
freertos
error/warning
.net
rabbitmq
分布式
RL
Q_learning
mysql profile 调试sql
安全
开源
华为云
华为云盘古大模型
华为开发者大会2024
华为云开发者联盟
人工智能
大模型
数据仓库
数据库
数据挖掘
DataWorks数仓开发手册
yarn
asp.net
c#
string