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

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

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


创建时间:2002-05-28
文章属性:原创
文章来源:WSS
文章提交: tombkeeper (tombkeeper_at_126.com)

Author:   tombkeeper
Email:    tombkeeper@whitecell.org
Homepage: http://www.whitecell.org
Date:     2002-05-27



[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
或者访问:
http://www.whitecell.org/forums
把你的发现告诉我。


关于我们:

    WSS (Whitecell Security Systems),一个非营利性民间技术组织,致力于各种系统安
全技术的研究。坚持传统的hacker精神,追求技术的精纯。

WSS 主页: http://www.whitecell.org/
WSS 论坛: http://www.whitecell.org/forum/
解剖安全帐号管理器(SAM)结构 解剖安全帐号管理器(SAM)结构 来源:www.opengram.com  类别:黑客文献  日期:2002-5-1 6:28:30  今日/总浏览: 1/386   Author: RefdomEmail : refdom@263.netHomePage: www.opengram.com2002/4/29 I、 摘要II、 关于SAMIII、注册表中SAM数据库的结构IV、 SAM数据 阅读详情

相关推荐

sam初识+sam详解

第一节:初级认识sam  微软做了两个不同的系统骨架,一个叫Win32,我们用的Win9x/Me系统就附在它上面;另一个叫NT(New Technology),也就是WinNT/2000/XP/2003的骨架。不过很不幸,微软有点“偏心”,Win32的骨架做得明显有点过小,所以它成了瘦子,而NT则是典型的美国壮汉。更不幸的是,微软给Win32配备的PWL门卫是个花瓶,不仅连个家门都看不住,而且嘴巴

FreeXploiT 3425

一个注册表项粗略分析

HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options] 注册表的这个项大家可能还不太熟悉,因为这个主要是用来调试程序用的,对一般用户 意义不大。默认是只有管理员和local system有权读写,一般user只读。 先做个实验:在这个项下新建一个子项“test.exe”,再建一个字串值“Debu

动性忍心 1143

CMD下修改注册表 完全攻略(FreeXploiT搜集 整理 热荐)

ALLyeSNO注:先来段精彩的【 本文未包含zzzevazzz 写的do all in cmd 里面使用inf 修改注册表的 方法 】regedit虽是gui下使用的东东 但其实是有未公开的参数的 可以在cmd下使用regedit的运行参数REGEDIT [/L:system] [/R:user] filename1REGEDIT [/L:system] [/R:user] /C filenam

FreeXploiT 2944

(经典)详解WINDOWS映像劫持技术

一. 诡异的中毒现象在成品检验科文员办公室的一台电脑上折腾半个小时后,计算机维护部门的技术员只觉得眼皮不停狂跳,因为从刚开始接手这个任务开始,他就一直在做无用功:他随身带的U盘里引以为豪的众多维护工具包在这台机器上全军覆没,无论他直接在U盘上运行还是随便复制到哪个目录里,系统都是报告“找不到文件”或者直接没有运行起来的反应,他第一次感受到了恐惧,文件分明就好好的在眼皮底下,可它们就是“找不到”或死

yxyhack's blog 5192

FreeXploiT 成立三年感言!

 04年成立的,和一个朋友,现在那个朋友不知所踪了(他叫菜菜,很早就玩汇编了)后来的两年基本是我一个人更新里面的blog我这个算是最早的安全聚合blog吧? 暗礁的也挺早 不过是团队形式的 鬼仔的05年 neeao的04.10.26我的04.10.15那时候就是想弄点资料自己收藏着看看 ,当然也有很长远的目标 就是想做一个网站 先拿blog练练手一练就是三年啊 哈。。blo

FreeXploiT 8481

Security Accounts Manager

