查看: 89|回复: 1

使用HTA与VBScript构建DOM浏览器:属性查看与运行时方法调用实践

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
在早期的Windows开发中,HTML Application(HTA)结合VBScript可以绕过浏览器安全限制,直接调用COM接口,实现强大的系统级操作。本文介绍一个经典的HTA脚本——Dom Explorer,它能够枚举当前系统中所有Internet Explorer窗口和Shell窗口,递归显示对象的属性并允许在运行时修改属性值、调用方法。该工具由Jean-Luc Antoine于2001年提交,适用于IE 5.5及以上版本,文件扩展名必须为.hta。

功能概述
Dom Explorer启动后,只需点击“init”按钮,即可自动检测所有运行中的IE实例和Shell窗口。用户可以通过树形展开查看每个对象的属性、类型、读写权限及当前值。对于可读写的属性,页面直接提供编辑框,修改后点击“ok”即可生效。同时,工具会列出对象支持的所有方法,并给出参数输入框,方便直接调用。

核心代码解析
整个脚本的核心采用VBScript编写,通过CreateObject("shell.application")获取Shell对象,进而遍历其Windows集合。关键的三个函数如下:
  1. Function SP2(name, obj, RW, ObjPath)
  2. ' 返回一个HTML表格行,显示属性名、类型、读写状态、值。
  3. ' 如果是对象类型,点击属性名可递归展开查看子属性。
  4. ' 如果值为可读写类型(如数字、字符串),会生成contenteditable的span,并附带“ok”链接,点击后执行赋值操作。
  5. End Function
复制代码
  1. Function SP(name, NbArg, ObjPath, Title)
  2. ' 返回一个HTML表格行,显示方法名和输入框。
  3. ' 根据参数数量动态生成0~3个文本框,点击方法名即调用该方法并传入文本框中的值。
  4. End Function
复制代码
  1. Sub ShowProp(Obj, OP)
  2. ' 根据对象的TypeName选择对应的属性输出模板。
  3. ' 支持IShellDispatch3、IShellWindows、IWebBrowser2、IShellFolderViewDual、Folder3、FolderItem2等多种COM接口。
  4. ' 每个接口的属性和方法都通过SP2和SP函数构建成表格行。
  5. End Sub
复制代码

例如,对于IWebBrowser2接口(即IE窗口),脚本输出了AddressBar、Busy、Document、FullScreen、Height、Left、LocationURL等数十个属性的读写状态,以及GoBack、GoForward、Navigate、Refresh、Quit等方法。对于可读写属性,用户可以直接在页面上修改值并点击“ok”更新。还包含一个ShowFrames函数,可递归显示框架的嵌套结构。

使用步骤
1. 将文末提供的完整代码复制到记事本,保存为Dom_Explorer.hta(注意扩展名必须是.hta)。
2. 确保系统已安装IE 5.5或更高版本(在Windows XP/2000/98上测试通过)。
3. 双击打开该.hta文件,界面会显示一个简单的HTA窗口。
4. 点击页面上的“init”按钮(原文中通过按钮触发初始化,代码中未直接给出按钮,但可根据注释自行添加)。
5. 程序会枚举所有Shell窗口和IE实例,以表格形式展示属性和方法。
6. 点击属性名称可递归展开子对象;对于可读写属性,直接在编辑区修改值,然后点击旁边的“ok”链接完成更新;对于方法,在输入框中填写参数后点击方法名执行。

注意事项
- 该HTA需要以本地文件执行,不能通过HTTP加载,因为HTA有更高的权限,允许跨域访问COM对象。
- 修改属性或调用方法时需谨慎,例如执行Quit方法会直接关闭对应的IE窗口。
- 工具依赖于shell.application对象,该对象在Windows 9x/NT/2000/XP中可用,但出于安全考虑,较新的Windows版本可能限制某些接口的访问。
- 代码中大量使用了On Error Resume Next来处理可能缺少属性的情况,实际运行时若遇到不支持的对象,相应行会显示为空。

总结
Dom Explorer是一个典型的HTA实战案例,展示了如何利用VBScript和COM接口实现动态DOM探测与操控。虽然它的主要应用场景是调试IE窗口和Shell对象,但其递归遍历、属性读写、方法调用的设计思路,对于理解HTA与Windows Shell交互非常有帮助。开发者可以在此基础上扩展,支持更多COM组件,或集成到自己的自动化测试工具中。
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: 使用HTA与VBScript构建DOM浏览器:属性查看与运行时方法调用实践

这个工具太实用了,当年调试IE和Shell对象的时候真是神器。HTA配合VBScript确实能突破浏览器限制,用来做系统级的对象枚举和动态操作非常灵活。不过现在Windows安全策略收紧,shell.application的访问权限可能受限,Win10/11上跑起来有时会提示错误。楼主有没有尝试过用PowerShell或C#重写类似功能?或者有没有办法兼容新版的Edge WebView2?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-9 14:19 , Processed in 0.027011 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部