定位 COM+ ProgId 后面的源 DLL
Locating the source DLL behind a COM+ ProgId
我从来没有真正调试过 Classic ASP,所以这个问题有点粗糙,很可能是一个糟糕的问题,但我在提问之前已经做了尽可能多的研究。
我有一个请求,以确定打印到打印机的代码,并在某人构建的新页面中重新使用该代码。
在尝试确定这一点时,我偶然发现了一些我不明白的事情,但其中有一个很重要。
要点是,人们可以从自助餐厅订购饼干,当他们提交时,它会显示一个确认页面,并将该订单发送到打印机。
要获取 cookie 选项列表,需要创建一个服务器对象,并从那里创建一个方法,但我无法确定它在哪里或我应该查看的位置。这是代码:
<%
On error resume next
Const CATAGORY_COOKIE = 1
Dim cookieNames
Dim objCookie
Dim Count
Set objCookie = Server.CreateObject("CookieOrder.CookieRequest")
if objCookie Is Nothing then
Response.Write "Error"
Response.End
End if
cookieNames = objCookie.getAvailable_Item_Names(CATAGORY_COOKIE)
Count = objCookie.Count
Dim sz
sz = Split(cookieNames, ";")
Set objCookie = Nothing
%>
如何识别服务器对象是什么?有一个包含二进制文件的 .dll
文件,但我不熟悉如何使用它。
我尝试使用浏览器开发工具,但它们在这方面确实没有太大帮助。
我希望通过了解这段代码的执行方式或执行位置,我可以找出其他问题。
背景知识
该项目正在使用 COM+ 组件。这些在 Classic ASP 中使用语法定义;
Set obj = Server.CreateObject("[insert COM+ ProgId]")
在此项目中,您使用的组件已注册 ProgId
CookieOrder.CookieRequest
Classic ASP 有许多开箱即用的 COM+ 组件,它们提供许多常用功能,例如;
Visual Basic Scripting Runtime
ActiveX Data Objects
还可以使用 Visual Basic、Visual C++ 和最近使用的 .NET Framework (C# , VB.NET).
如何定位 COM+ 库
NOTE: Please be careful when accessing the registry as modifying or deleting keys could lead to a corrupt operating system.
Also for the purposes of this guide will use the Scripting.Dictionary
ProgId.
关键是使用 ProgId
找到难以捉摸的 COM+ 库。
开始 %SystemRoot%\system32\regedit.exe
(适用于大多数 Windows 操作系统)
导航到 HKEY_CLASS_ROOT
配置单元并 select 它,然后按 Ctrl + F 打开“查找”对话框。
在 Find what
中键入 ProgId 在这种情况下 Scripting.Dictionary
并确保在 look at
中仅选中 Key
然后按 Find
或 Find Next
.
如果找到 ProgId
键,展开到该键并找到包含 (Default)
REG_SZ 的 CLSID
键,其值为本例中的 CLSID {EE09B103-97E0-11CF-978F-00A02463E06F}
。双击该值以弹出 Edit String
对话框,将值复制到剪贴板。
Return 到 HKEY_CLASS_ROOT
键并使用 Find 搜索 CLSID
值,在此示例中为 {EE09B103-97E0-11CF-978F-00A02463E06F}
并再次确保Look at
仅选中 Key
,然后按 Find
或 Find Next
。
如果找到密钥,展开并找到其中的 InprocServer32
密钥,您将在 (Default)
REG_SZ 值中找到 DLL 的位置。在这个例子中是 C:\Windows\System32\scrrun.dll
(这将根据安装位置和 OS 而不同)
反编译呢?
关于用于编译 DLL(主要是 .NET)的编译器的评论中有很多假设,但最好的检查方法是使用 public 中的众多程序之一为此目的设计的域名。
SO 上有一个特定问题处理此问题;
Answer by @simon-mᶜkenzie to Identifying the origin of a DLL
我从来没有真正调试过 Classic ASP,所以这个问题有点粗糙,很可能是一个糟糕的问题,但我在提问之前已经做了尽可能多的研究。
我有一个请求,以确定打印到打印机的代码,并在某人构建的新页面中重新使用该代码。
在尝试确定这一点时,我偶然发现了一些我不明白的事情,但其中有一个很重要。
要点是,人们可以从自助餐厅订购饼干,当他们提交时,它会显示一个确认页面,并将该订单发送到打印机。
要获取 cookie 选项列表,需要创建一个服务器对象,并从那里创建一个方法,但我无法确定它在哪里或我应该查看的位置。这是代码:
<%
On error resume next
Const CATAGORY_COOKIE = 1
Dim cookieNames
Dim objCookie
Dim Count
Set objCookie = Server.CreateObject("CookieOrder.CookieRequest")
if objCookie Is Nothing then
Response.Write "Error"
Response.End
End if
cookieNames = objCookie.getAvailable_Item_Names(CATAGORY_COOKIE)
Count = objCookie.Count
Dim sz
sz = Split(cookieNames, ";")
Set objCookie = Nothing
%>
如何识别服务器对象是什么?有一个包含二进制文件的 .dll
文件,但我不熟悉如何使用它。
我尝试使用浏览器开发工具,但它们在这方面确实没有太大帮助。
我希望通过了解这段代码的执行方式或执行位置,我可以找出其他问题。
背景知识
该项目正在使用 COM+ 组件。这些在 Classic ASP 中使用语法定义;
Set obj = Server.CreateObject("[insert COM+ ProgId]")
在此项目中,您使用的组件已注册 ProgId
CookieOrder.CookieRequest
Classic ASP 有许多开箱即用的 COM+ 组件,它们提供许多常用功能,例如;
Visual Basic Scripting Runtime ActiveX Data Objects
还可以使用 Visual Basic、Visual C++ 和最近使用的 .NET Framework (C# , VB.NET).
如何定位 COM+ 库
NOTE: Please be careful when accessing the registry as modifying or deleting keys could lead to a corrupt operating system.
Also for the purposes of this guide will use the
Scripting.Dictionary
ProgId.
关键是使用 ProgId
找到难以捉摸的 COM+ 库。
开始
%SystemRoot%\system32\regedit.exe
(适用于大多数 Windows 操作系统)导航到
HKEY_CLASS_ROOT
配置单元并 select 它,然后按 Ctrl + F 打开“查找”对话框。在
Find what
中键入 ProgId 在这种情况下Scripting.Dictionary
并确保在look at
中仅选中Key
然后按Find
或Find Next
.如果找到
ProgId
键,展开到该键并找到包含(Default)
REG_SZ 的CLSID
键,其值为本例中的 CLSID{EE09B103-97E0-11CF-978F-00A02463E06F}
。双击该值以弹出Edit String
对话框,将值复制到剪贴板。Return 到
HKEY_CLASS_ROOT
键并使用 Find 搜索CLSID
值,在此示例中为{EE09B103-97E0-11CF-978F-00A02463E06F}
并再次确保Look at
仅选中Key
,然后按Find
或Find Next
。如果找到密钥,展开并找到其中的
InprocServer32
密钥,您将在(Default)
REG_SZ 值中找到 DLL 的位置。在这个例子中是C:\Windows\System32\scrrun.dll
(这将根据安装位置和 OS 而不同)
反编译呢?
关于用于编译 DLL(主要是 .NET)的编译器的评论中有很多假设,但最好的检查方法是使用 public 中的众多程序之一为此目的设计的域名。
SO 上有一个特定问题处理此问题;
Answer by @simon-mᶜkenzie to Identifying the origin of a DLL