Import API analyzer example
The following example is the iat_parser.cpp
source code under the Chapter#5 folder of the GitHub project. In order to save space, this book only extracts the highlighted code. Please refer to the complete source code to read the full project.
Let’s try writing tools to analyze which system functions are imported into EXE programs. Figure 5.4 shows the entry function of iat_parser.cpp
:
Figure 5.4 – The main function of iat_parser.cpp
At lines 44-50 of the code, we first read the entire program into memory by fopen
, and get the size of the global IAT and its RVA from the 13th item (i.e., IMAGE_DIRECTORY_ENTRY_IAT
) in DataDirectory
. Since each field in the global IAT is the correct system function address that is referenced in the .text section, and will point to the RVA of the system function name storage structure (IMAGE_IMPORT_BY_NAME
) on the INT, each field is therefore an IMAGE_THUNK_DATA
variable. We simply...