он попросту не будет знать,
Столкнувшись с "нашим" исключением, он попросту не будет знать, что с ним делать и с вероятностью близкой к единице, просто завершит приложение в аварийном режиме.
Теоретически, установку нового обработчика легко отследить, установив аппаратную точку останова по доступу к памяти на адрес FS:[00000000h]. Операционные системы семейства NT позволяют прикладным приложениям манипулировать с отладочными регистрами через контекст, причем, отладочный регистр действует лишь в рамках "своего" процесса, не мешая работать всем остальным, но 9x "забывает" сохранять отладочные регистры в контексте "своего" процесса и они приобретают глобальный характер, воздействующий на все процессы! Так что в ней этот трюк не проходит.
А вот другой способ: устанавливаем драйвер, перехватывающий исключения на уровне IDT и взаимодействующий со своим процессом либо через DeviceIoControl, либо через
NtReadVirtualMemory/NtWriteVirtualMemory/KeDeattachProcess/KeAttachProcess. Это вполне надежно, однако, написание драйверов — занятие утомительное и совсем небезопасное в плане "голубых экранов смерти". К тому же, разработчику защиты придется либо наотрез отказываться от поддержки 9x (которая все еще жива!), либо реализовывать сразу два драйвера! Тем не менее, защиты такого типа все-таки встречаются.
Независимо от того, как происходит обработка исключения, сломать такую защиту очень просто! Читаем первую страницу, дожидаемся завершения расшифровки, сохраняем ее на диск, обращаемся к следующей странице и... действуем так до тех пор, пока в наших руках не окажется весь образ целиком. Стоит только внедрить код дампера в адресное пространство защищенного процесса и… протектору будет очень сложно отличить обращения самой программы от обращений дампера.
Последние версии протектора Armadillo, недавно переименованного в Software Passport, реализуют намного более надежный, хотя и чрезвычайно низко производительный механизм трассирующей расшифровки, при котором весь код программы зашифрован целиком.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий