IAT x64

Тема в разделе "WASM.RESEARCH", создана пользователем AlexCasual, 10 янв 2012.

  1. AlexCasual

    AlexCasual New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2009
    Сообщения:
    120
    Подскажите какие изменения в Import Address Table на x64 по сравнению с x86?
    Вот этот кусок кода под x86 работает отлично :
    Код (Text):
    1. while ( pImportDesc->FirstThunk )
    2. {
    3.    IMAGE_THUNK_DATA* pThunk = (IMAGE_THUNK_DATA*)((BYTE*)hMod + pImportDesc->OriginalFirstThunk);
    4.    int n = 0;
    5.    while ( pThunk->u1.Function )
    6.   {
    7.     char* pszFunName = (char*)((BYTE*)hMod + (DWORD)pThunk->u1.AddressOfData + 2);
    8.     PDWORD lpAddr = (DWORD*)((BYTE*)hMod + pImportDesc->FirstThunk) + n;
    9.     if(strcmp(pszFunName, funcName) == 0)
    10.     {
    11.         DWORD ret = *lpAddr;
    12.         *(DWORD *)lpAddr = newFunc;
    13.                    
    14.         return ret;
    15.     }
    16.     ++n;
    17.     ++pThunk;
    18.   }
    19. ++pImportDesc;
    20. }
    Но под x64 я получаю неверный адрес lpAddr для заданной функции pszFunName...Конкретно для ZombifyActCtx я получаю адрес GetCurrentProcessId...
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Нет разницы кроме NT_HEADER_64 (OptionalHeader)
    Ты не правильно парсиш импорт, почитайте или возьмите готовый .
     
  3. AlexCasual

    AlexCasual New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2009
    Сообщения:
    120
    Подскажите пожалуйста как захучить API в IAT из dll,подгружаемой в процесс?
    Вроде делаю всё верно,но в некоторых модулях перехватываются не все API,а в некоторых и вовсе ни одной не могу перехватить...
    Суть проблемы : в dll_attach получаю базу модуля через GetModuleHandle(NULL) и от неё начинаю шаманство с IAT,функции нужные находятся,адреса валидные...Точно знаю,что целевой процесс вызывает те API,которые пытаюсь перехватить,но...безуспешно...Если же перехватываю API по тому же алгоритму,но только пишу EXEшник,то всё отлично работает...
     
  4. AlexCasual

    AlexCasual New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2009
    Сообщения:
    120
    Короче проблема такая - с целью полного контроля вызова API заменяю её адрес в IAT КАЖДОГО ЗАГРУЖЕННОГО В АП ПРОЦЕССА МОДУЛЯ на свой адрес...НО при это приложение начинает работать нестабильно - пропадают элементы GUI и т.п...Как можно решить эту проблему?
     
  5. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    Решение очевидно - написать работоспособный код.
    Нам что, угадать где у вас ошибка?