Показать сообщение отдельно
Старый 25.05.2007, 07:04   #10
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)

2Chuma
Расширение это часть имени, оно важно лишь для самой винды, так что неважно какое там расширение стоит. Другое дело - изменение содержимого.
2ABTOMAT
Любая защита основаная на временных файлах - заранее провальная, ничто не мешает во время загрузки копирнуть все твои временные файлы.

Вариант без темповых файлов - подмена таких WAPI функций как CreateFile, ReadFile и др. на свои собственные, в которые можно передать данные из памяти (точнее в функцию ReadFile), и возврат оригинальных функций обратно. Самый простой способ - чтение_в\запись_из процесса с помощью того же WAPI - WriteProcessMemory\ReadProcessMemory.
Т.е. алгоритм таков:
-Находим адреса заменяемых функций из бибиотеки Kernel32.dll
-Читаем из процесса структуру перехода на эту функцию, по найденому адресу и запоминаем ее для дальнейшего восстановления.
-Заполняем структуру перехода, указывая адрес своей функции
-Пишем в процесс структуру перехода со адресом своей функции

Таким образом, когда Блиц будет обращаться к замененным функциям, он будет вызывать ваши функции, в которых уже идет выдача ваших данных.
Из функции CreateFile, можно взять имя файла, который Блиц хочет прочитать. Следовательно по этоум имени находим файл в архиве и экстрактируем его в память.
Из фуункции ReadFile, можно узнать какой файл читаеться и сколько байт нужно передать по указателю - передаем из памяти экстрактируемый файл или его часть.

Вобщем терия такова, на практике немного посложнее, но сделать можно
(Offline)
 
Ответить с цитированием