注入winlogon

一个注入winlogon的程序的代码,学习API用  Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function ReadProcessMemory Lib "k 阅读详情
 要将hook注入winlogon进程需要特定权限,要在localsystem权限下运行

NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。在WinLogon初始化时,就向系统注册截获CTRL+ALT+DEL消息,所以其他程序就无法得到CTRL+ALT+DEL的消息。
WinLogon会和GINA DLL进行交互,缺省是MSGINA.DLL(在System32目录下)。微软同时也为我们提供的接口,自己可以编GINA DLL来代替MSGINA.DLL。
WinLogon初始化时会创建3个桌面:
(1)、winlogon桌面:主要显示window 安全等界面,如你按下CTRL+ALT+DEL,登陆的界面等
(2)、应用程序桌面:我们平时见到的那个有我的电脑的界面
(3)、屏幕保护桌面:屏幕保护显示界面。
在用户登陆以后,按下CTRL+ALT+DEL键的时候,WinLogon回调用GINA DLL的输出函数:WlxLoggedOnSAS,
这时正处于winlogon桌面,我们只要直接将他转向应用程序桌面,系统就不会显示Windows安全那个界面,换一种说法
也就是用户按下CTRL+ALT+DEL后,不会起什么作用。当是我们在切换桌面的时候会出现屏幕闪动!

二、程序实现

GINA DLL要输出下列函数(winlogon会调用)
WlxActivateUserShell
WlxDisplayLockedNotice
WlxDisplaySASNotice
WlxDisplayStatusMessage
WlxGetStatusMessage
WlxInitialize
WlxIsLockOk
WlxIsLogoffOk
WlxLoggedOnSAS
WlxLoggedOutSAS
WlxLogoff
WlxNegotiate
WlxNetworkProviderLoad
WlxRemoveStatusMessage
WlxScreenSaverNotify

WlxShutdown
WlxStartApplication
WlxWkstaLockedSAS

为了简化编程,我们从MSGINA.DLL中动态获取上诉函数,在自定义的DLL中(以下称为NoReboot.DLL)中直接调用MSGINA.DLL
的函数即可。现在我们要处理的就是WlxLoggedOnSAS函数:
int WINAPI WlxLoggedOnSAS (
PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved)

{

HANDLE hMutex;
WriteInfo("WlxLoggedOnSAS /r/n"); //用于记录信息
if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL){ //屏蔽CTRL_ALT_DEL,也可以根据特定条件来决定是否要屏蔽
//我采用了Mutex来控制是否屏蔽,(注意:要用unicode)
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"_ac952_z_cn_CTRL_ALT_DEL");
if (hMutex){
CloseHandle(hMutex);
WriteInfo("disble CTRL+ALT+DEL /r/n");
return WLX_SAS_ACTION_NONE; //将屏幕切换到应用程序桌面,屏蔽掉CTRL+ALT+DEL
}
else
WriteInfo("not disble CTRL+ALT+DEL /r/n");
}
return prcWlxLoggedOnSAS ( //这是我从MSGINA.DLL中获取的函数。
pWlxContext,
dwSasType,
pReserved);
}

我们要在自己的程序中调用hMutex = CreateMutex(NULL, FALSE, "_ac952_z_cn_CTRL_ALT_DEL");就可屏蔽CTRL+ALT+DEL。

三、安装和注意事项:

在编写GIAN DLL中要注意,GINA DLL使用的是unicode。
GINA DLL的安装:
键名 : /HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Winlogon
变量名 : GinaDLL
变量类型 : [REG_SZ]
内容 : "你的GINA DLL的名称" 如:"NoReboot.DLL:
将你的GINA DLL(NoReboot.dll)拷贝到系统目录下(system32),重启机器,你的GINA DLL(NoReboot.dll)就会运行。
如果出现进不了你的系统,那你进入DOS后,将msgina.dll拷贝成你的GINA DLL(NoReboot.dll)就可进入了,或者进入
安全模式,删除掉那个键值

“Winlogon通知包(Winlogon Notification Package)”就是处理winlogon在切换状态时发出的事件的DLL。你可以通过“Winlogon Notification Package”来监视winlogon事件的响应。你可以注册这些DLL,那么winlogon.exe会在启动时加载它们,并且会在系统状态切换时来调用注册DLL的事件处理函数。当然这一点用来加载后门是在好不过了,因为加载的后门存在于winlogon.exe的进程中,而winlogon.exe是系统进程,一般情况下是无法终止它的,况且杀死它会导致系统崩溃或重启,没人会这么做。用“Winlogon Notification Package”来加载后门的又一个好处是——你的后门将运行在system权限下而不用注册为系统服务。

为了注册你的“Winlogon Notification Package”,必须在“HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Winlogon/Notify”下创建你的“notification package”子键。在我的系统中,存在6个子键,分别是:crypt32chain,cryptnet,cscdll,sclgntfy,SensLogn,termsrv。在“Notify”项下,可以根据需要创建如下键值:

Asynchronous[REG_DWORD]:表明是否异步处理winlogon事件,如设为 1,winlogon将启动一个新线程来处理。
DllName[REG_EXPAND_SZ]:指定要加载的DLL名。
Impersonate[REG_DWORD]:表明是否以登陆用户的权限来处理事件。
Lock[REG_SZ]:锁定桌面事件。
Logoff[REG_SZ]:注销事件。
Logon[REG_SZ]:登陆事件。
Shutdown[REG_SZ]:关机事件。
StartScreenSaver[REG_SZ]:启动屏保事件。
StartShell[REG_SZ]:启动shell(一般指explorer.exe)事件。
Startup[REG_SZ]:系统开机事件。
StopScreenSaver[REG_SZ]:停止屏保事件。
Unlock[REG_SZ]:解除桌面锁定事件。

其中每个事件对应DLL中的一个导出函数,即每当有事件发生时,winlogon.exe便调用相应的函数。譬如:DllName的值为“test.dll”,Logoff的值为“testlogoff”,那么系统注销时winlogon.exe将调用test.dll中导出的“testlogon”函数。

关于DLL的实现非常地简单:只要导出处理事件是要调用的函数就行,其他和别的DLL无异。以下是代码的简单实现:

//----------------------------------Start of WNP.C-------------------------------------------
/*Create file exports.def with content:
EXPORTS
testlogoff
testlogon
*/
#include <windows.h>
#pragma comment(linker,"/export:test=_testlogoff@0")
#pragma comment(linker,"/export:test=_testlogon@0")
#pragma comment(linker,"/entry:DllEntry")
#pragma comment(linker,"/subsystem:windows")
#pragma comment(linker,"/align:4096")
#pragma comment(linker,"/dll")
#pragma comment(linker,"/base:1976369152")

__declspec(dllexport) void __stdcall testlogoff(DWORD unknow)
{
MessageBox(NULL,"系统正在注销!","Winlogon Notification Package",MB_OK);
}

__declspec(dllexport) void __stdcall testlogon(DWORD unknow)
{
MessageBox(NULL,"系统正在登陆!","Winlogon Notification Package",MB_OK);
}

BOOL __stdcall DllEntry(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:break;
case DLL_THREAD_ATTACH:break;
case DLL_THREAD_DETACH:break;
case DLL_PROCESS_DETACH:break;
}return TRUE;
}
//----------------------------------End of WNP.C---------------------------------------------

将编译好的test.dll复制到系统文件夹,修改注册表并重启后,发现C:/WINNT/system32/test.dll已经成功加载到winlogon.exe进程中

拦截系统关机与注入Winlogon:从注册表到RPC的攻防演进(中) 本文深入探讨了Windows系统关机拦截技术的演进历程,从早期的注册表修改到API挂钩,再到现代PPL保护机制下的RPC调用拦截。详细分析了Winlogon进程在关机流程中的核心作用,并提供了技术实现细节,帮助开发者理解系统底层安全机制与攻防对抗的演进趋势。 阅读详情

相关推荐

【超级鼠标键盘锁】之远线程注入winlogon.exe进程屏蔽Ctrl+Alt+Del、Win+L

通过上一节对进程的调试,得到了其处理和Win+L按键的关键代码位置偏移,并阐述了如何对指令进行修改,从而达到屏蔽这两个按键。本节采用远线程注入技术进行实现。

m0_67194883的博客 353

Winlogon、LSASS、Userinit

转载自:https://blog.youkuaiyun.com/chenyujing1234/article/details/8028222 一、 Winlogon登录过程(\Windows\System32\Winlogon.exe)处理交互式用户登陆和注销,当安全注意序列(SAS,Secure Attention Sequence)组和键被按下时,Winlogon就会接到一个用户登陆请求。 一旦用户...

ayang1986的专栏 2160

远线程注入Winlogon屏蔽Ctrl+Alt+Delete附源代码(转).doc

远程注入的相关技术,以及方法。节选自学校的论文。

屏蔽系统热键/关机/注入 Winlogon(上)

本文主要讲解关于挂钩Winlogon过程,实现对任务管理器电源操作DWM 自启动控制、常见系统热键等进行编程拦截。最后,我们指出可以通过我们的方法修改系统登陆或者其他安全页面的界面样式,达到自定义的效果。这里主要涉及 R3 用户层下的挂钩,如果是 R0,有些操作可能更为简单。这是之前编写的一篇文章,一直没有发布,最近得空完善了一下。【提示】

溡漪幽博客 3243

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2208

闲人闲谈PS之一项目库存跨公司业务STO解决方案--SAP闲人的开篇

写这篇文章之前,简单说一下发这篇文章的动机。也算是在SAP这一行干了快10多年,在对一个模块了解越来越深入,越发觉自己的SAP知识浅薄。总的来说,和多数顾问一样,对于**标准功能**的应用业务场景理解还是存在或多或少的知识盲区。 因为一个偶然,看到SAP团子君的文章,分享了很多干货文章。这也是自己一直想做的时候,不管水平高低与否,分享本身就意味着提升。好了废话不多说,先在优快云上发一篇吧,困惑自己将近10年的问题的解决方案。 业务场景:在项目型企业中,通常会有这样的业务,母公司和客...

SAP闲人的博客 9269

winlogon通用控制对话:winlogon.exe-应用程序错误

昨天碰到一起问题,说来惭愧还是第一次遇到。一开机过了自检,过了滚动条,来了欢迎使用那个蓝色背景要登录账户输完密码以后桌面就出现一个提示:winlogon通用控制对话:winlogon.exe 应用程序错误,什么内存不能为read的。最后一次正确的配置和安全模式也都无法进入,着实让人有点头痛。来宾账户启用可以进入凭经验,估计要么中毒,要么系统文件破坏。winlogon这...

weixin_33755557的博客 846

谷粒商城学习笔记-15-数据库初始化

这一节的主要内容是把创建对应的数据库和数据库表。

epitomizelu的专栏 1439

模拟window桌面实现

 正在开发中的游戏有个全屏功能--可以在window桌面背景上运行,就像一些视频播放器在桌面背景上播放一样的,花了个上午整了个Demo放出来留个纪念。实现功能:显示图标,双击图标执行相应的程序,右击图标弹出该图标对应得菜单,点击非图标区则弹出桌面菜单。需要完整工程可以点此下载:DesktopWindow.rar。程序效果图如下: 在这个程序里,定义了一个XShellItem的数据结

飘飘白云 3213

【SAP中的框架协议】

在SAP中,框架协议(Framework Agreement) 是企业与供应商签订的长期采购约束文件,用于简化重复性采购流程、锁定交易条款并降低管理成本。

m0_73548864的博客 1299

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2933

注入Winlogon进程示例代码

注入Winlogon进程示例代码作者:未知   来源:本站整理    更新日期:2006-11-09    浏览次数: “Winlogon通知包(Winlogon Notification Package)”就是处理winlogon在切换状态时发出的事件的DLL。你可以通过“Winlogon Notification Package”来监视winlogon事件的响应。你可以注册这些DLL,那么wi

jingzu的专栏 1603

4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 方法实现指南

首先第19行CREATEDATA创建er_entityset实例,指定其类型为zcl_zbook_manage_mpc=>tt_book,接着把这个引用映射到刚刚第五行定义的FIELD-SYMBOLS变量上去,这样的话,接下来我们对FIELD-SYMBOLS进行的操作,就会自动反应回引用变量er_entityset.因为我们可能在这个方法里,返回多条图书信息,所以需要用内表类型,而非单条记录的ts_book.ts_book代表一本图书的数据结构。......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2963

基于visual c++之windows核心编程代码分析(54)实现Winlogon注入dll

Windows Logon Process,Windows NT 用户登陆程序,管理用户登录和退出。该进程的正常路径应是 C:\Windows\System32 且是以 SYSTEM 用户运行.我们都知道操作系统都是基于权限,而权限都是基于用户的,而这个winlogon进程就是管理用户登入登出,是不可以被结束的。winlogon是一个父进程,大多数的进程都是winlogon的子进程,如MDM.EX

尹成的技术博客 4649

数字电路逻辑与设计实验一 门电路逻辑功能及测试

(1)选二输入四异或门电路 74LS86,按图 1-8 接线,输入端 1、2、4、5 接逻辑开 关(S1~S4),输出端 A、B、Y 接电平显示发光二极管.用六反相器(非门)按图 1-11 接线,输入 80KHz 连续脉冲,用双踪示波器测输入, 输出相位差,计算每个门的平均传输延迟时间的 tpd 值。测试不同的输入组合:对门电路进行全面的测试,尝试不同的输入组合,包括各种可能的逻辑状态。检查门电路的输入:确认门电路的输入是否正确,并且输入信号的电平符合门电路的规格要求。确保输入信号的稳定性和准确性。

