Ламерский вопрос, но... В общем основная задача - скрытые проги от антивируса. Стандартная EP данного файла (злостного вируса указывает на код с единственной интсрукцией ret. А затем в runtime процесса (опять же, вируса) нужно поменять eip главного потока на настоящий код (распаковщик). В принципе, хотел сделать так: создаю процесс с флагом CREATE_SUSPENDED, получаю CONTEXT главного потока, правлю eip, SetThreadContext, ну и возобновить главный поток. Фигня поисходит на 2 пункте - GetThreadContext возвращает ERROR_NOACCESS. И как можно воплотить сие в жизнь? Надеюсь не только средствами DebugAPI P.S. Кстати, да, подобная тема на форуме была, но там не совсем то, что надо. Код (Text): xor ebx, ebx call [CreateProcess], ebx, Process, ebx, ebx, ebx, CREATE_SUSPENDED, ebx, ebx, sinfo, pi call [GetThreadContext], [pi.hThread], context ; <-- ERROR_NOACCESS mov [context.regEip], 0146A162h call [SetThreadContext], [pi.hThread], context call [ResumeThread], [pi.hThread] ret sinfo STARTUPINFO pi PROCESS_INFORMATION context CONTEXT
//offtop mix_mix скажу тебе по секрету, антивирь сильно ругается на SetThreadContext (динамическая защита, конечно).
Hellspawn Эмм... прошу заметить, что ошибку возвращает GetThreadContext. --Added Тоесть здесь получается, что я пытаюсь изменить контекст потока другого процесса.
Hellspawn Да, не догнал сразу насчет твоего совета. Thanx Ну а вобщем ошибка была как всегда в самой незначительной части проги - структуру CONTEXT надо выравнивать по границе 4 байта. Блин, я чуть со смеху не помер
Оффтоп. А про выравнивание структур для АПИ вызовов - это уже из разряда рекомендаций для скорости перешло в разряд обязательных требований разве? Я в шоке. А в документации от мелкомягких кто-нибудь видел подобные требования по выравниванию структур? Ткните носом пжлста)