Доброго времени суток! Написал загрузчик для программы, защищенной ASProtect. Когда защищенная программа запущена из под отладчика, то всё в порядке...лоадер через WriteProcessMemory изменяет нужный мне код и всё работает. Но стоит только запустить программу загрузчиком, результат нулевой. При этом в лоадере и целевой процесс открывается нормально и запись в память происходит без проблем...Кто-нибудь с этим сталкивался?
кроме того, запускаю защищенную прогу из под отладчика, затем отключаюсь от нее и закрываю Olly. После этого запускаю загрузчик, предварительно указав PID целевого процесса. И всё работает. А вот при запуске проги из лоадера никак
maverick посмотри, какие плагины загружены в Оле - возможно, они обходят какие-нить фичи защиты ASProtect, о которых вы и забыли....
А загрузчик вообще что делает, кроме записи байтов в память? Вражьи потоки перед записью морозит? Исправляемые байты проверяет? А то может оно ещё и распаковаться-то не успело, а ты его уже патчишь
вполне возможно... под олькой как раз всё работает нормально...когда программа исполняется под отладчиком, либо только из под него загружена....(а дальше я от нее отключаюсь, закрываю отладчик и всё тип-топ)...Хотя, может быть, я просто Вас не понял. Алгоритм следующий: 1. Из лоадера запускаю программу на исполнение 2. Появляется окошко для ввода пароля, жду пару секунд (хотя к моменту появления окошка нужные байты распакованы и в процессе проверки серийника код программой никак не изменяется). 3. Открываю процесс 4. Замораживаю главный поток процесса 5. Через WriteProcessMemory пишу в память открытого процесса 6. Размораживаю... 7. Завершаю работу лоадера 8. Ввожу серийник "от балды" (лишь бы по размеру подходил) 9. Нажимаю "ОК" ---------------------------------------------------------------------- Изменяю я байты в процедуре проверки серийника из aspr_ide.dll. -----------------------------------------------------------------------
Всё же стоит проверить, нормально ли записываются байты (причём проверить не только через ReadProcessMemory, который можно перехватить, но и внедрением в адресное пространство или подрубить отладчик к уже крутящемуся процессу). А то вдруг WriteProcessMemory гнусно похучен? ASPR вроде таким раньше не страдал, но времена могли измениться.
хм...возвращаясь к той же Olly, всё работает если защищенную прогу запустить под отладчиком с плагином Hide Debugger от Asterix, с галочками IsDebuggerPresent (что понятно) и Unhandled Exception Tricks...