POV-Ray : Newsgroups : povray.off-topic : Inspect DLL Server Time
5 Sep 2024 11:22:28 EDT (-0400)
  Inspect DLL (Message 1 to 10 of 61)  
Goto Latest 10 Messages Next 10 Messages >>>
From: Invisible
Subject: Inspect DLL
Date: 12 Oct 2009 05:44:16
Message: <4ad2fa70@news.povray.org>
OK, so here's a question: I think I understand how to load a DLL and 
call the functions it exports, but... how do you find out what functions 
a DLL exports?

I mean, one way would be to find some documentation. But if you don't 
have any... is there some way to inspect the symbol list somehow? Can 
you get an argument list? How about type information?


Post a reply to this message

From: scott
Subject: Re: Inspect DLL
Date: 12 Oct 2009 06:43:43
Message: <4ad3085f@news.povray.org>
> OK, so here's a question: I think I understand how to load a DLL and call 
> the functions it exports, but... how do you find out what functions a DLL 
> exports?

Google "list dll functions"?  First result is this: 
http://www.nirsoft.net/utils/dll_export_viewer.html

> Can you get an argument list? How about type information?

No. No.


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 06:51:42
Message: <4ad30a3e@news.povray.org>
>> OK, so here's a question: I think I understand how to load a DLL and 
>> call the functions it exports, but... how do you find out what 
>> functions a DLL exports?
> 
> Google "list dll functions"?  First result is this: 
> http://www.nirsoft.net/utils/dll_export_viewer.html

Well, it seems to work anyway...

>> Can you get an argument list? How about type information?
> 
> No. No.

I had a feeling that would be the case. The symbols have to be in the 
DLL so you can look them up, but nothing else is required...


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 07:06:56
Message: <4ad30dd0$1@news.povray.org>
C:\WINDOWS\system32\Audio3D.dll

0x100018F0 (0x02) DllGetObjectClass
0x10001A10 (0x03) DllCanUnloadNow
0x10001370 (0x04) _A3d@Create@12

Fascinating stuff, eh?


Post a reply to this message

From: Le Forgeron
Subject: Re: Inspect DLL
Date: 12 Oct 2009 07:13:20
Message: <4ad30f50$1@news.povray.org>
Invisible a écrit :
> OK, so here's a question: I think I understand how to load a DLL and
> call the functions it exports, but... how do you find out what functions
> a DLL exports?
> 
> I mean, one way would be to find some documentation. But if you don't
> have any... is there some way to inspect the symbol list somehow? Can
> you get an argument list? How about type information?

Worse, How do you find which DLL are needed by a DLL ?
There is a "dependancy walker" (from  steve P. Miller) but that might
not provide the argument list.


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 08:13:40
Message: <4ad31d74$1@news.povray.org>
Along with a DLL inspector, I find a tool which lists every registered 
COM object in the system.

OK, do you have ANY FRIGGIN IDEA how many COM objects are registered on 
my PC?! Not counting the DLLs registered for that program I already 
uninstalled. Acrobat Reader alone registers about 12 classes. o_O

God only knows what MS Office registers...


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 08:23:32
Message: <4ad31fc4$1@news.povray.org>
Invisible wrote:

> God only knows what MS Office registers...

C:\Program Files\Common Files\Microsoft Shared\Visual Database 
Tools\DVT70.DLL

This single DLL registers exactly 50 ClassIDs. For example:

{03CB9467-FD9D-42A8-82F9-8615B4223E6E}	Microsoft Visual Database Tools 
Database Designer V7.0	MSVDTDatabaseDesigner7

{133E2230-74AF-4A79-8226-7AA2EBC018DA}	DBNamespace Class 
DBNamespace.DBNamespace.7

{1912B299-D07C-45DF-99DF-139D7F6FC4E8}	Primer Class	Primer.Primer.7

{1AECB7EC-4CFB-4866-8E08-8D6961E5C095}	PrimerMgr Class	PrimerMgr.PrimerMgr.7

{2C10A98F-D64F-43B4-BED6-DD0E1BF2074C}	Microsoft Visual Database Tools 
Query Designer V7.0	MSVDTQueryDesigner7

{31E4841B-9B7A-4EF2-8A83-8F1F70D7B0D7}	Microsoft Visual Database Tools 
Query Designer V7.0 Data property page

{3AABDBBA-9C39-400C-BA5A-0186866F8D25}	Microsoft Visual Database Tools 
Query Designer V7.0 Join Line property page

{43872FA3-D283-4CCD-9FC9-281AB33F5D01}	Microsoft Visual Database Tools 
Query Designer V7.0 Procedure Designer property page

I could go on... and that's just one DLL.


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 08:33:51
Message: <4ad3222f$1@news.povray.org>
Invisible wrote:

> This single DLL registers exactly 50 ClassIDs.

Topped that.

C:\Program Files\Java\jre1.5.0_11\bin\ssv.dll

This DLL registers *one hundred and three* ClassIDs:

{CAFEEFAC-0013-0000-0003-ABCDEFFEDCBA}	Java Plug-in 1.3.0_03
{CAFEEFAC-0013-0000-0004-ABCDEFFEDCBA}	Java Plug-in 1.3.0_04
{CAFEEFAC-0013-0000-0005-ABCDEFFEDCBA}	Java Plug-in 1.3.0_05
{CAFEEFAC-0013-0001-0000-ABCDEFFEDCBA}	Java Plug-in 1.3.1
{CAFEEFAC-0013-0001-0001-ABCDEFFEDCBA}	Java Plug-in 1.3.1_01

...see a pattern yet?

Yep, there's a COM registration for every point-releast from 1.3.0_03 up 
to 1.5.0_11. Which is pretty crazy, no?

Next time you install some program and it says "registering components" 
or "writing registry keys", this is what it's doing. It's registering 
millions of COM ClassIDs!


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 08:59:20
Message: <4ad32828$1@news.povray.org>
C:\Program Files\Windows Media Player\mpvis.dll

Exports the following functions:

0x4B0D7EA0 (0x01) DllCanUnloadNow
0x4B0D8A71 (0x02) DllGetClassObject
0x4B0D8A28 (0x03) DllMain
0x4B0D93C0 (0x04) DllRegisterServer
0x4B0D93D4 (0x05) DllUnregisterServer

Also the COM methods:

(0xC9) IToleranceVis::GetProperty
(0xCA) IToleranceVis::SetProperty

and the COM property:

(0xC8) IToleranceVis::foregroundColor

What this means, I have no idea...


Post a reply to this message

From: Invisible
Subject: Re: Inspect DLL
Date: 12 Oct 2009 09:11:49
Message: <4ad32b15$1@news.povray.org>
Now this is really quite interesting.

I found a DLL called autodisk.dll which exports half a dozen functions 
and hundreds of COM methods and properties. I found several other DLLs 
which apparently export... absolutely nothing. (Why do they exist then?)

Some DLLs for highly complex tasks appear to export a tiny amount of 
stuff, so clearly there's something I'm not seeing. And then there are 
huge, huge numbers of DLLs on the system which aren't registered anywhere.

And who says that staring into a screen full of code numbers is a good 
way to learn stuff? ;-)


Post a reply to this message

Goto Latest 10 Messages Next 10 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.