在COM + ProgId后面找到源DLL [英] Locating the source DLL behind a COM+ ProgId

查看:84
本文介绍了在COM + ProgId后面找到源DLL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从来没有真正调试过经典ASP,所以这有点粗糙,而且很可能是一个很糟糕的问题,但是在进行询问之前,我已经做了尽可能多的研究.

I've never really had to debug Classic ASP, so this is a little rough and most likely a poor question, but I have done as much research as I could before asking.

我有一个请求,要求确定将什么代码打印到打印机上,然后在某人已建立的新页面中重复使用该代码.

I have a request to identify what code prints to a printer, and re-use that code in a new page that someone has built.

在试图识别这一点时,我偶然发现了一些我不了解的事情,但其中一件大事.

While trying to identify that, I've stumbled on a few things that I don't understand, but namely one big one.

要点是,人们可以从自助餐厅订购饼干,当他们提交时,它会显示一个确认页面,并将该订单发送到打印机.

The gist is, people can order cookies from the cafeteria, and when they submit, it shows a confirmation page and that order is sent to a printer.

要获取Cookie选项的列表,创建了一个服务器对象,并且从那里创建了一个方法,但是我无法确定它在哪里或应该在哪里查看.这是代码:

To get a list of cookie options, there's a Server Object created, and from there a method exists, but I cannot identify where it is or where I should be looking. Here's the code:

<%
    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文件,但是我对如何利用它不熟悉.

How do I identify what the Server Object is? There's a .dll file that contains binary, but I'm not familiar with how that could be utilized.

我尝试遵循浏览器开发工具,但实际上在这方面并没有太大帮助.

I have tried to follow the browser dev tools, but they really haven't been too helpful in this aspect.

我希望了解这段代码的执行方式或执行的位置,以便找出其他问题.

I am hoping that learning how this code is executing or where it's being executed I will figure out my other problems.

推荐答案

背景位

该项目正在使用COM +组件.这些是使用语法在Classic ASP中定义的;

Bit of background

The project is using a COM+ component. These are defined in Classic ASP using the syntax;

Set obj = Server.CreateObject("[insert COM+ ProgId]")

在此项目中,您正在使用在ProgId

In this project you are using a component registered with the ProgId


CookieOrder.CookieRequest

Classic ASP提供了许多现成的COM +组件,它们提供了许多常用功能,例如;

There are many out of the box COM+ components available to Classic ASP that provide a lot of common functionality such as;


Visual Basic Scripting Runtime
ActiveX Data Objects

还具有使用COM组件(使用Visual Basic,Visual C ++以及最近使用.NET Framework (C#,VB.NET)的通用语言)创建可与Classic ASP一起使用的COM +组件的功能. >.

There is also the ability to create COM+ components for use with Classic ASP using languages common to the time like Visual Basic, Visual C++ and more recently using the .NET Framework (C#, VB.NET).

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

NOTE: Please be careful when accessing the registry as modifying or deleting keys could lead to a corrupt operating system.

出于本指南的目的,还将使用Scripting.Dictionary ProgId.

Also for the purposes of this guide will use the Scripting.Dictionary ProgId.

关键是使用ProgId查找难以捉摸的COM +库.

The key is using the ProgId to find an elusive COM+ library.

  1. 启动%SystemRoot%\system32\regedit.exe (将在大多数Windows操作系统中使用)

导航到HKEY_CLASS_ROOT配置单元并选择它,然后按 Ctrl + F 打开查找"对话框.

Navigate to the HKEY_CLASS_ROOT hive and select it, then press Ctrl + F to open the Find dialog box.

Find what中键入ProgId,在这种情况下为Scripting.Dictionary,并确保在look at中仅选中Key,然后按FindFind Next.

In Find what type the ProgId in this case Scripting.Dictionary and make sure in look at only Key is checked then press Find or Find Next.

如果找到了ProgId密钥,请展开至该密钥,然后找到CLSID密钥,该密钥包含(Default) REG_SZ,在此示例{EE09B103-97E0-11CF-978F-00A02463E06F}的情况下,其值为CLSID.双击该值将弹出Edit String对话框,将其复制到剪贴板中.

If a ProgId key is found expand to the key and locate the CLSID key which contains a (Default) REG_SZ with the value of the CLSID in the case of this example {EE09B103-97E0-11CF-978F-00A02463E06F}. Double click this value to bring up the Edit String dialog copy the value into your clipboard.

返回到HKEY_CLASS_ROOT键并使用查找"来搜索CLSID值(在本示例中为{EE09B103-97E0-11CF-978F-00A02463E06F}),并再次确保Look at仅选中了Key,然后按FindFind Next.

Return to the HKEY_CLASS_ROOT key and use Find to search for the CLSID value which in this example is {EE09B103-97E0-11CF-978F-00A02463E06F} and again make sure Look at has only Key checked then press Find or Find Next.

如果找到该密钥,请展开并找到InprocServer32密钥,您将在(Default) REG_SZ值中找到DLL的位置.在此示例中为C:\Windows\System32\scrrun.dll (具体取决于安装位置和操作系统)

If the key is found expand and locate the InprocServer32 key in it you will find the location of DLL in the (Default) REG_SZ value. In this example that is C:\Windows\System32\scrrun.dll (this will be different depending on installation location and OS)

如何反编译?

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

What about decompiling?

There's a lot of assumption in the comments about the compiler used to compile the DLL (mainly .NET), but the best way to check is to use one of the many programs out there in the public domain designed for this purpose.

关于SO的一个特定问题可以解决这个问题;

There is a specific question on SO that deals with this;

@simon-mᶜkenzie的回答,以识别DLL的起源

这篇关于在COM + ProgId后面找到源DLL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