инжект кода

Тема в разделе "WASM.BEGINNERS", создана пользователем tiranosaur, 9 янв 2012.

  1. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    Господа кодеры дайте плиз пример. суть траблы
    Есть прога, под протом, при запуске загружаются длл. Нужно
    - запускается что то типа трейнера
    - разово поправить код.
    - в дальнейшем при запуске трейнера внедрить длл с обработкой.
    поделитесь инфой пжл. спс
    ЗЫ Рихтера читал там про апи функции. а нужна правка экспорта длл в памяти другого процесса.
    ЗЫЫ а в чем разница между апи функциями и функциями в подгружаемых длл? кроме привилегий?
     
  2. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    tiranosaur
    Я не понимать вопроса и вообще хз что.
     
  3. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    Хм, есть прога, под фимой. запускаю ее, запускаю другую, вторая правит несколько байт в длл первой. нужна статья с примером.
     
  4. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    tiranosaur
    Врятле кто для вас писать будет статьи.
     
  5. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    осподи. пример, ссылку на готовую статью
     
  6. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    tiranosaur
    разница тут в том что в первом случае длл грузятся по фиксированому адресу вбитому в PE хедере (ImageBase) а во втором варианте длл-ку подгружаем мы сами потому она оказывается не по тем адресам и нам приходится вручную править reloc-и..
    но еще небольшая разница в том что если ты первый раз грузишь длл в память то тебе там ничего непонятно и править релоки приходится загрузчику.

    а чтобы поменять пару байт в чужой длл ничего не требуется особого, практически оно выглядит так
    mov byte ptr [PathAddr1], BYTE1
    mov byte ptr [PathAddr2], BYTE2

    главное быть в адресном пространстве нужного процесса и чтобы память была разрешена на запись.
     
  7. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    ASMatic Как получить доступ к памяти? не собираюсь пока подгружать длл. желательно пример на с++ или асме. спасибо[ b]ASMatic[/b]
     
  8. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    Существует для решения этой проблемы мегафункция WriteProcessMemory
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674%28v=vs.85%29.aspx.
    Вот простейший исходник инжекта http://tuts4you.com/download.php?view.2140.
     
  9. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    Пасибо )))
     
  10. 0x89e5

    0x89e5 New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2012
    Сообщения:
    8
    На wasm.ru много статей, по данной тематики, например уже затертый до дыр цикл статей MS-Rem...
     
  11. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    (((( написал не пашет. подскажите пжл где не прав в говнокоде???

    #include "stdafx.h"
    #include <windows.h>
    #include "iostream"
    using namespace std;

    int _tmain(int argc, _TCHAR* argv[])
    {
    DWORD processID;
    DWORD address = 0x01002394;
    int value=0;
    //DWORD lpflOldProtect;

    HWND gameHwnd = FindWindowA( NULL, "Сапер" );
    GetWindowThreadProcessId( gameHwnd, &processID );
    HANDLE gameProcess;
    gameProcess = OpenProcess( PROCESS_ALL_ACCESS, false, processID );


    ReadProcessMemory(gameProcess, (void*)address, &value, 1, NULL);
    cout << value;

    cin.get();
    return 0;
    }
     
  12. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    tiranosaur
    что за адрес 0x01002394?
     
  13. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    В оле call TranslateMessage

    01002394 |. FF15 4C110001 |CALL DWORD PTR DS:[<&USER32.TranslateMe>; \TranslateMessage
     
  14. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    tiranosaur
    И в чем проблема? У меня нормально ваш исходник работает. Выдает 255. Для 2395 - 21 И т.д.
    А вам советую олли применить по назначению - посмотреть, что у вас не так.
    Или хотя бы поставить анализ кодов возврата.
    Правда единственно, где может не сработать - это поиск окна.
     
  15. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    Не пашет((( пид хендл определяет верно проверял Greatis WinDowse
     
  16. tiranosaur

    tiranosaur New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2011
    Сообщения:
    32
    готово))))
     
  17. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    tiranosaur
    Так пора бы уже знать, что многое на 7-ке по-другому пишется. И не пытатся там запустить то, что на ХП работало.
     
  18. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    valterg
    Вы хотели сказать на 8-ке ? =)
     
  19. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    рекомендую после ReadProcessMemory вызвать GetLastError и посмотреть в чем дело