Отладка кода внедрённого в процесс.

Тема в разделе "WASM.BEGINNERS", создана пользователем ant0xa, 17 июл 2009.

  1. ant0xa

    ant0xa New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2009
    Сообщения:
    29
    Делаю inject в процесс IE. Код уже большой и хз как его отлаживать. Влится всё время в разных местах и не всегда. Запись лога действий в файл уже не помогает :dntknw: OllyDebug как-то не выходит ибо не умею её пользовать. Подскажите как отлаживать такой код.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код в студию.
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ну если ты не умеешь пользоваться отладчиком, то как ты хочешь отлаживать код?
    вообще, попробуй сделать так: открыть в ольке (да, отладчик знать надо) IE, потом своим софтом сделать внедрение. В начале своего кода можно даже поставить инт3.

    Если отладчик категорически не рассматривается, то только вести лог событий. Иначе, что еще ты ожидаешь услышать на свой вопрос?
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ant0xa
    а чем приатач к процессу из VS не устраивает?
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну так учись. Во многих вопросах ответ кроется в тексте самого вопроса.
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Я все таки не пойму что за таинственные силы мешают использовать VS я так делаю, я там даже асма не вижу )
     
  7. Clyde

    Clyde New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    154
    OutputGebugString как вариант?
     
  8. ant0xa

    ant0xa New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2009
    Сообщения:
    29
    SPA
    Это как ? После завершения моего процесса из студии отлаживать его уже не получается. После приатачивания к процессу эксплора никакой символьной информации не видать.


    Вот код инджекта.
    Код (Text):
    1. #define BASEADR 0x13110000
    2. bool WINAPI InjectAndRun(HANDLE HProcess, void* hook){
    3.     SetPrivilege("SeDebugPrivilege",true);
    4.     HMODULE me=(HMODULE)BASEADR;
    5.     VirtualFreeEx(HProcess,me,0,MEM_RELEASE);
    6.     DWORD dwSize=((PIMAGE_OPTIONAL_HEADER)((LPVOID)((BYTE*)(me)+((PIMAGE_DOS_HEADER)(me))->e_lfanew+sizeof(DWORD)+sizeof(IMAGE_FILE_HEADER))))->SizeOfImage;
    7.     char *pMem=(char *)VirtualAllocEx(HProcess,me,dwSize,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
    8.     if(pMem==NULL)
    9.         return false;
    10.     DWORD dwOld,dwNumBytes,i;
    11.     MEMORY_BASIC_INFORMATION mbi;
    12.     VirtualQueryEx(HProcess,pMem,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
    13.     while(mbi.Protect!=PAGE_NOACCESS && mbi.RegionSize!=0){
    14.         if(!(mbi.Protect&PAGE_GUARD)){
    15.             for (i=0;i<mbi.RegionSize;i+=0x1000){
    16.                 VirtualProtectEx(HProcess,pMem+i,0x1000,PAGE_EXECUTE_READWRITE,&dwOld);
    17.                 WriteProcessMemory(HProcess,pMem+i,pMem+i,0x1000,&dwNumBytes);
    18.             }
    19.         }
    20.         pMem+=mbi.RegionSize;
    21.         VirtualQueryEx(HProcess,pMem,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
    22.     }
    23.     DWORD dwRmtThdID;
    24.     HANDLE hRmThd = CreateRemoteThread(HProcess,NULL,NULL,(LPTHREAD_START_ROUTINE)hook,(LPVOID)me,NULL,&dwRmtThdID);
    25.     if (hRmThd==NULL)
    26.         return false;
    27.     SetPrivilege("SeDebugPrivilege",false);
    28.     return true;
    29. }
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Тоесть релоки вы не используете. Если этот адрес будет занят проекцией, то этой функцией она не будет освобождена.
    Предложу настроить загрузчик, чтобы он подгрузил модуль корректно с релоками из памяти, затем записать в процесс этот код с образом модуля и выполнить его там.
     
  10. ant0xa

    ant0xa New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2009
    Сообщения:
    29
    Поделитесь лучше как кто такой код отлаживае в чужих процессах.
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Ты не поверишь. Отладчик и третье прерывание - это все, что надо для отладки. Тебе уже все написали. Что еще ты ожидаешь услышать?
     
  13. ant0xa

    ant0xa New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2009
    Сообщения:
    29
    некропост.
    хотелось с символьной информацией отлаживать но т.к. не выходит, то DbgPrint ну и int 3 для крайних случаев.

    Clerk
    уже переписано - экзешник собран с релоками. релоки фиксяться, импорт тоже. на момент написание способ инжекта был второстепенным - весь упор был на отладке payload.
     
  14. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    WinAPI log + call addr log
     
  15. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    еще можна сделать инжект в свою прогу(в ту которой из которой делаеться инжек) (как в примере Рихтера про инжект)