Проблема с лоадером. Моя программа сама запускает нужный файл и должен потом туда внедрить свой dll для хука определенных функций. Схема обычная: CreateProcess, потом по PROCESS_INFORMATION.hProcess -> VirtualAllocEx\WriteProcessMemory\CreateRemoteThread. На мошних машинах внедряется с 20-ого раза, чаще всего даже бывает, что внедряется, но не успевает хукать. Не подскажите как решить эту проблему? Надо как-то остановить работу файла пока я не закончил свои темные дела, а потом сново продолжить.
а почему бы не запускать процес замороженным? а после того, как сделаешь свои темные дела, ResumeThread???
схема должна быть такая: запустить процесс "засуспенденным" и вписать на Entry Point jmp $ (0xEB,0xFE), отпустить процесс, подгрузить длл которая поставит хуки, "засуспендить" процесс опять и вернуть оригинальные байты с Entry Point на место, отпустить процесс трюк c jmp $ нужен для работоспособности в любых системах, например в 2k и XP dll подгружается в "засуспенденный" процесс с разным эффектом
Проще создать поток остановленным, изменить CONTEXT.regEax(Адрес ModuleEntryPoint) или ниже CONTEXT.regEip(ThreadInitRoutine) на свой код и выполнить после инжекта ResumeThread.
Описание проблемы чуток каряво написал, хорошо что вы поняли о чем я Благодарю за идеи, тему можно считать исчерпанным.