OpenRCE_RolfRolles
November 24th, 2007, 18:50
This topic comes up occasionally, so it's worth a quick investigation. Your IDA directory has a subdirectory called 'ids' that contains more directories, which in turn contain .IDS files. .IDS files do two things: they define a mapping between ordinal numbers and symbol names (which may be mangled, and may contain the number of function arguments and their types), and secondly they allow (optional) comments for those functions.
The IDSUTIL package ("http://www.datarescue.com/idabase/ida/idsutils51.zip") from DataRescue's website (only available to customers) provides tools to create .IDT files from statically-linked libraries and then to convert those into .IDS files. .IDT files are flat text files whose syntax is described in the readme.txt inside of the IDSUTIL package.
The 'ar2idt' tool produces an .IDT file from a .LIB. Its command-line syntax is "ar2idt [filename].[lib/obj/o/etc.]" to produce [filename].IDT. This tool supports several different object-file formats, as different compiler vendors use different ones.
Here's a sample from an .IDT file:
0 Name=MSGS.DLL
1 Name=??0CBaseMtm@@IAE@AAVCRegisteredMtmDll@@AAVCMsvSession@@@Z
2 Name=??0CBaseServerMtm@@IAE@AAVCRegisteredMtmDll@@PAVCMsvServerEntry@@@Z
3 Name=??0CMsgActive@@IAE@H@Z
4 Name=??0CMsvDefaultServices@@QAE@XZ
5 Name=??0CMsvEntrySelection@@QAE@XZ
313 Name=??0CMsvFindOperation@@IAE@AAVCMsvSession@@ABVTDesC16@@IAAVTRequestStatus@@@Z
314 Name=??0CMsvFindResultSelection@@QAE@XZ
6 Name=??0CMsvOperation@@QAE@AAVCMsvSession@@HAAVTRequestStatus@@@Z
After you have an .IDT file, the zipids.exe tool is used to turn an .IDT file into an .IDS file. Its command-line is simply "zipids [filename].IDT" to create [filename].IDS.
https://www.openrce.org/blog/view/769/IDA's_.IDS_Files_Part_I
The IDSUTIL package ("http://www.datarescue.com/idabase/ida/idsutils51.zip") from DataRescue's website (only available to customers) provides tools to create .IDT files from statically-linked libraries and then to convert those into .IDS files. .IDT files are flat text files whose syntax is described in the readme.txt inside of the IDSUTIL package.
The 'ar2idt' tool produces an .IDT file from a .LIB. Its command-line syntax is "ar2idt [filename].[lib/obj/o/etc.]" to produce [filename].IDT. This tool supports several different object-file formats, as different compiler vendors use different ones.
Here's a sample from an .IDT file:
0 Name=MSGS.DLL
1 Name=??0CBaseMtm@@IAE@AAVCRegisteredMtmDll@@AAVCMsvSession@@@Z
2 Name=??0CBaseServerMtm@@IAE@AAVCRegisteredMtmDll@@PAVCMsvServerEntry@@@Z
3 Name=??0CMsgActive@@IAE@H@Z
4 Name=??0CMsvDefaultServices@@QAE@XZ
5 Name=??0CMsvEntrySelection@@QAE@XZ
313 Name=??0CMsvFindOperation@@IAE@AAVCMsvSession@@ABVTDesC16@@IAAVTRequestStatus@@@Z
314 Name=??0CMsvFindResultSelection@@QAE@XZ
6 Name=??0CMsvOperation@@QAE@AAVCMsvSession@@HAAVTRequestStatus@@@Z
After you have an .IDT file, the zipids.exe tool is used to turn an .IDT file into an .IDS file. Its command-line is simply "zipids [filename].IDT" to create [filename].IDS.
https://www.openrce.org/blog/view/769/IDA's_.IDS_Files_Part_I