IDA relies on loader modules to perform the grunt work of creating the initial layout of new databases. Loaders are utilized when a user chooses to open a new file, and the loader’s job is to read the input file into the newly created database, create sections according to the structure of the input file, and generally organize the layout of the database prior to passing control to the processor module, whose job it is to perform any disassembly-related tasks. Once a database has been created, IDA may invoke special functions in the original loader in order to handle the movement of database segments and in order to produce an EXE file (File ▸ Produce File ▸ Create EXE File).
The loading process begins when a user chooses to open a new file (loaders are not used to load existing databases). Like plug-ins, loaders may be built as shared library components using the IDA SDK. Loaders were the first of IDA’s extension modules capable of being implemented using scripts (introduced in IDA 5.6).
Once a new binary has been selected, IDA loads, in a dynamic library sense, each loader module in the <IDADIR>/loaders directory and asks each module to examine the binary. All loaders that recognize the format of the new file are listed in the file-loading dialog, and it is up to the user to decide which loader should be used to load the file.