Title: Security Accounts Manager | Author: clark@hushmail.com | Last updated: 31st May 2004This article is based primarily on a local default setup of NT5.0 Professional or 2K (Windows 2

FreeXploiT 6494

regini 可是一个好用强大的工具!

My site: http://blog.csdn.net/freexploit/regini 可是一个好用强大的工具!我仔细查阅了 微软的资料 发现说的含糊不清 google了下也是 寥寥几笔这个玩意主要用途是 在cmd下 修改注册表 以及 注册表权限!用法研究了一晚上 弄出来了 ,微软上写的 根本不能用啊 郁闷。。使用方法C:/>regini regset.ini 就行啦regset.ini

FreeXploiT 6270

Windows注册表的弊端

Windows注册表的弊端作者:Hookson          Email:Hookson@sohu.com在Microsoft的Windows中,系统和应用程序的配置广泛的使用了注册表数据库,它在给系统带来很大的灵活性的同时也给一些另外的用户带来了很大的麻烦,下面来举例说明这一点。1. 在Windows启动过程中,系统需要读取大量的注册表数据,它们都是以字符串的形式来寻值的,我们知道,注册表

FreeXploiT 5026

SCZ的3篇有关sam的文章

http://www.opencjk.org/~scz/ SYSKEY机制的一个完整验证集及讨论参看flashsky、Nicola Cuomo的文章([11]、[13])--------------------------------------------------------------------------Class A                     : C5 1F 3D D

FreeXploiT 3698

Tips:IE脱掉 脱掉 通通脱掉~~~``

 Tips:IE脱掉 脱掉 通通脱掉~~~``allyesno:把 ie 脱光光 嘿嘿C:/Program Files/Internet Explorercopy两个文件browselc.dll、browseui.dll browselc.dll 做权限设置browseui.dll 不做权限设置打开ie->查看->工具栏->取消所有的√打开ie->查看->工具栏->自定义->删

FreeXploiT 3438

cut wfp 's jj easily 【ALLyeSNO】

Author : allyesnoTeam   : freexploitDate     : 2006-01-20昨晚花了好多时间写的绕过WFP保护的文章 竟然是错的 我感觉很不爽 我决定再次挑战一下wfp擒贼先擒王 打蛇要打七寸 所以只要我们抓住了 wfp的 小jj 它就不能勃起了wfp的小jj是谁呢 根据wfp的工作方式引用:

FreeXploiT 3298

API实现了regedt32修改注册表权限(幻影 zzzevazzz)

昨天想找个system权限修改注册表的例子,感谢eva写了一个 不过小榕ca.exe的源代码到底公布了没有 我还真是忘记了不要老是盯着SYSTEM权限。SYSTEM固然通行无阻,但访问SAM这种事有admin足够了。虽然admin不能直接访问SAM,但可以获取访问权限。我给个例子你自己修改吧。Codz: #include #include #pragma comment (li

FreeXploiT 3128

Windows XP/2000实现自动登陆(加入域和未加域两种情况)

Windows XP/2000实现自动登陆:不管计算机是否已加域,都可以通过更改注册表的方法来实现。 在注册表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/Current Version/Winlogon下创建几个键值。创建一个双字节(REG_DWORD)值项AutoAdminLogon。值为1表示启用自动登录功能,值为0或值项不存在表示不使用自

FreeXploiT 3063

windows的命令行方式下TAB键自动补全设置方法.

 在linux下用TAB键自动补全习惯了,在win下一直都想能够用到这样的功能,今天总算知道如何设置了.方法非常简单:手工修改注册表,方法如下:运行:regedit修改注册表键:[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor]下名称为"CompletionChar"的值为9它的初始值为 0.如果没有该

FreeXploiT 2722

Windows自动启动程序的十大藏身之所

Windows自动启动程序的十大藏身之所 Windows启动时通常会有一大堆程序自动启动。不要以为管好了“开始→程序→启动”菜单就万事大吉,实际上,在Windows XP/2K中,让Windows自动启动程序的办法很多,下文告诉你最重要的两个文件夹和八个注册键。   一、当前用户专有的启动文件夹   这是许多应用软件自动启动的常用位置,Windows自动启动放入该文件夹的所有快捷方式。用户

FreeXploiT 2516
上一篇: 谈谈WIN2K的服务
下一篇: 不通过临时变量实现两个变量的交换(源自CSDN论坛帖)killme2008'blog
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值