Проблемы с инжектом

Тема в разделе "WASM.WIN32", создана пользователем Freecod, 29 июн 2008.

  1. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Делаю инжектирование в explorer меняя контекст нити. Вроде работает, но проблема - через раз. Т.е. захочет - работает, не захочет - ошибка исполнения по адресу, куда внедряю код, либо просто перезапуск эксплорера. Кто сталкивался, как это забороть?
    Ничего новенького из приватов не повылазило? =) Или всё так же альтернативы - SetThreadContext или CreateRemoteThread?
     
  2. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Thread перед инжектом надо засуспендить и уже потом менять контекст.
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    из паблик есть еще APC
     
  4. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    > из паблик есть еще APC
    Это как?
     
  5. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    это в гугл - говорят же паблик.
    (Asynchronous Procedure Call)
    только он конечно не везде подойдет
    не все потоки юзермода удовлетворяют
    необходимым условиям для работы APC
     
  6. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    не поделитесь тогда паблик сорсом инжекта в уже существующий процесс? Сообственно интересует код до рабочего OpenProcess. Кое что есть, но как я говорил, работает через раз, и причины этого пока выявить не удалось.
     
  7. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Писал когда-то...
     
  8. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Портирую код получения привелегий на Си, не проясните этот момент, как оно будет выглядеть на Си?

    Код (Text):
    1. //заполняем структуру
    2.     tkp.PrivilegeCount = 1;
    3.     _asm{
    4.     lea eax,tkp.Privileges
    5.     assume eax:ptr LUID_AND_ATTRIBUTES
    6.     push luid.LowPart
    7.     pop [eax].Luid.LowPart
    8.  
    9.     push luid.HighPart
    10.     pop [eax].Luid.HighPart
    11.  
    12.     mov [eax].Attributes,SE_PRIVILEGE_ENABLED
    13.     }
    VS не хочет жувать assume...
     
  9. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Freecod
    Не знаю как на Си, а на асме вроде так:

    _asm{
    lea eax,tkp.Privileges
    push luid.LowPart
    pop [eax]

    push luid.HighPart
    pop [eax+4]

    mov [eax+8],SE_PRIVILEGE_ENABLED
    }

    Ну ты и лентяй, однако. Тупой копипаст? Даже в структуру лень заглянуть?
     
  10. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    заюзай RtlAdjustPrivilege :)
     
  11. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Aspire
    А ты не писал для инжекта ехе , полностью? =)
     
  12. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    И - если можно, пример на Си простого инжекта в уже существующий процесс, работающий на 100%, а не от случая к случаю. Полчаса ковыряю яндекс, попадаються одни "тепличные" с запуском процесса самим, или куски нерабочего кода =(
    Просто хочется некий кусок рабочего кода, от которого можно мыслить дальше
     
  13. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Aspire: нет, пока отправил пост, залез в структуру и уже всё сделал =)
    но - да, я лентяй )
     
  14. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Писал. Есть такое, там загрузчик свой. Могу скинуть исходник, только пользы от этого для тебя, боюсь не будет.
    А вот, если сам напишешь, то будет. Могу помочь.

    ЗЫ. Если я правильно тебя понял?
     
  15. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Aspire скинь исходник пожалуйста. Очень интересно.
     
  16. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    Хм, честно говоря не вижу как можно написать свой инжектор "с нуля". Используется чётко определённый набор специфичных функций, так что простора "для творчества" миниум.
     
  17. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    asmic Нет уж. Начни разбираться с загрузкой файла из памяти. Статей на эту тему предостаточно. Задавай вопросы, чем смогу, тем помогу.
    А вообще, смысла грузить экзе (а не длл) в чужой процесс, я не вижу.
     
  18. Freecod

    Freecod New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2006
    Сообщения:
    136
    > А вообще, смысла грузить экзе (а не длл) в чужой процесс, я не вижу.
    Как раз хотел сказать то же самое. Пихай код в DllMain, в самом начале заглушку

    Код (Text):
    1. if (fdwReason != DLL_PROCESS_ATTACH)
    2.     {
    3.     //  MessageBox(0,"Деаттач", "Отладка", 0);
    4.         return true;
    5.     }
    а после твой код.
     
  19. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) а если в длл майн процедура обработки окна , и еще поиск места нахождения файла ? У меня на этом этапе всегда раньше падало =(
     
  20. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ПОТОК создавай, в нём слип для бодрости, а дллмайн пусть неотложно выкидывает ТРУ.
    это по ускоренной программе. по правилам будешь плакать.