Vista, странности с WriteProcessMemory (или с другим)

Тема в разделе "WASM.WIN32", создана пользователем ostapka, 15 фев 2008.

  1. ostapka

    ostapka New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2004
    Сообщения:
    4
    Войны Дзена, помогите разобраться.
    прога - инжектит код в чужой процесс, всё стандартно но не работает.. начал копаться используя ollydbg, ситуация такая

    p = VirtualAllocEx( h, 0, MAXINJECTSIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE ); отрабатывает нормально
    p после этого = 0x37000
    в ollydbg в процессе куда инжектю эта страница в карте памяти показывается

    Memory map, item 14
    Address=00370000
    Size=00001000 (4096.)
    Owner= 00370000 (itself)
    Section=
    Type=Priv 00021040
    Access=RWE
    Initial access=RWE

    дальше по коду
    if ( ! WriteProcessMemory( h, p, &bem, MAXINJECTSIZE, 0 ) ) где bem адрес кода для инжекта (тоже вроде всё стандартно), отрабатывает нормально, в памяти по адресу 0x37000 появляется следущее (до этого 0и)

    00370000 - E9 194F0600 JMP 003D4F1E <-- по идее (как мне кажется) это должен быть jmp на собственно код инжекта
    00370005 - E9 14D80000 JMP 0037D81E <- этот мусор хз откуда....
    0037000A - E9 9FF90000 JMP 0037F9AE <--
    0037000F - E9 EA600000 JMP 003760FE <--
    00370014 - E9 B5CF0000 JMP 0037CFCE <--
    00370019 - E9 80260000 JMP 0037269E

    но этого адреса 003D4F1E просто нет, и последующий CreateRemoteThread есстественно валит процесс, olly вываливается - по адресу eip 003D4F1E (где глубокое ничто)
    т.е. я не понимаю куда копируется код инжекта и в целом почему так происходит.

    помогите словом или ссылкой

    спасибо.
     
  2. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Забей на createremotethread в висте. Юзай RtlCreateUserThread только так можно заинжектиться в explorer и проч., ибо в висте CreateRemoteThread неповсюду работает. RtlCreateUserThread начинает поток не с BaseThreadStart, поэтому инжектить надо код и явно вызывать ExitThread.
     
  3. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    А интересно в висте RtlRemoteCall норм. работает?