Как вы связываетесь с ЭЛТ?Статический или динамический?
Я скомпилировал образец в VS2010 (с динамическим / DLL CRT) и загрузил полученный .exe в IDA Pro.Взяв в качестве примера функцию Fatal
(из примера), все ее вызовы printf
компилируются непосредственно в ссылки на запись импорта .exe для этой функции (т. Е. __imp__printf
).Возможно, поэтому вы не видите их в вашей свалке.Если я использую статическую связь с CRT (с инкрементным включением), он вызывает ILT.Если я выключаю инкрементный вызов, он вызывает printf
напрямую (так как он не импортирует его)
С динамическим CRT, косвенный (вызывает импорт) и ILT (вызывает косвенный; ваш «батут», я считаю,) версии функции printf и тому подобное все еще существуют в инкрементном .exe, но не имеют ссылок на них.
Образец правильно выводит ILT (пример printf ниже), так что я бы подумал, что это будетв состоянии правильно вывести их в дамп символа функции, когда они действительно вызваны.Тем не менее, мой опыт работы с DIA ограничен, так что сейчас я более или менее говорю из своей задницы.
0x00011799 (PublicSymbol) @ILT+1940(_printf)