定位 COM+ ProgId 后面的源 DLL

Mar*_* C. 3 com+ asp-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
%>
Run Code Online (Sandbox Code Playgroud)

如何识别服务器对象是什么?有一个.dll包含二进制文件的文件,但我不熟悉如何使用它。

我尝试遵循浏览器开发工具,但它们在这方面确实没有太大帮助。

我希望了解这段代码是如何执行的或者在哪里执行的,我会解决我的其他问题。

Lan*_*art 5

一点背景

\n

该项目正在使用 COM+ 组件。这些是在经典 ASP 中使用以下语法定义的:

\n
Set obj = Server.CreateObject("[insert COM+ ProgId]")\n
Run Code Online (Sandbox Code Playgroud)\n

在此项目中,您正在使用注册的组件ProgId

\n
\nCookieOrder.CookieRequest\n
\n

有许多现成的 COM+ 组件可用于经典 ASP,它们提供了许多常用功能,例如:

\n
\nVisual Basic 脚本运行时\nActiveX 数据对象\n
\n

还可以使用当时常见的语言(例如 Visual Basic、Visual C++ 以及最近使用的 .NET Framework (C#、VB.NET))创建与经典 ASP 一起使用的 COM+ 组件。

\n

如何定位 COM+ 库

\n
\n

注意:访问注册表时请小心,因为修改或删除注册表项可能会导致操作系统损坏。

\n

另外,出于本指南的目的,我们将使用 ProgId Scripting.Dictionary

\n
\n

关键是使用 来ProgId找到难以捉摸的 COM+ 库。

\n
    \n
  1. 启动%SystemRoot%\\system32\\regedit.exe (适用于大多数 Windows 操作系统)

    \n
  2. \n
  3. 导航到HKEY_CLASS_ROOT配置单元并选择它,然后按Ctrl+F打开“查找”对话框。

    \n
  4. \n
  5. Find what这种情况下,键入 ProgIdScripting.Dictionary并确保look atKey选中,然后按FindFind Next

    \n
  6. \n
  7. 如果ProgId找到某个键​​,则展开该键并找到CLSID包含(Default)REG_SZ 的键,在此示例中,该键的值是 CLSID {EE09B103-97E0-11CF-978F-00A02463E06F}。双击该值以打开Edit String对话框,将值复制到剪贴板中。

    \n
  8. \n
  9. 返回到该HKEY_CLASS_ROOT键并使用“查找”来搜索CLSID本例中的值{EE09B103-97E0-11CF-978F-00A02463E06F},并再次确保Look atKey选中,然后按FindFind Next

    \n
  10. \n
  11. 如果找到该键,请展开并找到InprocServer32其中的键,您将在 REG_SZ 值中找到 DLL 的位置(Default)。在此示例中C:\\Windows\\System32\\scrrun.dll (这将根据安装位置和操作系统而有所不同)

    \n
  12. \n
\n

那反编译呢?

\n

关于用于编译 DLL(主要是 .NET)的编译器的注释中有很多假设,但最好的检查方法是使用公共领域为此目的设计的众多程序之一。

\n

SO 有一个具体问题涉及这个问题;

\n

@simon-m\xe1\xb6\x9ckenzie 对识别 DLL 来源的回答

\n