Пройтись по таблице ? На этот вопрос миллиард ответов, вбей в гугл такие же ключевые словаКак руками получить iat import ?
std::unordered_map<std::string, std::ptrdiff_t> get_IAT( HINSTANCE module ) {
std::unordered_map<std::string, std::ptrdiff_t> IAT;
std::uintptr_t module_base = reinterpret_cast<std::uintptr_t>( module );
auto import_descriptor = reinterpret_cast<PIMAGE_IMPORT_DESCRIPTOR>( ( reinterpret_cast<PIMAGE_NT_HEADERS>( module_base + ( reinterpret_cast<PIMAGE_DOS_HEADER>( module_base ) )->e_lfanew ) )->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress + module_base );
while ( import_descriptor->Name )
{
auto og_first_thunk = reinterpret_cast<PIMAGE_THUNK_DATA>( module_base + import_descriptor->OriginalFirstThunk );
auto first_thunk = reinterpret_cast<PIMAGE_THUNK_DATA>( module_base + import_descriptor->FirstThunk );
while ( og_first_thunk->u1.AddressOfData )
{
const auto& method_name = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>( module_base + og_first_thunk->u1.AddressOfData );
IAT[method_name->Name] = first_thunk->u1.Function;
++og_first_thunk;
++first_thunk;
}
import_descriptor++;
}
return IAT;
}
int main( ) {
const auto& mod = GetModuleHandleA( nullptr );
auto iat = get_IAT( mod );
auto max_name_length = *std::max_element( iat.begin( ), iat.end( ), []( const std::pair<std::string, std::ptrdiff_t>& p1, const std::pair<std::string, std::ptrdiff_t>& p2 ) { return p1.first.size() < p2.first.size(); } );
for ( auto& imp : iat ) {
std::cout << imp.first << std::setw( max_name_length.first.size( ) - imp.first.size( ) + 1) << " " << std::setw( 1 ) << "0x" << std::hex << imp.second << std::endl;
}
std::cout << std::setw( ( max_name_length.first.size( ) + 12 ) / 2) << max_name_length.first.size( ) << std::endl;
}
если есть пешник, то просто пройдись по таблице, если нету, то найди iat, получи адресс импорта, получи дллку по адресу, парси экспорт таблицу дллки, и получай нейм импортаКак руками получить iat import ?
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
Мастер есенин эксперт по импортам таркова, напиши ему!Как руками получить iat import ?
зачем тебе ссылка на указательconst auto& method_name = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>( module_base + og_first_thunk->u1.AddressOfData );
huh?Мастер есенин эксперт по импортам таркова, напиши ему!
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz