Сейчас на форуме: bartolomeo, -Sanchez-, morgot, sashalogout (+4 невидимых)

 [email protected] —› Софт, инструменты —› Распаковка файлов из контейнеров SFFS
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 30 июня 2014 14:42 · Поправил: vden
· Личное сообщение · #1

upd:
Новый адрес
Релизы

----------------------------------

Утилита для распаковки файлов из контейнеров SFFS

В принципе все то же самое что сделали Reloaded и Olenevod хз-когда но теперь в GUI

Как это работет:

- перетаскиваем файл с ресурсами (*.dat) в окно

- вводим ПРАВИЛЬНЫЙ APPKEY (иначе расшифровка не пройдет, и может быть крэш)
APPKEY можно получить снифером (есть на форуме)

- получаем хэши для каждого файла в контейнере
без имен файлов содержимое файлов расшифровать не выйдет
имена можно достать сниффером который есть на этом форуме, но он сработает только для латиницы
в идеале нужен сниффер для 2-байтного юникода (UTF-16LE)

- жмем F5 и вводим имена файлов
найденные имена добавляются в список и убираются из поля для ввода
проект можно сохранять и добавлять имена позже

- на файле, для которого известно имя, щелкаем 2 раза, файл извлекается и открывается содержащая его папка

Основано на доках Reloaded. Главное отличие - код не рипался, потому что это Blowfish где каждый
блок хорится на позицию в файле.

Связанные материалы:
Набор: драйвер для перехвата APPKEY и имен файлов (только латинские) от MasterSoft

| Сообщение посчитали полезным: Gideon Vi, unknownproject, kampaster, ELF_7719116, verdizela, Veliant, BAHEK, Nightshade, sivorog, 4kusNick, Isaev, DimitarSerg, -Sanchez-, MarcElBichon, zNob, MasterSoft, v00doo, Jim DiGriz


Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 01 июля 2014 08:54
· Личное сообщение · #2

Драйвер-фильтр на ФС там, насколько помню.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 01 июля 2014 11:22
· Личное сообщение · #3

Есть 2 реализации СФФС. Одна драйвер фильтр. И там обычный CreateFile. Вторая бездрайверная. Там функи открытия, чтения и СетФайлПоинтер в protect.dll. И файлы открываются именно этими функами.

| Сообщение посчитали полезным: ELF_7719116

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 01 июля 2014 13:24
· Личное сообщение · #4

Nightshade
ок, с этим понятно. Но я клоню немного к другому - из топиков выше, если правильно понимаю, есть проблема: от имен файлов в контейнере остались одни хэши. Обращения к этим файлам, по идее, же должны остаться в образе? Что мешает сопоставить вызов с именем файла - и его положение в контейнере? т.е. пойти другим путем, не используя брут: эдак заснифить имена?!




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 01 июля 2014 13:33
· Личное сообщение · #5

Эльф, если ты почитаешь предыдущую страницу, то найдешь сниффер имен файлов. (Правда только англ имен). Как ты думаешь, для чего его писали?



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 01 июля 2014 13:36
· Личное сообщение · #6

ELF_7719116 пишет:
эдак заснифить имена?!

Предлагаешь крякера в геймера переделать, было такое, что ресурс использовался только на предпоследнем уровне.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 01 июля 2014 13:45
· Личное сообщение · #7

Nightshade
...имен файлов (только латинские) от MasterSoft - все, я прозрел
Vovan666 пишет:
Предлагаешь крякера в геймера переделать...

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



Ранг: 42.3 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 01 июля 2014 14:09 · Поправил: kampaster
· Личное сообщение · #8

ELF_7719116 это было туго
В том и проблема, можно отснифать имена, а можно и брутить.
Брутить мало реально, как писал выше.
Но, бывают редкие случаи когда очень даже реально и проще чем отснифать.
А чтобы отснифать имена - так это нужно всё игру пере пройти + доп квестики, скрытые уровни и т.п
В общем тоже муторно.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 01 июля 2014 14:47
· Личное сообщение · #9

Для таких целей писали "декодер на лету". Крепится длл с вшитым аппкеем. При попытке открыть несуществующий на диске файл, идет попытка извлечь его из контейнера. Если все удачно, открываем извлеченный файл. Такой декодер уже выкладывал Zorn в соседней ветке.
И не надо никаких драйверов, снифферов. Не надо проходить игру.



Ранг: 42.3 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 01 июля 2014 15:19 · Поправил: kampaster
· Личное сообщение · #10

Nightshade пишет:
Для таких целей писали "декодер на лету". Крепится длл с вшитым аппкеем.

А разве перед этим не нужно стар снимать?
Nightshade пишет:
При попытке открыть несуществующий на диске файл, идет попытка извлечь его из контейнера. Если все удачно, открываем извлеченный файл. Такой декодер уже выкладывал Zorn в соседней ветке.

1 фиг нужно будет проходить всю игру и ловить обращения к файлам.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 01 июля 2014 15:48 · Поправил: Veliant
· Личное сообщение · #11

Nightshade пишет:
И не надо никаких драйверов, снифферов. Не надо проходить игру.

Разве? Не все ли равно где снифать в ядре или в ring3? Все равно проходить игру придется.

kampaster пишет:
А разве перед этим не нужно стар снимать?

Стару пофиг на смену entrypoint на другой адрес у protect.dll, и наличие чужих dll в памяти.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 01 июля 2014 15:58 · Поправил: Nightshade
· Личное сообщение · #12

Veliant Читай полностью пост. Ты походу 1 фразу прочел.
Игру проходить не придется. На последнем уровне к примеру доизвлекутся новые файлы и все. Можно вообще написать перехват некоторых апи и расшифровывать содержимое файлов из контейнера.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 01 июля 2014 16:30
· Личное сообщение · #13

ELF_7719116 пишет:
желающих убить разрабов старфорса или хотя бы поднасрать им, в нашей стране предостаточно


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

Nightshade пишет:
При попытке открыть несуществующий на диске файл, идет попытка извлечь его из контейнера...Не надо проходить игру


я может туплю, но мне не понять, как спасает этот метод от шифрования файла, который требуется в середине/конце игры.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 01 июля 2014 16:36
· Личное сообщение · #14

Gideon Vi пишет:
как спасает этот метод от шифрования файла, который требуется в середине/конце игры

Когда потребуется, тогда и будет расшифрован дополнительной длл, которая прицеплена к распакованному файлу, на момент начала игры тебе все расшифрованные файлы и не нужны.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 01 июля 2014 17:18
· Личное сообщение · #15

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



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 01 июля 2014 17:46 · Поправил: vden
· Личное сообщение · #16

Обновил ссылку в шапке

- извлечение всех файлов
- применение атрибутов к файлам
- примениние времени создания, модификации к файлам
- правильная обработка FILE_ATTRIBUTE_DIRECTORY (просто создание папки)
- если файл уже есть и размер совпадает, то он пропускается
- можно отменить извлечение Esc

Сам проект

| Сообщение посчитали полезным: Gideon Vi, kampaster, 4kusNick, SReg, Nightshade, Isaev

Ранг: 42.3 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 01 июля 2014 18:13
· Личное сообщение · #17

vden
Спасибо!
Extract All работает корректно




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 02 июля 2014 19:34 · Поправил: Nightshade
· Личное сообщение · #18

Что у тебя за делфя такая?
У меня не понимает, что такое FileName.ToUpper к примеру.
Я конечно могу переписать на стандартные функи. Но интересно же...
------------
У меня ХЕ3. Походу надо обновится.



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 02 июля 2014 19:51 · Поправил: vden
· Личное сообщение · #19

XE6. ToUpper это часть type helper'a TStringHelper, появилась не так давно. Type helper это структура которая инжектится в другую структуру, сначала её сделали чтобы править свои же баги, а теперь это фича

официальный док

Еще я перегрузил оператор Implicit для неявного преобразования TAppKey в строку и строку в TAppKey.

Других больших несовместимостей с предыдущими версиями кажется нет.

Еще важно чтобы в том месте где считается md5 от имени файла, строка с именем была 2-байтовая, UnicodeString. В 2009 и старше строка и так UnicodeString.



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 03 июля 2014 15:27
· Личное сообщение · #20

Уже страшно подумать, какой по размеру будет эксе на выходе в среде XE6Там хоть убирай, не убирай ненужные компоненты - толку нет.

-----
TEST YOUR MIGHT


| Сообщение посчитали полезным: sivorog

Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 03 июля 2014 16:40
· Личное сообщение · #21

