|
20.03.2007, 14:07
|
#1
|
ПроЭктировщик
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
|
LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Доброе время суток, Господа.
У меня вопрос чисто теоритического плана по поводу загрузки ресурсов в программу. В частности это связанно с низкой "защито" блитцевских продуктов.
Как можно реализовать загрузку ресурсов с измененными разширениями -
пример - *.x замененным на *.y, но загружаемый как x
или
если в заголовке файла изменены символы. У jpeg, например , первые символы несущие описание формата (JFIF) заменить но xxxxx - я смотрю это достаточно популярная защита - в некоторых играх у всех файлов одинаковое расширение и заголовок.
Но как сделать что бы блитц с ними работал?
зы.В принципе реверсинг все равно возможен, но по крайней мере уже затруднен.
|
(Offline)
|
|
20.03.2007, 17:02
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
???
копировать файл во временную папку, изенять заголовок временного файла, грузить временный файл, удалять временный файл.
помоему блитз загрузит *.x объект как *.x объект даже если у него будет расширение*.y
насчет изменения заголовка
openfile
seekfile
readbyte
writebyte
|
(Offline)
|
|
20.03.2007, 17:39
|
#3
|
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
2 HolyDel - а можно пример....=)
|
|
|
20.03.2007, 22:50
|
#4
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
да можно пример?. мне бы счас пригодился. плиз
__________________
|
(Offline)
|
|
20.03.2007, 22:58
|
#5
|
ПроЭктировщик
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Сообщение от HolyDel
???
копировать файл во временную папку, изенять заголовок временного файла, грузить временный файл, удалять временный файл.
помоему блитз загрузит *.x объект как *.x объект даже если у него будет расширение*.y
насчет изменения заголовка
openfile
seekfile
readbyte
writebyte
|
Гм, спасибо. Учтем.
Но идея с временным файлом и у меня была - понятна и проста, соответственно любой пакер нечто подобное делает, но отметена - ибо порочна, это надо делать в памяти - ибо отловить темп не сложно... слишком не сложно.
|
(Offline)
|
|
20.03.2007, 23:21
|
#6
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Берите любой из 3 десятков пакеров ресурсов для блитц, и не морочьте голову.
Нашли себе проблему на ровном месте
Есть такой пакер товарища Максуса, который распаковывает на лету без создания временных файлов.
Брать здесь http://amt-lab.com
Полную проси у Максуса - своим дает бесплатно.
__________________
|
(Offline)
|
|
21.03.2007, 12:59
|
#7
|
ПроЭктировщик
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
дык хочется не только юзать но и понять =)))
Пакеры я юзаю давно... хотел просто посмотреть на др. варианты.
|
(Offline)
|
|
24.05.2007, 23:19
|
#8
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Кстати если надо запаковать контент так шоб никто не нашёл, то вот мои мысли:
MyPack.mpk
имя_запакованного_файла подкаталог_где_он_лежал_вне_архива его_расширение кол-во_байт_в_ём
самоё_содержимое_файла
имя_второго_запакованного_файла подкаталог_где_он_лежал_вне_архива его_расширение кол-во_байт_в_ём
самоё_содержимое_файла
.....
.....
конец_архива
потом читать так:
1. Пропускаем надпись MyPack
2. Читаем имя файла и пишем в переменную ИМЯ
3. Читаем подкаталог и пишем в переменную ДИРЕКТОРИЯ
4. Читаем его расширение и пишем в переменную РАСШ
5. Читаем кол-во байт и пишем в переменную ВЕС
6. Создаём в папке с распаковщиком подкаталог с именем ДИРЕКТОРИЯ
7. Там создаём файл с именем ИМЯ.РАСШ и в него пишем всё пока не доститгнем веса файла ВЕС.
8. ПыДиНа (GoTo) п.2.
9. Если видим надпись конец_архива, то архив распакован. Все щасливы.
10. Запускаем игру.
11. Играем.
12. Удаляем все распакованные файлы.
Но вот как сделать шоп архив не только прятал, но и сжимал, экономя место???
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
25.05.2007, 01:20
|
#9
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
новерно раром или зипом обработать
__________________
|
(Offline)
|
|
25.05.2007, 07:04
|
#10
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
2Chuma
Расширение это часть имени, оно важно лишь для самой винды, так что неважно какое там расширение стоит. Другое дело - изменение содержимого.
2ABTOMAT
Любая защита основаная на временных файлах - заранее провальная, ничто не мешает во время загрузки копирнуть все твои временные файлы.
Вариант без темповых файлов - подмена таких WAPI функций как CreateFile, ReadFile и др. на свои собственные, в которые можно передать данные из памяти (точнее в функцию ReadFile), и возврат оригинальных функций обратно. Самый простой способ - чтение_в\запись_из процесса с помощью того же WAPI - WriteProcessMemory\ReadProcessMemory.
Т.е. алгоритм таков:
-Находим адреса заменяемых функций из бибиотеки Kernel32.dll
-Читаем из процесса структуру перехода на эту функцию, по найденому адресу и запоминаем ее для дальнейшего восстановления.
-Заполняем структуру перехода, указывая адрес своей функции
-Пишем в процесс структуру перехода со адресом своей функции
Таким образом, когда Блиц будет обращаться к замененным функциям, он будет вызывать ваши функции, в которых уже идет выдача ваших данных.
Из функции CreateFile, можно взять имя файла, который Блиц хочет прочитать. Следовательно по этоум имени находим файл в архиве и экстрактируем его в память.
Из фуункции ReadFile, можно узнать какой файл читаеться и сколько байт нужно передать по указателю - передаем из памяти экстрактируемый файл или его часть.
Вобщем терия такова, на практике немного посложнее, но сделать можно
|
(Offline)
|
|
25.05.2007, 12:02
|
#11
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Указатели? Мне кажется это применимо к С++, но в Блице я понятия не имею как взять адрес в памяти, в С++ для этого есть оператор &, но в Блице...
__________________
|
(Offline)
|
|
25.05.2007, 13:47
|
#12
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Естественно не в Блице, я про модуль говорю.
|
(Offline)
|
|
25.05.2007, 13:57
|
#13
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
А как сделать чтоб Блитз из РАРа или ЗИПа читал?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
25.05.2007, 14:13
|
#14
|
ПроЭктировщик
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений (для 35 пользователей)
|
Сообщение от Cyan
2Chuma
Расширение это часть имени, оно важно лишь для самой винды, так что неважно какое там расширение стоит. Другое дело - изменение содержимого.
|
Это я прекрасно знаю, жаль что блиц тоже на заколовки смотрит..
А так можно было бы ему подсовывать все что угоднооо
30 файлов с одинаковым заголовком "zag olovok..." и ничего незначащими названиями введут в ступор любого.
Не будешь же реально в хексе пробовать перебивать заголовки то на
"Rar!.." или "JFIF" и т.д на все файлы поледовательно.
Естественно часть файлов можно опознать по содержимому, но далеко не все и всегда.. В конечном роде можно их кидать в файл со смещением и с ним же загружать...
По-моему превосходная идея.
Сообщение от ABTOMAT
А как сделать чтоб Блитз из РАРа или ЗИПа читал?
|
зиповская библиотека ...
http://blitzbasic.com/toolbox/toolbox.php?cat=16
Blitz.ZipApi
|
(Offline)
|
|
26.05.2007, 10:13
|
#15
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: LoadAS Загрузка ресурсов с измененными расширениями (заголовками)
Chuma, а для RAR'а такого нету?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:50.
|