создание процесса
От: 1Pavel1  
Дата: 16.04.06 14:45
Оценка:
есть PE файл, в зашифрованном виде. нужно из программы запустить этот файл в отдельном процессе (предварительно дешифровав) и передать ему управление. после завершения работы в этим PE он должен быть опять закриптован. так вот, хотелось бы дешифровывать этот файл не на диск а в память, и запускать его в процесс из памяти. тогда отпала бы необходимоть опять криптовать его после завершения. если это фозможно орбъясните как. желательно с примером.
так же вопрос: для шифровки, расшифровки что лучше использовать? пока остановился на CryptoApi.
систма windows 2000,XP. язык VC++.
Re: создание процесса
От: Bill_Prisoner2  
Дата: 16.04.06 20:41
Оценка: -1
Идеально никак. Можно немного извернуться. Например — в своем процессе ты заугружаешь модуль с помощью LoadLibrary расшифровываешь. Создаешь новый процесс — любой, приостанавливаешь первичный поток. С помощью WriteProcessMemory копируешь расшифрованный модуль в созданный процесс. С помощью SetThreadContext изменяешь EIP первичного потока.

Другим способом может быть — вставка в шифрованный PE декриптор на который передается EP.
NOP or XCHG EAX,EAX — what is the best?
Re[2]: создание процесса
От: Вумудщзук Беларусь  
Дата: 17.04.06 07:35
Оценка:
>Идеально никак. Можно немного извернуться....
так уж и никак? пишешь фильтр файловой системы, который мониторит чтение файлов. Запускаешь свой закриптованный на диске файл обычным образом (CreateProcess), перед этим нужно сообщить фильтру, какой файл собираешься запускать и, если надо, параметры шифрования (кличик). Фильтр же висит на IRP_MJ_READ и для "правильных процессов" дешифрует прочитанные данные, для остальных — блокирует доступ.
Homo sum et nihil humani a me alienum puto...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.