IAT replace & DLL injecting problem

LoW

Użytkownik
Dołączył
Styczeń 24, 2007
Posty
2
Witam wszystkich pisze bo mam ciekawy problemik:
napisałem sobie prościutki programik dołanczający moja biblioteke do dowolnego działającego programu - użyłem CreateRemoteThread czyli nic nadzwyczajnego po czym w mojej DLL w funkcji DllMain przy jej ładowaniu umiesciłem funkcje zmieniającą aders w IAT funkcji np MessageBoxA na adres mojej funkcji. Wygląda to tak:
Kod:
typedef int (WINAPI* pMessageBoxA)(HWND, LPCTSTR, LPCTSTR, UINT);



pMessageBoxA orgMessageBox;



int WINAPI MyMessageBoxA(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)

{



        orgMessageBox(hWnd, lpText, "HOOKED", uType);

        return 0;

}

a w funkcji DllMain:
Kod:
HMODULE huserdll = LoadLibrary("user32.dll"); 

        orgMessageBox = (pMessageBoxA)GetProcAddress(huserdll, "MessageBoxA");



ret = HijackIAT(spyMod, ntiDllName, ntiApiName, (VOID*)MyMessageBoxA, ((VOID**)&ApiOrg));

                if (ret == 1)

                        orgMessageBox(NULL, "OK", NULL, NULL);

i wszystko jest ok do momentu kiedy w infekowanej aplikacji dochodzi do wywołania podmienionej funkcji
<
za pierwsyzm razem win wywalał się z komunikatem który uaktywniała Funkcja DEP systemu ale kiedy ją wyłączyłem program dalej się sypie ;/
oto fragment zdeasemblowanego krytycznego momentu:

Kod:
MessageBoxA(NULL, "test", NULL, NULL);

            00411A68  mov         esi,esp

            00411A6A  push        0

            00411A6C  push        0

            00411A6E  push        offset string "posredni" (424034h)

            00411A73  push        0

            00411A75  call        dword ptr [__imp__MessageBoxA@16 (42B31Ch)]

bląd ------->        00411A7B  cmp         esi,esp

            00411A7D  call        @ILT+930(__RTC_CheckEsp) (4113A7h)
program wywala się z błędem : Unhandled exception at 0x00d317c1 in testhook.exe: 0xC0000005: Access violation reading location 0x00d317c1

fragment pochodzi z programiku testowego dzie wywołuje podmienianą funkcje

ktoś wie może co robie źle ?? albo może jakieś sugestie co do rozwiązania problemu ??

eh problem już rozwiązałem - okazało się że kiedy program wywoływał podmienioną funkcję to tej już nie było w pamięci bo mój prog podczepiający za szybko ją wyładowywał ;] sorka za banalny problem ale może ktoś kiedyś miał podobny lub bedzie miał :pPP i trafi akurat na to forum. Z drugiej strony jak ktos zna ciekawszy lub bardziej wydajny sposób od tego może go tu przedstawić a byłbym wdzięczny też za jakiś ciekawy monitor uruchamianych procesów ale w UM
 
Do góry Bottom