forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   LoadAS Загрузка ресурсов с измененными расширениями (заголовками) (http://forum.boolean.name/showthread.php?t=2992)

Chuma 20.03.2007 14:07

LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Доброе время суток, Господа.

У меня вопрос чисто теоритического плана по поводу загрузки ресурсов в программу. В частности это связанно с низкой "защито" блитцевских продуктов.

Как можно реализовать загрузку ресурсов с измененными разширениями -
пример - *.x замененным на *.y, но загружаемый как x
или
если в заголовке файла изменены символы. У jpeg, например , первые символы несущие описание формата (JFIF) заменить но xxxxx - я смотрю это достаточно популярная защита - в некоторых играх у всех файлов одинаковое расширение и заголовок.
Но как сделать что бы блитц с ними работал?

зы.В принципе реверсинг все равно возможен, но по крайней мере уже затруднен.

HolyDel 20.03.2007 17:02

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
???
копировать файл во временную папку, изенять заголовок временного файла, грузить временный файл, удалять временный файл.
помоему блитз загрузит *.x объект как *.x объект даже если у него будет расширение*.y

насчет изменения заголовка
openfile
seekfile
readbyte
writebyte

Черный крыс 20.03.2007 17:39

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
2 HolyDel - а можно пример....=)

mr.DIMAS 20.03.2007 22:50

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
да можно пример?. мне бы счас пригодился. плиз 8)

Chuma 20.03.2007 22:58

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Цитата:

Сообщение от HolyDel
???
копировать файл во временную папку, изенять заголовок временного файла, грузить временный файл, удалять временный файл.
помоему блитз загрузит *.x объект как *.x объект даже если у него будет расширение*.y

насчет изменения заголовка
openfile
seekfile
readbyte
writebyte

Гм, спасибо. Учтем.
Но идея с временным файлом и у меня была - понятна и проста, соответственно любой пакер нечто подобное делает, но отметена - ибо порочна, это надо делать в памяти - ибо отловить темп не сложно... слишком не сложно.

tormoz 20.03.2007 23:21

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Берите любой из 3 десятков пакеров ресурсов для блитц, и не морочьте голову.
Нашли себе проблему на ровном месте :)

Есть такой пакер товарища Максуса, который распаковывает на лету без создания временных файлов.
Брать здесь http://amt-lab.com
Полную проси у Максуса - своим дает бесплатно.

Chuma 21.03.2007 12:59

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
дык хочется не только юзать но и понять =)))
Пакеры я юзаю давно... хотел просто посмотреть на др. варианты.

ABTOMAT 24.05.2007 23:19

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Кстати если надо запаковать контент так шоб никто не нашёл, то вот мои мысли:

MyPack.mpk

имя_запакованного_файла подкаталог_где_он_лежал_вне_архива его_расширение кол-во_байт_в_ём
самоё_содержимое_файла
имя_второго_запакованного_файла подкаталог_где_он_лежал_вне_архива его_расширение кол-во_байт_в_ём
самоё_содержимое_файла
.....
.....
конец_архива


потом читать так:

1. Пропускаем надпись MyPack
2. Читаем имя файла и пишем в переменную ИМЯ
3. Читаем подкаталог и пишем в переменную ДИРЕКТОРИЯ
4. Читаем его расширение и пишем в переменную РАСШ
5. Читаем кол-во байт и пишем в переменную ВЕС
6. Создаём в папке с распаковщиком подкаталог с именем ДИРЕКТОРИЯ
7. Там создаём файл с именем ИМЯ.РАСШ и в него пишем всё пока не доститгнем веса файла ВЕС.
8. ПыДиНа (GoTo) п.2.
9. Если видим надпись конец_архива, то архив распакован. Все щасливы.
10. Запускаем игру.
11. Играем.
12. Удаляем все распакованные файлы.


Но вот как сделать шоп архив не только прятал, но и сжимал, экономя место??? :dontknow:

SBJoker 25.05.2007 01:20

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
новерно раром или зипом обработать ;)

Platon 25.05.2007 07:04

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

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

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

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

mr.DIMAS 25.05.2007 12:02

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Указатели? Мне кажется это применимо к С++, но в Блице я понятия не имею как взять адрес в памяти, в С++ для этого есть оператор &, но в Блице...

Platon 25.05.2007 13:47

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Естественно не в Блице, я про модуль говорю.

ABTOMAT 25.05.2007 13:57

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
А как сделать чтоб Блитз из РАРа или ЗИПа читал?

Chuma 25.05.2007 14:13

Цитата:

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

Это я прекрасно знаю, жаль что блиц тоже на заколовки смотрит..
А так можно было бы ему подсовывать все что угоднооо

30 файлов с одинаковым заголовком "zag olovok..." и ничего незначащими названиями введут в ступор любого.

Не будешь же реально в хексе пробовать перебивать заголовки то на
"Rar!.." или "JFIF" и т.д на все файлы поледовательно.
Естественно часть файлов можно опознать по содержимому, но далеко не все и всегда.. В конечном роде можно их кидать в файл со смещением и с ним же загружать...

По-моему превосходная идея.

Цитата:

Сообщение от ABTOMAT
А как сделать чтоб Блитз из РАРа или ЗИПа читал?

зиповская библиотека ...
http://blitzbasic.com/toolbox/toolbox.php?cat=16

Blitz.ZipApi

ABTOMAT 26.05.2007 10:13

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Chuma, а для RAR'а такого нету?

SBJoker 26.05.2007 12:35

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Нету, рар глубоко закрытый формат причём намного сложнее старичка-зипа.

ABTOMAT 26.05.2007 13:35

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
А можно ли создать собственный архиватор? Ну, хоть самый простенькый?

alcoSHoLiK 26.05.2007 14:40

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Конечно.

ABTOMAT 26.05.2007 14:48

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Вопрос, который я задал подразумевает: а как?

alcoSHoLiK 26.05.2007 15:22

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Все зависит от тебя. Если ты зип не хочешь использовать, значит наверняка у тебя есть идея, как написать архиватор получше.

SBJoker 26.05.2007 21:06

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
В инете дофига исходников на с++ и просто алгоритмов сжатия начиная с примитивного RLE до Хаффмана и LZW.

Остаётся тока написать.

ЛысыЙ_Чук-Иванчук 26.05.2007 22:49

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Ну и толк архевировать данные, сколько время уйдет на загрузку сия!
Благо объем жеского диска уже не 10мб=))

GomZik 21.08.2007 16:33

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
А блиц зип апи открывает зип архивы с изменёным расширением?? Ex: Local zipOut=ZipApi_CreateZip("my-zip.lol")

IGR 21.08.2007 18:06

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
а чё в коде разширение поменять нельзя , что ли ??

JoKeR_13 21.08.2007 18:15

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
Вложений: 2
я если не ошибаюсь есть же пакер для блитца, который шифрует и запихивает распакованные файлы в память.
Вот здесь посмотри может, что подойдет;)

IGR 21.08.2007 18:35

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
их куча , этих пакеров !!

но для меня лучший этот http://blitzetc.boolean.name/articles/datapacking.htm

Там есть описание как ним пользоваться !!

H@NON 21.08.2007 20:04

Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
 
вот список пакеров:http://blitz.pp.ru/forum/showthread.php?s=&threadid=46


Часовой пояс GMT +4, время: 17:19.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot