Mapping the GUID to the DLL Module

In previous article, I’ve located the source of ActiveX error which is caused by missing link between the requested GUID and its associated DLL file. The issue that arised is that, there is no way to verify using external information of DLL name of given GUID.

The GUID in question is :

00000514-0000-0010-8000-00AA006D2EA4

Which is by lucky guessing to be of msado15.dll, by using indirect proof, by verifying that the ActiveX error is gone when I’m registering this DLL by using regsvr32.exe.

Let’s perform some more experiment with regsvr32.exe toward msado15.dll.

First, I perform the un-registering of the DLL :

regsvr32 /u msado15.dll

And the ActiveX error is appearing again.

At this state, there are no indication of any GUID of the above value in the registry hive.

Next, I perform the registering of DLL :

regsvr32 msado15.dll

I am now finding several references to this GUID, with the mapping information between this GUID to msado15.dll is recorded in the InprocServer32 key :

This would imply that the GUID information somehow resides in msado15.dll file, and the task of regsvr32.exe at the registration mode is to extract this information and creates the proper key values to be used later on by ActiveX COM activation routine.

So, where is the location of GUID that resides in msado15.dll file ?

If it is not for the ITypeLib interface, then it would be nearly impossible to locate the GUIDs that is associated to the particular DLL file.

I’ve create small console application to list the mapping between DLL and its associated GUIDs in certain directory called DLLToGUID.exe. Basically this small utility use the ITypeLib interface to locate the CoClass GUID and printed the GUIDs to the console screen. Those who are interested to use this utility can contact me via email.

However, there are some restrictions for this utility, i.e. that it rely upon the successful usage of LoadTypeLib function to detect the presence of type library within the DLL. If there are no type library, then this utility can not identify the GUIDs although it is still possible to register this DLL using regsvr32.exe that detects the presence of DllRegisterServer exported function.

As far as I know, there are no easy method to get the kind of GUIDs for DLL that has no type library. One obvious method is to examine the DllRegisterServer routine for each DLL which is very cumbersome and time-wasting.

The other idea is to check the registry entry for the DLL name, and if not found, see that the DLL has DllRegisterServer exported function, if yes then try to call this function. After that re-checks the registry for the existence of DLL name and its related GUIDs. But, this would be subject of another article, if any.

By putting the above issue aside for the time being, using DLLToGUID.exe, I can now build some list to be checked when there are ActiveX error that is related to Microsoft’s Data Access modules. This list then can be cross-referenced to the GUID that causes the ActiveX error to locate the DLL. Then by using regsvr32 to register the DLL file.

At location C:\Program Files\Common Files\System\ado :

msado15.dll {00000514-0000-0010-8000-00AA006D2EA4}
msado15.dll {00000560-0000-0010-8000-00AA006D2EA4}
msado15.dll {00000566-0000-0010-8000-00AA006D2EA4}
msado15.dll {00000507-0000-0010-8000-00AA006D2EA4}
msado15.dll {00000535-0000-0010-8000-00AA006D2EA4}
msado15.dll {0000050B-0000-0010-8000-00AA006D2EA4}
msadomd.dll {228136B0-8BD3-11D0-B4EF-00A0C9138CA4}
msadomd.dll {228136B8-8BD3-11D0-B4EF-00A0C9138CA4}
msador15.dll {00000535-0000-0010-8000-00AA006D2EA4}
msadox.dll {00000609-0000-0010-8000-00AA006D2EA4}
msadox.dll {0000061B-0000-0010-8000-00AA006D2EA4}
msadox.dll {0000061E-0000-0010-8000-00AA006D2EA4}
msadox.dll {00000621-0000-0010-8000-00AA006D2EA4}
msadox.dll {00000615-0000-0010-8000-00AA006D2EA4}
msadox.dll {00000618-0000-0010-8000-00AA006D2EA4}
msadox.dll {00000602-0000-0010-8000-00AA006D2EA4}
msjro.dll {D2D139E3-B6CA-11D1-9F31-00C04FC29D52}
msjro.dll {DE88C160-FF2C-11D1-BB6F-00C04FAE22DA}

At location C:\Program Files\Common Files\System\msadc

msadcf.dll {9381D8F5-0288-11D0-9501-00AA00B911A5}
msadco.dll {BD96C556-65A3-11D0-983A-00C04FC29E33}
msadco.dll {BD96C556-65A3-11D0-983A-00C04FC29E36}
msdfmap.dll {A1A6B99D-497F-11D1-9217-00C04FBBBFB3}

C:\Program Files\Common Files\System\Ole DB :

MSDAIPP.DLL {E1D2BF40-A96B-11D1-9C6B-0000F875AC61}
MSDAIPP.DLL {AF320921-9381-11D1-9C3C-0000F875AC61}
MSDAIPP.DLL {11480D94-C3A5-11D3-BA7C-00C04F7948B3}
MSDAIPP.DLL {D9D5678A-76CE-4804-AAFC-1DA2502DB0BC}
MSDMENG.DLL {C1CD5360-28E5-11D3-8C76-00600832DCED}
MSDMENG.DLL {830437A3-2F36-11D3-8C76-00600832DCED}
MSDMENG.DLL {830437A6-2F36-11D3-8C76-00600832DCED}
MSDMENG.DLL {ED56664F-4088-11D3-B394-00C04F687719}
MSDMENG.DLL {65813656-4461-11D3-8C7B-00600832DCED}
MSDMENG.DLL {65813659-4461-11D3-8C7B-00600832DCED}
MSDMENG.DLL {89555CC1-4928-11D3-8D4C-00E029154FDE}
MSDMENG.DLL {08EAF772-59A5-11D3-B3A7-00C04F687719}
MSDMINE.DLL {2CB6C2D3-DD7C-11D2-AFE4-00105A994724}
MSDMINE.DLL {8853D6B2-E8AE-11D2-AFE8-00105A994724}
MSDMINE.DLL {72B082C6-97D5-11D3-8BEC-00C04F68DDC2}
MSMDCB80.DLL {EF3694A3-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {EF3694A6-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {EF3694A9-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {EF3694AC-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {EF3694AF-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {EF3694B2-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {EF3694B5-3C1C-11D1-ABD2-00C04FC30999}
MSMDCB80.DLL {8A285C52-8687-11D3-AB5D-00C04F9407B9}
MSMDCB80.DLL {7C504FFC-44E0-11D1-ABD4-00C04FC30999}
MSMDCB80.DLL {BA2BC757-271E-11D2-8E77-00600893AF2D}
MSMDGD80.DLL {1E083961-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083962-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083963-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083964-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083965-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083966-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083967-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083968-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083980-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083969-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08396A-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08396B-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08396C-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08396D-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08396E-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08396F-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083970-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083971-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083972-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083973-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083974-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083975-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083976-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083977-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083978-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E083979-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08397A-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08397B-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08397C-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08397D-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08397E-829F-11D3-AB5D-00C04F9407B9}
MSMDGD80.DLL {1E08397F-829F-11D3-AB5D-00C04F9407B9}
MSOLUI80.DLL {5C63C824-4122-4A70-A03E-482B2B9A8269}
oledb32.dll {2206CDB2-19C1-11D1-89E0-00C04FD7A829}
oledb32.dll {2206CDB0-19C1-11D1-89E0-00C04FD7A829}
oledb32.dll {CCB4EC60-B9DC-11D1-AC80-00A0C9034873}
oledb32.dll {FF151822-B0BF-11D1-A80D-000000000000}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: