Posted on 2002-04-15
Last Modified: 2008-02-01
Does anybody know what functions the asp.dll has, and how the IIS interacts with the dll?
Question by:lar_jens
LVL 11

Expert Comment

ID: 6942267
ASP .dll runs Active Server Pages, a VB Scripting language for web pages.
LVL 32

Expert Comment

ID: 6942278
If you want to know what functions ASP.DLL has, use the DUMPBIN utility in Visual Studio like:


This will give you a list of all the EXPORT functions from this DLL.

Generally, you would NOT directly interact with ASP.DLL.  IIS interacts with it directly and automatically.

Perhaps if you explained what you are trying to do a better explanation could be offered.

Author Comment

ID: 6942315
Yes, but I want to create another engine (like php and asp), and if it is to be run as a dll, I need to know what functions the IIS is using to communicate with it...


Author Comment

ID: 6942322
The dump of the dll is as follows:

Microsoft (R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file c:\winnt\system32\inetsrv\asp.dll

File Type: DLL

  Section contains the following exports for asp.dll

           0 characteristics
    3AE8ADD2 time date stamp Fri Apr 27 01:22:58 2001
        0.00 version
           1 ordinal base
          61 number of functions
          61 number of names

    ordinal hint RVA      name

          1    0 0001672C ??0BUFFER@@QAE@I@Z
          2    1 00016761 ??0BUFFER@@QAE@PAEI@Z
          3    2 0001682D ??0BUFFER_CHAIN@@QAE@XZ
          4    3 000167D9 ??0BUFFER_CHAIN_ITEM@@QAE@I@Z
          5    4 000168B9 ??0STR@@QAE@ABV0@@Z
          6    5 00016884 ??0STR@@QAE@K@Z
          7    6 0001685F ??0STR@@QAE@PADK@Z
          8    7 0001689A ??0STR@@QAE@PBD@Z
          9    8 0001684D ??0STR@@QAE@XZ
         10    9 00016B0C ??0TS_RESOURCE@@QAE@XZ
         11    A 00016835 ??1BUFFER_CHAIN@@QAE@XZ
         12    B 000167F3 ??1BUFFER_CHAIN_ITEM@@QAE@XZ
         13    C 00016A86 ??1STR@@QAE@XZ
         14    D 00016B19 ??1TS_RESOURCE@@QAE@XZ
         15    E 00016AF8 ??4ALLOC_CACHE_HANDLER@@QAEAAV0@ABV0@@Z
         16    F 000167BD ??4BUFFER@@QAEAAV0@ABV0@@Z
         17   10 0001683A ??4BUFFER_CHAIN@@QAEAAV0@ABV0@@Z
         18   11 00016B59 ??4BUFFER_CHAIN_ITEM@@QAEAAV0@ABV0@@Z
         19   12 00016A72 ??4STR@@QAEAAV0@ABV0@@Z
         20   13 00016B59 ??4TS_RESOURCE@@QAEAAV0@ABV0@@Z
         21   14 000167D1 ??_FBUFFER@@QAEXXZ
         22   15 00016819 ??_FBUFFER_CHAIN_ITEM@@QAEXXZ
         23   16 0001694C ?Append@STR@@QAEHABV1@@Z
         24   17 00016902 ?Append@STR@@QAEHPBD@Z
         25   18 0001692F ?Append@STR@@QAEHPBDK@Z
         26   19 00016A22 ?Append@STR@@QAEXD@Z
         27   1A 00016A3A ?Append@STR@@QAEXDD@Z
         28   1B 00016A5A ?AppendCRLF@STR@@QAEXXZ
         29   1C 00016A02 ?Clone@STR@@QBEHPAV1@@Z
         30   1D 00016B3A ?Convert@TS_RESOURCE@@QAEXW4TSRES_CONV_TYPE@@@Z
         31   1E 000169CF ?Copy@STR@@QAEHABV1@@Z
         32   1F 00016969 ?Copy@STR@@QAEHPBD@Z
         33   20 000169A5 ?Copy@STR@@QAEHPBDK@Z
         34   21 00016700 ?IsDynAlloced@BUFFER@@ABEHXZ
         35   22 000168F6 ?IsEmpty@STR@@QBEHXZ
         36   23 00016782 ?IsValid@ALLOC_CACHE_HANDLER@@QBEHXZ
         37   24 00016723 ?IsValid@BUFFER@@IBEHXZ
         38   25 00016723 ?IsValid@STR@@QBEHXZ
         39   26 00016AE2 ?Lock@ALLOC_CACHE_HANDLER@@AAEXXZ
         40   27 00016B20 ?Lock@TS_RESOURCE@@QAEXW4TSRES_LOCK_TYPE@@@Z
         41   28 000169FE ?QueryCB@STR@@QBEIXZ
         42   29 000169FE ?QueryCCH@STR@@QBEIXZ
         43   2A 00016782 ?QueryPtr@BUFFER@@QBEPAXXZ
         44   2B 00016785 ?QuerySize@BUFFER@@QBEIXZ
         45   2C 00016782 ?QueryStr@STR@@QBEPADXZ
         46   2D 00016782 ?QueryStrA@STR@@QBEPADXZ
         47   2E 0001680B ?QueryUsed@BUFFER_CHAIN_ITEM@@QBEKXZ
         48   2F 0001695F ?Reset@STR@@QAEXXZ
         49   30 00016789 ?Resize@BUFFER@@QAEHI@Z
         50   31 000167A0 ?Resize@BUFFER@@QAEHII@Z
         51   32 000168DA ?SetLen@STR@@QAEHK@Z
         52   33 0001680F ?SetUsed@BUFFER_CHAIN_ITEM@@QAEXK@Z
         53   34 00016707 ?SetValid@BUFFER@@IAEXH@Z
         54   35 00016AED ?Unlock@ALLOC_CACHE_HANDLER@@AAEXXZ
         55   36 00016B52 ?Unlock@TS_RESOURCE@@QAEXXZ
         56   37 000278E6 AspStatusHtmlDump
         57   38 0002B2E4 DllRegisterServer
         58   39 0002B341 DllUnregisterServer
         59   3A 00020ACD GetExtensionVersion
         60   3B 000099C7 HttpExtensionProc
         61   3C 00020B38 TerminateExtension


        3000 .data
        4000 .reloc
        F000 .rsrc
       40000 .text

How am I supposed to see what to write myself, to get IIS to interact with my own DLL?

Author Comment

ID: 6942329

do you have some sort of utility that interprets the C++ naming convention from DLLs?
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.


Author Comment

ID: 6942335
the dumpbin utility does not tell me the signature of the funtions either... Should I dissassemble the file? That would involve a lot of work...
LVL 32

Expert Comment

ID: 6942459
You might want to look at the key export from above, namely HttpExtensionProc.
LVL 49

Accepted Solution

DanRollins earned 200 total points
ID: 6943071
asp.dll is an ISAPI Http Extension.  These topics are covered in depth by MSDN.  Here is a weblink to get you started:

Even if you don't want to write your own ISAP Extension, the information there will help you see what asp.dll is doing (how it is used by IIS).

-- Dan
LVL 15

Expert Comment

by:Tommy Hui
ID: 6943369
There's also a book called ASP Internals that describes how to rewrite ASP.DLL.
LVL 22

Expert Comment

ID: 6944033
i guess only the un-decorated exports are important to IIS, excluding ofcourse DllRegisterServer and DllUnRegisterServer etc.

asp.dll is a COM dll, you might be interested in viewing it with object browser, and see what Objects and interfaces there are, for e.g. IRequest etc.

But i guess these are relevant to the inner workings of asp runtime and not important to the webserver. So for your ASP you might have a different rumtime environment altogether. HttpExtension seems to the only logical communication medium between the two.

correct me if am wrong ..

Author Comment

ID: 6944218
you're right :)
HttpExtensionProc helped me out.. Thnx..
Points goes to DanRollins for pointing it out to me first.

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
What is C++ STL?: STL stands for Standard Template Library and is a part of standard C++ libraries. It contains many useful data structures (containers) and algorithms, which can spare you a lot of the time. Today we will look at the STL Vector. …
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now