对一个注册表项的粗略分析

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
Author:   tombkeeper
Email:    tombkeeper@whitecell.org

[HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options]

    注册表的这个项大家可能还不太熟悉,因为这个主要是用来调试程序用的,对一般用户
意义不大。默认是只有管理员和local system有权读写,一般user只读。

    先做个实验:在这个项下新建一个子项“test.exe”,再建一个字串值“Debugger”,
数值数据设为“cmd.exe /c echo”,随便把一个EXE文件改名为“test.exe”,然后在命令
行调用“test.exe”,得到的屏幕输出不是test.exe的输出,而会是这样:

E:/>test
test

E:/>test.exe
test.exe

    Windows NT系统在执行一个从命令行调用的可执行文件运行请求时,首先会检查这是否
是一个可执行文件,如果是,又是什么格式的,然后就会检查是否存在:

[HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/ImageName]

    如果存在,首先会试图读取这个键值:

[HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/ImageName]
"Debugger"="debug_prog"

    如果存在,就执行“debug_prog ImageName”,刚才的例子中,其实系统真正执行的是:

cmd.exe /c echo test
cmd.exe /c echo test.exe

    如果“debug_prog”设为一个不在搜索路径中的程序,会得到一个很有趣的提示:“系
统找不到文件 E:/test.exe”。而事实上test.exe就在当前目录下,这里所谓找不到的其实
是那个“debug_prog”。而只要设置了test.exe这个项,既使test.exe不存在,也不会提示
“系统找不到文件”,控制台上不会返回任何输出。

    系统在运行任何一个可执行程序时都会先检查这个键值。这个特性可以被用来放置后门。
这一点,在以往的Windows 安全资料中尚未提到过。如果你有一个Windows 2000安全检查列
表,请把它加进去。

    这个项支持的值,在Windows 2000下我找到的有:

ApplicationGoo
Debugger
PageHeapFlags
DisableHeapLookAside
DebugProcessHeapOnly
PageHeapSizeRangeStart
PageHeapSizeRangeEnd
PageHeapRandomProbability
PageHeapDllRangeStart
PageHeapDllRangeEnd
GlobalFlag
BreakOnDllLoad

    这些项的工作都只与文件名有关,与路径无关。

    其中,Debugger上面讲过了。DisableHeapLookAside可以用来纠正一些应用程序运行时
的问题。从Windows NT SP4开始,Windows 系统使用了新的堆(heap)管理机制,新的动态
内存分配使得应用程序占用更少的内存(也使写Exploit更加困难:-)),但是也有些应用程
序在这种机制下无法正常运行,会挂起或出错。这种情况下,以该文件名建一个项,并把
DisableHeapLookAside 设为“1”,会强迫系统对此应用程序不使用新的堆管理机制。(基
于一般系统的堆溢出 Exploit,在应用程序改变了运行方式后是不是会失效?那么,对关键
程序使用这一手段,在某种意义上,也是一种抵御溢出攻击的方法。)

    关于DisableHeapLookAside更多的信息请参考微软知识库:Q252902,Q195008,Q195009。

    有趣的是,Windows 2000在安装的时候,就预设了这几个文件名的DisableHeapLookAside:

        enc98.EXE
        f32main.exe
        prwin8.EXE
        ps80.EXE
        qfinder.EXE
        qpw.EXE
        ua80.EXE
        wpwin8.EXE

    大概是微软收到了有关这些应用程序运行异常的报告吧:-)。

    BreakOnDllLoad 是用来调试DLL的,譬如某个ISAPI。可以在DLL刚一装入就设置断点。
可以参考Rick Strahl的《Debugging IIS5 ISAPI Applications with VC++》

    ApplicationGoo我没有找到相关资料,但从微软预设的值来看,这个项里存放的是文件
的版本信息。我猜想是否用这个来匹配特定版本的文件。

    剩下来的这几个值虽然我知道它们是确实存在的,却无法找到任何有关的资料,甚至在
MSDN里也只字未提,还好它们的名称基本上已经把用处说清楚了:-),都是用来控制heap 的。
希望这几个值对正在埋头研究Windows堆溢出的朋友们能有一点点帮助。


附加信息:

在XP中,这个项下面还支持ShutdownFlags这个值。下面是微软的描述:

Leak Detection when the Process Is Exiting

Leak detection is made every time a process is cleanly exiting.
It doesn't work if the process is terminated with TerminateProcess()
or TerminateThread() / ExitThread() for the last thread in the process;
but for most applications this is not a problem.

To enable leak detection when the process is exiting, set the registry key as follows:

[HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/ImageName]
"ShutdownFlags"="3"

    由于本人水平有限,加上这方面的资料严重匮乏,文中肯定有不少问题;还有那几个未
完全搞清的值,也有待进一步分析,欢迎大家写信到:
tombkeeper@whitecell.org
映像劫持(Image File Execution Options)的解决方案 这几天一直想要把这个经验写一下,总没抽出时间,晚上加加班。样本已经被杀毒U盘的监控干掉,本文回忆下修复过程。 现象: 一媒体朋友的笔记本染毒,杀毒软件起不来。开机就弹出若干个窗口,总也关不掉,直到系统内存耗尽死机,安全模式也是同样的现象。无奈之下,尝试重装系统,不过,因为不少人都知道的原因 ,她只是格式化了C分区,系统重装后,访问其它分区后,再次出现重装前的中毒症状。... 阅读详情

相关推荐

玩转注册表

很多人都认识注册表,但是几乎没人搞懂过注册表。我来带大家玩转注册表,做这篇文章就想记录一下注册表里的一些路径(难找,记不住!),本文中我会介绍一些实用的利用注册表进行内网权限维持的一个思路和方法。没学网安的,会更了解注册表;大佬就复习复习怎么进行权限维持吧!

m0_61368098的博客 2455

利用AI+大数据的方式分析恶意样本(三十)

一篇USENIX 2021关于利用AE和聚类两层次方法识别恶意函数的文章

至臻求学,胸怀云月 1034

木马启动之映像劫持

木马运行的原理其实很简单

COSMOSJie的博客 607

注册表 Image File Execution Options 项的作用及使用办法

<br />  Image File Execution Options<br />   跳转到键值<br />   HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options<br />   在里面添加一个新键值,使用一个你想欺骗的执行文件的名字,好比notepad.exe <br /><br />   注意到在‘Image File Execution Optio

fogeater的专栏 9484

映像劫持技术

映像劫持技术

whl0071的专栏 1348

一个注册表项粗略分析(WSS-Articles-02010)

一个注册表项粗略分析(WSS-Articles-02010)创建时间:2002-05-28文章属性:原创文章来源:WSS文章提交:tombkeeper (tombkeeper_at_126.com)Author:   tombkeeperEmail:    tombkeeper@whitecell.orgHomepage: http://www.whitecell.org Date:    

FreeXploiT 1800

一个注册表项粗略分析Image File Execution Options

[HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options]# G, @) c- ?9 t9 y& o2 G5 g/ k5 E3 @8 [, g    注册表的这个项大家可能还不太熟悉,因为这个主要是用来调试程序用的,对一般用户) O8 a7 X% J% L& N意义

Lapple的专栏 1502

python输出一个月日历表_用python创建一个包含事件的一个月日历

我想创建一个一个月的日历,我可以打印出来,并交给普通人,已经有事件。在我想做一些类似于WinCalendar所做的事情。我会用那个程序,但评论提到了粗略的DLL、注册表项和启动默认值。难道不应该有一个python库来做这件事吗?在我可以使用matplotlib创建我想要的东西,如下所示。在import calendarimport matplotlib.pyplot as pltcalendar....

weixin_39775896的博客 369

qq自动传文件病毒变种分析及手工查杀一例

信息来源:邪恶八进制信息安全团队([url]www.EvilOctal.com[/url]) 文章作者:EvilOctal [E.S.T] 昨天晚上接到伊天姑娘传过来的一个qq自动传输文件病毒体的变种 于是赶在今天晚上用了一些时间做了分析和抓图以 及手工查杀测试 成功了所以总结给大家 首先 被此病毒感染的现象分析如下: 1 病毒伪装成JPG文件的图标 但...

weixin_34055787的博客 1125

20165214 2018-2019-2 《网络对抗技术》Exp4 恶意代码分析 Week6

《网络对抗技术》Exp3 免杀原理与实践 Week5 一、实验目标与内容 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。 1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对...

weixin_30847271的博客 223

Windows系统更新捆绑软件问题分析与解决方案

系统更新过程中捆绑安装软件是Windows用户常见的技术痛点,这类问题通常涉及PUP(潜在不受欢迎程序)和广告软件的技术原理。这些程序通过修改注册表、注入后台服务等方式实现持久化驻留,不仅占用系统资源,更可能引发安全风险。从工程实践角度,可以通过注册表审计、进程监控和网络连接分析等技术手段进行检测。针对老设备性能优化,建议结合内存管理、磁盘碎片整理等系统级调优方案。本文以Windows 10/11系统为例,详细演示了如何彻底卸载捆绑软件并建立长期防护机制,特别适合IT运维人员和注重系统性能的技术爱好者参考。

weixin_30219613的博客 293

恶意软件逆向分析实战:从Acid Burn样本拆解到系统化方法论

逆向工程是理解软件内部工作机制、分析潜在安全风险的核心技术。其原理在于通过静态与动态分析手段,将编译后的二进制代码还原为可理解的逻辑,从而洞察程序行为。这项技术的价值在于能够有效应对恶意软件、漏洞分析、软件保护等安全挑战,是威胁情报提取和防御策略制定的基础。在实际应用场景中,安全研究人员常需对未知样本进行系统性解剖,以掌握其功能、通信机制及对抗手法。本文以近期引发关注的“Acid Burn”样本为切入点,详细阐述了从环境搭建、工具链准备,到静态分析、动态调试及核心功能还原的完整实战流程,并分享了针对反调试、

stevenbill的博客 342

刚做服务器时的初学笔记

学习笔记1:Inno Setup 编译器 5.4.3 周一 看Example1.iss,主要是显示如何复制3个文件并创建一个图标。 安装字段: AppName是必须的,安装程序标题,始终在安装过程中显示在安装屏幕的左上角以及安装向导中。 AppVersion是必须的且在没有设定AppVerName的值时不能为空,安装程序版本号,显示在添加/删除程序里,可以在卸载注册表项的时候指定最大

tianalotus的专栏 804

恶意软件逆向与流量解密实战:从静态分析到动态调试的完整攻防解析

恶意软件分析是网络安全领域的核心技术之一,涉及对恶意代码的行为、意图和通信机制进行深度剖析。其核心原理在于通过静态逆向工程解析程序逻辑,结合动态调试监控运行时行为,从而揭示恶意软件的内部工作机制。这项技术的价值在于能够有效识别高级威胁,如APT攻击中使用的自定义加密通信,为事件响应和威胁狩猎提供关键线索。在实际应用场景中,安全研究人员常需要将逆向工程得到的加密算法与网络流量分析相结合,对捕获的加密流量进行解密,以还原攻击链。本文聚焦于CTF竞赛和实战中常见的“恶意软件逆向与流量解密”挑战,详细介绍了如何通过

weixin_30698297的博客 566

如何给电脑装一个系统级均衡器:Equalizer APO 实战指南

Equalizer APO 是一款免费开源的系统级均衡器,作用于 Windows 音频驱动层,让所有应用共用同一套滤波。一份纯文本配置就能改低频、提对白,还能配合房间测量自动生成校正曲线。 ## 它凭什么管住所有软件的声音 Windows 的声音管道大致是:每个应用把音频流交给 Windows 音频服务,混音后送进声卡驱动,再到达耳机或音箱。APO(Audio Processing Objec

gitblog_00101的博客 157

Notepad++右键菜单失效?三步排查NppShell.dll问题(附官方文件下载)

本文针对Notepad++右键菜单失效问题,提供了从原理到实践的深度诊断与修复指南。核心在于排查NppShell.dll文件状态、手动注册及权限诊断,并提供了自动化修复脚本方案,帮助用户快速恢复右键菜单功能,提升工作效率。

ujm56789012的博客 229

Windows安装错误1603全解析:从原理到实战排查指南

Windows系统部署软件时,安装失败是常见的运维挑战。Windows Installer(MSI)作为微软官方的安装技术框架,其核心原理是通过事务性操作确保安装的原子性——要么完全成功,要么彻底回滚。错误代码1603正是这一机制的关键体现,它并非单一错误,而是安装引擎在执行阶段遇到无法处理的障碍时触发的通用回滚信号,具有极高的技术诊断价值。在工程实践中,该错误常与权限不足、系统资源冲突、依赖库缺失等底层问题相关联,直接影响Java运行时、Autodesk PowerMill等专业软件的部署效率。通过系统

weixin_34241036的博客 284

智能VC++运行库管理器:原理、实现与一键修复方案

Visual C++ Redistributable(VC++运行库)是Windows系统中支撑C++应用程序运行的核心组件,其本质是一组由微软提供的共享动态链接库(DLL)。其工作原理在于,开发者将程序依赖的公共代码封装在这些运行库中,用户安装后,多个应用程序即可共享调用,避免了每个程序都携带相同代码的冗余。这项技术的核心价值在于保障了软件生态的兼容性与运行效率,但版本碎片化、安装残留等问题常引发“DLL地狱”,导致程序报错如“0xc000007b”或“丢失VCRUNTIME140.dll”。在应用场景上

weixin_33778544的博客 335
上一篇: 注册表修改——主菜单
下一篇: 利用%5c绕过验证
scrub
博客等级 码龄22年 8粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值