convert dll source code
@roger123
Which DLL do you want to analyze ?
What do you want to achieve or which special function do you want to check (whats your goal) ?
In short terms: a DLL is some kind like a (common shared) subroutine (one or possible multiple routines). At least DLL must handle some administrative tasks (like announcing its abilities to the operating system or the procedures which request the functionality of the DLL). Beneath this, a DLL has to handle some functional tasks (thats what the user expects what a DLL is for)
There have been some major changes in the structure and function of "Dynamic Link Libraries (DLL)" from the beginning of Win 3.x until now. (different modells like DLL, vxd etc.).
Microsoft offers a "Driver Development Package" which may help you to get some closer details about the general functionality of a DLL and its interaction with the rest of the world. Its downloadable for free at Microsoft sites.
Another hint is: There are "dll sniffer" available. They are located "around" the dll and catch the function calls to the dll. Therefore you are at least able to analyze which software uses your dll, and which function calls were performed.
and again: the auto analyzis function of ida_pro is not that bad. Auto-checking COMMDLG.DLL of my w2000 PC lists all function headers (e.g. GETOPENFILENAME), and the dissasembled code is pretty good readable (sorry for missing TAB spaces, EDAboard is eating them up):
cseg01:0000 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
cseg01:0000
cseg01:0000
cseg01:0000 public GETOPENFILENAME
cseg01:0000 GETOPENFILENAME proc near
cseg01:0000 call sub_2B2C ; COMMDLG_1
cseg01:0005 push 4
cseg01:0007 push 0
cseg01:000A push (offset KERNEL_582+1)
cseg01:000D call KERNEL_506
cseg01:000D GETOPENFILENAME endp
cseg01:000D
cseg01:0012 ;
cseg01:0012 ; External Entry #2 into the Module
cseg01:0012 ; Attributes (0003): Moveable Exported Shared dataseg
cseg01:0012 ;
cseg01:0012
but behind the readable format of a low level (assembler), medium level (C, C++) or high level (ADA, DELPHI) programming language: you have to have a rough idea what functional things you expect. without this, you will not be able to identify the building blocks and their purpose.