Делаю инжектирование в explorer меняя контекст нити. Вроде работает, но проблема - через раз. Т.е. захочет - работает, не захочет - ошибка исполнения по адресу, куда внедряю код, либо просто перезапуск эксплорера. Кто сталкивался, как это забороть? Ничего новенького из приватов не повылазило? =) Или всё так же альтернативы - SetThreadContext или CreateRemoteThread?
это в гугл - говорят же паблик. (Asynchronous Procedure Call) только он конечно не везде подойдет не все потоки юзермода удовлетворяют необходимым условиям для работы APC
не поделитесь тогда паблик сорсом инжекта в уже существующий процесс? Сообственно интересует код до рабочего OpenProcess. Кое что есть, но как я говорил, работает через раз, и причины этого пока выявить не удалось.
Портирую код получения привелегий на Си, не проясните этот момент, как оно будет выглядеть на Си? Код (Text): //заполняем структуру tkp.PrivilegeCount = 1; _asm{ lea eax,tkp.Privileges assume eax:ptr LUID_AND_ATTRIBUTES push luid.LowPart pop [eax].Luid.LowPart push luid.HighPart pop [eax].Luid.HighPart mov [eax].Attributes,SE_PRIVILEGE_ENABLED } VS не хочет жувать assume...
Freecod Не знаю как на Си, а на асме вроде так: _asm{ lea eax,tkp.Privileges push luid.LowPart pop [eax] push luid.HighPart pop [eax+4] mov [eax+8],SE_PRIVILEGE_ENABLED } Ну ты и лентяй, однако. Тупой копипаст? Даже в структуру лень заглянуть?
И - если можно, пример на Си простого инжекта в уже существующий процесс, работающий на 100%, а не от случая к случаю. Полчаса ковыряю яндекс, попадаються одни "тепличные" с запуском процесса самим, или куски нерабочего кода =( Просто хочется некий кусок рабочего кода, от которого можно мыслить дальше
Писал. Есть такое, там загрузчик свой. Могу скинуть исходник, только пользы от этого для тебя, боюсь не будет. А вот, если сам напишешь, то будет. Могу помочь. ЗЫ. Если я правильно тебя понял?
Хм, честно говоря не вижу как можно написать свой инжектор "с нуля". Используется чётко определённый набор специфичных функций, так что простора "для творчества" миниум.
asmic Нет уж. Начни разбираться с загрузкой файла из памяти. Статей на эту тему предостаточно. Задавай вопросы, чем смогу, тем помогу. А вообще, смысла грузить экзе (а не длл) в чужой процесс, я не вижу.
> А вообще, смысла грузить экзе (а не длл) в чужой процесс, я не вижу. Как раз хотел сказать то же самое. Пихай код в DllMain, в самом начале заглушку Код (Text): if (fdwReason != DLL_PROCESS_ATTACH) { // MessageBox(0,"Деаттач", "Отладка", 0); return true; } а после твой код.
=) а если в длл майн процедура обработки окна , и еще поиск места нахождения файла ? У меня на этом этапе всегда раньше падало =(
ПОТОК создавай, в нём слип для бодрости, а дллмайн пусть неотложно выкидывает ТРУ. это по ускоренной программе. по правилам будешь плакать.