欢迎交流学习心得 2万+

2025年GESP3月认证C++五级真题解析

小 A 有 2n 件物品,小 B 和小 C 想从小 A 手上买走这些物品。对于第 i 件物品,小 B 会以 bi 的价格购买,而小 C 会以 ci 的价格购买。对于所有测试点,保证 1 <= T <= 100, 2 <= g < p <= 10^9, g, p 为整数, p 为质数。对于所有测试点,保证 1 <= n <= 10^5, 0 <= bi, ci <= 10^9, bi, ci 为整数。对于另外 50 % 的测试点,保证 n <= 100000, 0 <= bi, ci <= 10^9。

lan_in的博客 1036

远线程注入Winlogon屏蔽Ctrl+Alt+Delete

为了屏蔽Ctrl+Alt+Delete这个功能,花了不少时间,也学了不少东西,也经历了本本被偷的悲剧,哎~代码都是从DSK V1 Final中抠出来的,而且我把远线程注入写成了一个Class。DLL用的是MFC的Dynamic-Dll   其实,如果你选择WH_KEYBOARD HOOK,那么提到SE_DEBUG之后,OS会帮你把DLL注入到Winlogon,免去了自己使用

170

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

注入Winlogon进程示例代码 - [编程学习]

注入Winlogon进程示例代码 - C语言

xinshi9608的专栏 2418

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

屏蔽系统热键/关机/注入 Winlogon(中)

系列文章主要讲解关于挂钩Winlogon回调过程,实现对任务管理器电源操作DWM 自启动控制、常见系统热键等进行编程拦截。最后,我们指出可以通过我们的方法修改系统登陆或者其他安全页面的界面样式,达到自定义的效果。这是之前编写的一篇文章,一直没有发布,最近得空完善了一下。本篇从 RPC 挂钩角度实现热键拦截。我曾阅读过heiheiabcd写的通过修改具体的窗口回调中的操作 ID,将其指向无效的 ID 来拦截系统热键的方法(《禁止Ctrl+Alt+Del、Win+L等任意系统热键》

溡漪幽博客 3255

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

对winlogon进程的hook

 原始链接:http://hi.baidu.com/tedasnow/blog/item/3a8b38d341b525003af3cfb6.html 要将hook注入winlogon进程需要特定权限,要在localsystem权限下运行。NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的,GINADLL提供了一个交互式的界面为用户登陆提供认证请求。在

InkSnail的专栏 3149

屏蔽系统热键/关机/注入 Winlogon(下)

系列文章主要讲解关于挂钩Winlogon回调过程,实现对任务管理器电源操作DWM 自启动控制、常见系统热键等进行编程拦截。最后,我们指出可以通过我们的方法修改系统登陆或者其他安全页面的界面样式,达到自定义的效果。这是之前编写的一篇文章,一直没有发布,最近得空完善了一下。本篇从 RPC 挂钩角度实现热键拦截。我曾阅读过heiheiabcd写的通过修改具体的窗口回调中的操作 ID,将其指向无效的 ID 来拦截系统热键的方法(《禁止Ctrl+Alt+Del、Win+L等任意系统热键》

溡漪幽博客 1618

远程线程注入技术 屏蔽ctrl alt del

远程线程注入技术 屏蔽ctrl alt delbooks  发表于: 2007-08-18 11:58  来源:转载     浏览:(40)  评论:(2)收藏 | 复制地址 |      大 中 小 |  引用 删除 修改概要 此文章的信息来自优快云论坛VC/MFC版的讨论  在NT/2000中怎么禁用Ctrl+Alt+Delete?(不能用gina,键盘驱动)  在Windows2000中C

jingzu的专栏 1776

在winlogon桌面显示窗口

转自:http://blog.youkuaiyun.com/xisat/archive/2009/02/23/3926957.aspx  先看看两张图 实现起来并不复杂常规方法有1 .替换gina.dll彻底,但是有数字签名的困惑,个人还是不要用了2. 在system权限下切换入/winlogon桌面显示窗口下面要介绍的就是这个3.注入winlogon.exe

mergerly的专栏 4184
上一篇: Delete a file in use - Run an EXE Hidden - Run code in other process' memory)(vb)
下一篇: 如何监视正在使用su 命令的用户
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值