![]() |
LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Доброе время суток, Господа.
У меня вопрос чисто теоритического плана по поводу загрузки ресурсов в программу. В частности это связанно с низкой "защито" блитцевских продуктов. Как можно реализовать загрузку ресурсов с измененными разширениями - пример - *.x замененным на *.y, но загружаемый как x или если в заголовке файла изменены символы. У jpeg, например , первые символы несущие описание формата (JFIF) заменить но xxxxx - я смотрю это достаточно популярная защита - в некоторых играх у всех файлов одинаковое расширение и заголовок. Но как сделать что бы блитц с ними работал? зы.В принципе реверсинг все равно возможен, но по крайней мере уже затруднен. |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
???
копировать файл во временную папку, изенять заголовок временного файла, грузить временный файл, удалять временный файл. помоему блитз загрузит *.x объект как *.x объект даже если у него будет расширение*.y насчет изменения заголовка openfile seekfile readbyte writebyte |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
2 HolyDel - а можно пример....=)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
да можно пример?. мне бы счас пригодился. плиз 8)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Цитата:
Но идея с временным файлом и у меня была - понятна и проста, соответственно любой пакер нечто подобное делает, но отметена - ибо порочна, это надо делать в памяти - ибо отловить темп не сложно... слишком не сложно. |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Берите любой из 3 десятков пакеров ресурсов для блитц, и не морочьте голову.
Нашли себе проблему на ровном месте :) Есть такой пакер товарища Максуса, который распаковывает на лету без создания временных файлов. Брать здесь http://amt-lab.com Полную проси у Максуса - своим дает бесплатно. |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
дык хочется не только юзать но и понять =)))
Пакеры я юзаю давно... хотел просто посмотреть на др. варианты. |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Кстати если надо запаковать контент так шоб никто не нашёл, то вот мои мысли:
MyPack.mpk имя_запакованного_файла подкаталог_где_он_лежал_вне_архива его_расширение кол-во_байт_в_ём самоё_содержимое_файла имя_второго_запакованного_файла подкаталог_где_он_лежал_вне_архива его_расширение кол-во_байт_в_ём самоё_содержимое_файла ..... ..... конец_архива потом читать так: 1. Пропускаем надпись MyPack 2. Читаем имя файла и пишем в переменную ИМЯ 3. Читаем подкаталог и пишем в переменную ДИРЕКТОРИЯ 4. Читаем его расширение и пишем в переменную РАСШ 5. Читаем кол-во байт и пишем в переменную ВЕС 6. Создаём в папке с распаковщиком подкаталог с именем ДИРЕКТОРИЯ 7. Там создаём файл с именем ИМЯ.РАСШ и в него пишем всё пока не доститгнем веса файла ВЕС. 8. ПыДиНа (GoTo) п.2. 9. Если видим надпись конец_архива, то архив распакован. Все щасливы. 10. Запускаем игру. 11. Играем. 12. Удаляем все распакованные файлы. Но вот как сделать шоп архив не только прятал, но и сжимал, экономя место??? :dontknow: |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
новерно раром или зипом обработать ;)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
2Chuma
Расширение это часть имени, оно важно лишь для самой винды, так что неважно какое там расширение стоит. Другое дело - изменение содержимого. 2ABTOMAT Любая защита основаная на временных файлах - заранее провальная, ничто не мешает во время загрузки копирнуть все твои временные файлы. Вариант без темповых файлов - подмена таких WAPI функций как CreateFile, ReadFile и др. на свои собственные, в которые можно передать данные из памяти (точнее в функцию ReadFile), и возврат оригинальных функций обратно. Самый простой способ - чтение_в\запись_из процесса с помощью того же WAPI - WriteProcessMemory\ReadProcessMemory. Т.е. алгоритм таков: -Находим адреса заменяемых функций из бибиотеки Kernel32.dll -Читаем из процесса структуру перехода на эту функцию, по найденому адресу и запоминаем ее для дальнейшего восстановления. -Заполняем структуру перехода, указывая адрес своей функции -Пишем в процесс структуру перехода со адресом своей функции Таким образом, когда Блиц будет обращаться к замененным функциям, он будет вызывать ваши функции, в которых уже идет выдача ваших данных. Из функции CreateFile, можно взять имя файла, который Блиц хочет прочитать. Следовательно по этоум имени находим файл в архиве и экстрактируем его в память. Из фуункции ReadFile, можно узнать какой файл читаеться и сколько байт нужно передать по указателю - передаем из памяти экстрактируемый файл или его часть. Вобщем терия такова, на практике немного посложнее, но сделать можно ;) |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Указатели? Мне кажется это применимо к С++, но в Блице я понятия не имею как взять адрес в памяти, в С++ для этого есть оператор &, но в Блице...
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Естественно не в Блице, я про модуль говорю.
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
А как сделать чтоб Блитз из РАРа или ЗИПа читал?
|
Цитата:
А так можно было бы ему подсовывать все что угоднооо 30 файлов с одинаковым заголовком "zag olovok..." и ничего незначащими названиями введут в ступор любого. Не будешь же реально в хексе пробовать перебивать заголовки то на "Rar!.." или "JFIF" и т.д на все файлы поледовательно. Естественно часть файлов можно опознать по содержимому, но далеко не все и всегда.. В конечном роде можно их кидать в файл со смещением и с ним же загружать... По-моему превосходная идея. Цитата:
http://blitzbasic.com/toolbox/toolbox.php?cat=16 Blitz.ZipApi |
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Chuma, а для RAR'а такого нету?
|
Часовой пояс GMT +4, время: 16:07. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot