搜索
查看
编辑修改
首页
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
【数据结构】插入排序 — 希尔排序_插入排序 希尔排序
2
Flink SQL对于window aggregation的优化_aggregation 优化
3
游戏AI--决策(1)_决策类游戏ai公式
4
Ubuntu 安装JDK,Mysql,Nginx 配置环境_ubantu nginx 配置ssh
5
MySQL安装使用详解 Centos环境_mysql linux
6
爬取94神马网的电影信息
7
英特尔终于宣布了解决CPU崩溃和不稳定性问题的方法,声称过高的电压是根本原因;补丁预计将于8月中旬推出【更新】_英特尔烧心问题解决没
8
wordpress转移 将网站从A转入到B服务器,数据迁移,网站迁移_wordpress转移服务器
9
【云原生之Docker实战】使用Docker部署Syncthing同步程序及基本使用_docker syncthing
10
AI人工智能在建筑智能化工程设计领域的应用
当前位置:
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
第11届
蓝桥
杯
省赛
真题剖析-2020年6月
21
日
Scratch
编程
初中级组_
蓝桥
杯
2020年
省赛
sc...
第11届
蓝桥
杯
省赛
,这是2020年6月
21
日举办的
省赛
Scratch
考试真题,原定于2020年3月7日的比赛因为疫情推迟...
赞
踩
article
OpenTiny
HUICharts
开源
发布,带你了解一个简单、易上手的
图表
组件
库
...
目前
OpenTiny
HUICharts
已经成功落地在华为内部100多个产品中,持续提升了用户的可视化体验。Open...
赞
踩
article
《
数据结构
(
C语言
版)第二版》
第六章
-
图
(
6.6
图
的应用——
6.6
.1
最小
生成
树)...
32767100。《
数据结构
(
C语言
版)第二版》
第六章
-
图
(
6.6
图
的应用——
6.6
.1
最小
生成
树) ...
赞
踩
article
C
C++
调试
总结:IDE(
visual
studio
和Dev C+,这篇文章
可以
满足你80%日常工...
Catchpoint 3 (exception thrown), 0x00007ffff7e81762 in __cxa...
赞
踩
article
仅用3年
,
狂揽国内
70%
的
软件
市场
,
低
代码
已成气候!...
宣称不需要申请应用、
代码
库、线上运维
,
甚至不需要开发、测试
,
整体效率就可提升10倍、业务人员在不依赖于技术团队
的
情况下
,
...
赞
踩
article
Android
adb
shell
svc
知识详解_
svc
usb
...
这个命令可以用来控制电源管理,wifi开关,数据开关(就是上网流量),注意需要root权限。有兴趣的可以一起学习一下。_...
赞
踩
article
Neo4j
使用指南_
neo4j
-
admin
memrec
详解...
Neo4j
-Cheat-Sheet_
neo4j
-
admin
memrec
详解
neo4j
-
admin
memrec
详解 ...
赞
踩
article
算法
时间
复杂度
_
算法
的
时间
复杂度
与
待处理
数据
的
初试形态有关吗...
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O...
赞
踩
article
六、
yolov8
tensorRT
c++
语义分割
推理
(保姆级教程&附源码)
_
c++
推理
yolo...
本文详细介绍了YOLOv8模型在TensorRT下进行C++语义分割的
推理
过程,包括初始化引擎、图片预处理、前向处理和后...
赞
踩
article
微软
7
月
补丁
星期二
修复1
4
2个
漏洞
,含
4
个
0day
...
聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士微软在
7
月
补丁
星期二
供修复了1
4
2个
漏洞
,其中2个是已遭利用
漏洞
,2个...
赞
踩
article
C++
多线程
实例_
c++
多线程
编程实例...
本文提供了一个在Ubuntu16.04环境下,利用
C++
11标准库`thread`实现
多线程
的实例。在编译时需特别注意添...
赞
踩
article
【
强化
学习
Q-
Learning
算法
学习
笔记】概念整理+实例+代码解释+
ppt
_q-
learning
算...
1.
强化
学习
介绍2.Q-
Learning
算法
实例3.一个Q-
Learning
算法
的程序实现_q-
learning
算法
pp...
赞
踩
article
Neo4j
Cypher
语法(三)_
cypher
聚合
函数
...
目录5
函数
5.1 谓词
函数
5.2 标量
函数
5.3
聚合
函数
5.4 列表
函数
5.5 数学
函数
5.6 字符串
函数
5.7 U...
赞
踩
article
一篇
文章
教你掌握
—
—
Pytorch
深度
学习
实践基础
_
pytorch
入门...
Infer 推理;Prediction 预测。
_
pytorch
入门
pytorch
入门 ...
赞
踩
article
《
ESP
8266
通信
指南》7-
Arduino
开发
8266
的环境配置与示例代码烧录_
esp
8266
开...
本文详细介绍了如何安装
Arduino
IDE,设置
ESP
8266
开发
环境,包括下载、解压、驱动安装、中文设置,以及如何配置...
赞
踩
article
【
MYSQL
】
表
的
设计
_
mysql
表
设计
...
表
的约束,
表
的
设计
_
mysql
表
设计
mysql
表
设计
...
赞
踩
article
浅谈Dev
c++
调试
...
调试
浅谈Dev
c++
调试
浅谈
调试
何为
调试
及为什么...
赞
踩
article
GitToolBox
插件安装与
使用指南
...
GitToolBox
插件安装与
使用指南
GitToolBox
GitToolBox
IntelliJ plugin项目地...
赞
踩
article
3ds
Max
导出
fbx
贴图
问题简单记录_
3dmax
导出
fbx
带
贴图
...
工作中发现
3ds
Max
导出
的
fbx
在其它软件(Autodesk viewer,blender,navisworks,F...
赞
踩
article
ARM
Cortex M4
SVC
指令
作用_
svcge
指令
...
(1)
SVC
指令
:摘自 http://infocenter.arm.com/help/index.jsp?topic=/...
赞
踩
相关标签
蓝桥杯
算法
少儿编程竞赛
scratch
开源
OpenTiny
前端
组件库
图表
数据结构
c语言
c语言版
开发语言
ide
c++
腾讯
java
人工智能
编程语言
大数据
android
adb
图数据库
Neo4j
guidance