ну да, размер тулзы для стара имеет очень большое значение

| Сообщение посчитали полезным: ARCHANGEL

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 23 августа 2014 09:51
· Личное сообщение · #22

Vovan666 пишет:
там кажется для каждой игры нужно брутить таблицу хэшей, а как и из чего...

может быть по аналогии с SecuROM PA - из приватного ключа составляется таблица в 4112 байт?

Code:
  1. int __thiscall DES_Private(void *this, int a2, int a3, int a4, int a5)
  2. {
  3.   int result; // [email protected]
  4.   int v6; // [email protected]
  5.   char v7; // [sp+0h] [bp-94h]@1
  6.   int v8; // [sp+80h] [bp-14h]@3
  7.   int v9; // [sp+84h] [bp-10h]@3
  8.   int v10; // [sp+88h] [bp-Ch]@3
  9.   int v11; // [sp+8Ch] [bp-8h]@3
  10.   int v12; // [sp+90h] [bp-4h]@1
  11.   int v13; // [sp+9Ch] [bp+8h]@2
  12.   int v14; // [sp+A4h] [bp+10h]@2
  13.  
  14.   DES_Odd_Parity((char *)this + 4, &v7);
  15.   result = a3;
  16.   v12 = 0;
  17.   if ( a3 > 0 )
  18.   {
  19.     v6 = a2;
  20.     v13 = a3;
  21.     v14 = a4 - v6;
  22.     do
  23.     {
  24.       v10 = 0;
  25.       v11 = 0;
  26.       v8 = 0;
  27.       v9 = 0;
  28.       if ( v13 < 8 )
  29.       {
  30.         memcpy(&v10, (const void *)v6, a3 - v12);
  31.       }
  32.       else
  33.       {
  34.         v10 = *(_DWORD *)v6;
  35.         v11 = *(_DWORD *)(v6 + 4);
  36.       }
  37.       DES(&v10, &v8, &v7, a5);
  38.       v12 += 8;
  39.       v13 -= 8;
  40.       *(_DWORD *)(v14 + v6) = v8;
  41.       *(_DWORD *)(v14 + v6 + 4) = v9;
  42.       result = v12;
  43.       v6 += 8;
  44.     }
  45.     while ( v12 < a3 );
  46.   }
  47.   return result;
  48. }




Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 23 августа 2014 10:17 · Поправил: unknownproject
· Личное сообщение · #23

Провел анализ.Взял несколько своих лицензионных игр, накрытых старфорс + качнул пару демок и сделал вывод, как же менялась чудесная файловая система старфорс.
1.Модифицированный zip архив со смещенным заголовком и другим мусором.
Целевой пример: Демоверсия игры Shade - 2004 год.
Файл: data00.res.
Версия старфорс: 3.4.47.1

2a.Далее уже появился SFFS, т.е. старфорс уже стал юзать свою файловую систему для защиты некоторых игр от несанкционированного доступа, при чем файлы шифровались по отдельности.
Целевой пример: Dungeon Lords Золотое Издание - 2005 год.
Файлы: compass.dat, root.dat.
Версия старфорс: 3.7.16.0

2b.Сего было мало для них и они решили все-таки зашифровать некоторую часть данных в одном файле с сохранением иерархии.
Целевой пример: Knights of The Temple 2 - 2006 год/Волкодав - Путь воина - 2006 год.
Файл: KOTT2.dat/resource0.dat.
Версии старфорс: 3.6.10.7/4.50.7.3


-----
TEST YOUR MIGHT





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 23 августа 2014 12:57
· Личное сообщение · #24

В Dungeon Lords Золотое Издание есть огромный архив с озвучкой там куча файлов. Там не шифруются файлы по отдельности. (Для этой игры я переписывал генерик анпакер Zornа)



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 23 августа 2014 14:10 · Поправил: unknownproject
· Личное сообщение · #25

Nightshade пишет:
Там не шифруются файлы по отдельности.

Вероятно я не так выразился.Да, озвучка там в speech.dat, но контейнер ведь не один.Именно это я имел ввиду.Саму игру я анпакнул с помощью демки золотого издания.Файловую структуру восстанавливать не сложно.

-----
TEST YOUR MIGHT





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 24 августа 2014 23:55
· Личное сообщение · #26

unknownproject пишет:
Вероятно я не так выразился.Да, озвучка там в speech.dat, но контейнер ведь не один.Именно это я имел ввиду.Саму игру я анпакнул с помощью демки золотого издания.Файловую структуру восстанавливать не сложно.

Епт. Сколько издатель захочет, столько и делает контейнеров. Это только от его желания зависит.
Далее
Мне очень интересно как ты восстанавливал структуру файлов ака имена в архиве.
Я тебе один сИкрет расскажу. Конкретно в этой игре туча скриптов для диалогов. И куча скриптов с событиями. Например если произошло событие нападения, проиграть звук такой-то. И если ты выбрал вторую строку в диалоге проиграть звук 2*ххх+имя файла. Отсюда, чтобы вытащить там все файлы, надо перелопатить все скрипты и все возможные ветки выполнения скриптов.
А теперь расскажи мне на ночь, как ты все это лопатил.

| Сообщение посчитали полезным: TryAga1n, sivorog

Ранг: 12.6 (новичок), 5thx
Активность: 0.010
Статус: Участник

Создано: 22 мая 2017 16:03 · Поправил: PASAf
· Личное сообщение · #27

Попробовал распаковщик на 2-х версиях StarForce (3.7.12 и 4.70) - находит по 100 с лишним хешей, на одном файл 400+ мб, на другом 11 мб, после извлечения известных имен (отловленных снифером, 1-3 файла), извлеченные файлы меньше контейнера на 10 кб.

Вопрос - могут ли быть оставшиеся хеши ложными? Или там правда в 10 кб ещё 100 файлов?

P.S. Жертвы - игры.



Ранг: 12.6 (новичок), 5thx
Активность: 0.010
Статус: Участник

Создано: 28 мая 2017 06:07
· Личное сообщение · #28

В общем сам полу-отвечу на свой вопрос.
2 игры разные. С вышеупомянутыми версиями старфорса. Прошёл полностью с включенным снифером + забил все имена из зарубежных (без старфорса) релизов.
Итог: в обеих играх SFFS Unpacker нашёл 101+N имён файлов, где N - кол-во реальных (распакованных/отловленных снифером/присутствовавших в релизах без старфорса) файлов.

P.S. SFFS Unpacker с SVN, Delphi XE6



Ранг: 35.8 (посетитель), 23thx
Активность: 0.030
Статус: Участник

Создано: 28 мая 2017 09:07 · Поправил: Psalmopoeus Pulcher
· Личное сообщение · #29

PASAf,
таки да, прот скрывает реальное кол-во файлов в контейнере, но допускать это нужно с некоторой долей вероятности, ориентируясь на суммарный размер извлеченных файлов. Так что, если с включенным снифером + забил все имена из зарубежных, то ход мыслей правильный и ты все сделал верно.

Upd. Можно пойти немножечко дальше - взять сорцы анпакера и самому пробежаться по контейнеру, собрать размеры всех полей, в т.ч. хешей, хидеров и реальных файлов, и сравнить с размером контейнера. Возможно это как то поможет.



Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 31 мая 2017 15:48
· Личное сообщение · #30

По просьбам трудящихся, обновил. Не знал куда запостить, чтоб не апать древние топики. Пусть будет здесь.

SFSniffer v3
Code:
  1. Больше никаких плясок с DebugView, теперь есть гуй.
  2. Добавилась возможность выбрать нужный драйвер StarForce.
  3. Таки юникод тоже теперь поддерживается.
  4. А ещё там есть пиздатая кнопка донат.




P.S.: Тестил на Windows 7 SP1 x86

b0b0_31.05.2017_EXELAB.rU.tgz - SFSniffer_v3.zip

| Сообщение посчитали полезным: ClockMan, zNob, -Sanchez-, daFix, PASAf, Dart Raiden, grubian

Ранг: 12.6 (новичок), 5thx
Активность: 0.010
Статус: Участник

Создано: 03 июня 2017 16:51 · Поправил: PASAf
· Личное сообщение · #31

MasterSoft
Проверил на вышеупомянутых игрушках (StarForce 3.7.12 и 4.70 на Windows XP) - аппкей словило верный.
Благодарю за труд.

| Сообщение посчитали полезным: MasterSoft
<< . 1 . 2 . 3 . >>
 [email protected] —› Софт, инструменты —› Распаковка файлов из контейнеров SFFS
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати