Inject(снова)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by n3ls0n, 13 Apr 2010.

  1. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Есть инжект всего образа в целевой процесс.
    Вопрос в том что если делать основную функцию которою внедрять в ап процесса небольшую (то есть пару месидж боксов все раб ок ) но если использовать там WinAPI ws2_32.dll то получается так что функции в разных ап после чего приложение аварийно закрывается может пример есть у кого кода с решением программы ?
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    1) у тебя в заинжектеном коде должно быть всё валидно с импортом.
    Если kernel32.dll и user32.dll грузятся по статическому адресу. то адреса могут быть еще одинаковыми, а вот другие либы не факт что загрузятся туда же.
    По этому внутри инжекта ты сам должен импорт делать. т.е.
    1) заново подрузить все либы нужные
    2) через GetProcAddress найти адерса всех функций которые будешь использовать
     
  3. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    вот моя функция
    typedef int ( PASCAL FAR *PWSASTARTUP )( WORD wVersionRequired, LPWSADATA lpWSAData );

    DWORD WINAPI Func(LPVOID lpParam)
    {
    HMODULE hWinSock2 = LoadLibraryA("ws2_32.dll");
    PWSASTARTUP pWSAStartup = (PWSASTARTUP)GetProcAddress(hWinSock2,"WSAStartup");
    WSADATA FWSAData ;
    pWSAStartup(0x0202,&FWSAData);


    }
     
  4. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    что там не так ?
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ну ты еще проверяй валидность всех параметров. Может GetProcAddress неправильно возвращает.
    А вообще я делаю импорт так:
    int (WINAPI *_WSAStartup)( WORD, LPWSADATA );

    if (!(*(void **)&_WSAStartup = _GetProcAddress(ws2_32_dll, "WSAStartup"))) return 0;
    и потом юзаешь по обычному _WSAStartup(xxxxxx)
     
    2 people like this.
  6. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    у меня после этой стоки приложение крешется
    PWSASTARTUP pWSAStartup = (PWSASTARTUP)GetProcAddress(hWinSock2,"WSAStartup");
    в чем проблема ?
     
  7. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    к стати у меня win 7
     
  8. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    ты прогу от админа запускаешь?
     
  9. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    ясен хрен что да )))
     
  10. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,296
    Reputations:
    327
    все просто до нельзя. копируй по базе. сделай фиксированную у своего ехе, и копируй в АП чужого процесса по этойже базе. создай ремот тред. это будет точка входа 2. при исполнении в чужом теле первым делом вызови LoadLibrary для тех библей, на которые у тебя есть импорты но которые возможно не загружены.

    короче пришли код, я его тебе отмодю
     
  11. n3ls0n

    n3ls0n New Member

    Joined:
    12 Apr 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    всем спасибо уже сделал проблема была в crt модулях (просто поставил MVS 2010 ) к стати API искал не GetProcAddress а по crc32 сумме (в бэкдоре товарища eL~ )