Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Протекторы —› Распаковка Starforce SFFS ресурс файла (resource0.dat)
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 мая 2007 16:17
· Личное сообщение · #1

К сожалению ничего путного по этой теме форуме не нашел, поэтому предлагаю обсудить.

Интересует распаковка русурсного файла SFFS. Обычно это resource0.dat.
В релизе инструментов от RELOADED под названием StarForce 3 Reverse-Engineering Tools достаточно хорошо описаны все структуры, но упущен маленький ньюанс - раскриптовка идет с использованием восьмибайтного appKey, но как он формируется - упомянуть забыли. Подозреваю что из 24 символьного основного ключа диска.
На основе приведунных исходников соорудил распаковщик, структуры с указателями индексов расшифровывает, а вот для самих файлов без этого appKey уже не обойтись.

Если кто-нибудь уже разбирался с этими материалами, буду рад совету.




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

Создано: 19 июня 2007 19:42
· Личное сообщение · #2

Вот отсюда и берутся всякие
sfvfs02.sys
sfvfs03.sys
И малые изменения кода... ;)



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 19 июня 2007 19:52
· Личное сообщение · #3

sfvfs03.sys - я из ихнего инстала вытащил
Видать уже SF 5.0 есть.
Приду домой проверю на CRC (Сама длл себя точно проверяет, а вот с драйверами надо проверить )




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

Создано: 30 декабря 2007 00:13
· Личное сообщение · #4

Пытаюсь написать распаковщик SFFS и сталкнулся с проблемой-
как найти хоть одно имя файла в этом контейнере?
пробовал ставить бряк в дрове sfvfs02.sys на функу ReverseName-
получаю синьку
Хотя appkey так получить можно правда потом тот же BSOD,
но его можно списать...



Ранг: 35.3 (посетитель)
Активность: 0.01=0.01
Статус: Участник

Создано: 13 февраля 2008 15:29
· Личное сообщение · #5

mikeSP пишет:
Теперь самое интересное - используя отладчик уровня ring0 (я использовал Syser 1.8) ищем эту дровеняку в памяти и ставим бряк на начало функии.

Господа, а как быть, если стар инты хучит? Четвёртый - понимаю, там и Syserом бряки ставить можно, а вот третий как с отладчиком подружить?




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

Создано: 13 февраля 2008 16:27
· Личное сообщение · #6

Gauri
На паблик эта информация особо не выносиццо. Если кратко и на пальцах: пиши свой драйвер, хукай сам прерывания и решай, кому отдавать, отладчику или стару. Стар, конечно, будет сопротивляццо и обижаццо, обнаруживая, что не он похукал, но убедить можно.



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 13 февраля 2008 22:59
· Личное сообщение · #7

хукаешь CreateFile, все имена открываемых файлов пишешь в лог, играешь в игру
смотришь на то, какие файлы игра открывала, смотришь есть ли они физически на диске (таким образом определяешь то, что в контейнере лежит)

далее вставляешь в начало CreateFile функцию CopyFile и копируешь нужные файлы из контейнера например на диск C

вот и все дела

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 30.2 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 14 февраля 2008 10:15
· Личное сообщение · #8

Ага конечно , вот только если разрабочики запакуют последнию стадию игры , то выражение Tim'а "играешь в игру" плавно переносится в " проходишь игру полностью". Так что тут надо добивать способ mikeSP и распаковывать на ходу , с условием : если в анпакнутой проге фаил не найдет то пытаемся распоковать и снова открываем.



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 14 февраля 2008 12:32
· Личное сообщение · #9

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

-----
MicroSoft? Is it some kind of a toilet paper?





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

Создано: 14 февраля 2008 15:09
· Личное сообщение · #10

Tim, undb правду говорит - иногда издатели пакуют не всё, а только последнюю-предпоследнюю стадию игры. А учитывая то, что стар теперь расшифровывает динамически...



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2008 11:38 · Поправил: SergeyS
· Личное сообщение · #11

А есть ли возможность вытащить Strings.pak (возможно, что вместо него есть stringtable.ini и или stringtable.bin)?
Это перевод текста для аддона Gothic III Forsaken Gods Руской версии (Забытые боги) от GFI/Руссобит-М имеются файлы: Game.dll, protect.exe, protect.dll, protect.x86, protect.x64, Gothic III Forsaken Gods.exe, resource0.dat и образ установочного диска.
Сам я в распаковке стара ничего не понимаю, но прочитав все топики понял, что распаковываются пока только стар 1,2 и 3 версии, а тут StarForce 5.60.20.0 версии.
Нужно это для модостроения и исправления некачественного перевода, который локализаторы запихнули в контейнер (SFFS).
Сам распаковать пробовал, но ничего не вышло.




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 21 декабря 2008 17:52
· Личное сообщение · #12

SergeyS пишет:
Сам я в распаковке стара ничего не понимаю, но прочитав все топики понял, что распаковываются пока только стар 1,2 и 3 версии, а тут StarForce 5.60.20.0 версии.

ты где тут 1 и 2 стар нашёл, тыкни носом меня чтоли?

-----
Ламер - не профессия :))




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 декабря 2008 07:54 · Поправил: SergeyS
· Личное сообщение · #13

aspirin пишет:
SergeyS пишет:
Сам я в распаковке стара ничего не понимаю, но прочитав все топики понял, что распаковываются пока только стар 1,2 и 3 версии, а тут StarForce 5.60.20.0 версии.
ты где тут 1 и 2 стар нашёл, тыкни носом меня чтоли?

Я наверно не правильно выразился! Имеющимися инструментами - распаковыаются версии стара до 3й, а дальше ручками, но с этим у меня туго.
Дык может кто-нибудь распаковать, написать распаковщик для данного resource0.dat, или оказать еще какую-нибудь посильную помощь?
Сам я не крекер, а начинающий любитель, который начинает делать первые шаги в Делфи.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 22 декабря 2008 13:05 · Поправил: ARCHANGEL
· Личное сообщение · #14

Я, конечно, дико извиняюсь, что прерываю столь занятное общение, но не мог бы кто-нибудь кинул ссылку на инфу от RELOADED, гуглить-то я гуглю, но нет уверенности, что я нашёл всё.

Да, оно, спасибо.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 22 декабря 2008 14:07
· Личное сообщение · #15

ARCHANGEL
Это не оно?
http://www.exelab.ru/f/action=vthread&forum=5&topic=13371#



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

Создано: 06 ноября 2011 19:56
· Личное сообщение · #16

мне очень жаль, что пришлось поднять такой древний топ, сорри.

Вообщем имеецо такой вопрос, при написании анпакера по докам от релоадед уткнулся в одну хрень, вот к примеру:

Code:
  1. ...
  2. LARGE_INTEGER fileInfoPos;
  3. fileInfoPos.QuadPart = 0x10 + header->container->numFiles * 0x18 + index.QuadPart * 0x38;
  4. SetFilePointer(containerFile, fileInfoPos.LowPart, &fileInfoPos.HighPart, FILE_BEGIN);
  5. DWORD read;
  6. BYTE fileInfo[0x38];
  7. ReadFile(containerFile, fileInfo, 0x38, &read, NULL);
  8. ...
  9. memcpy(outBuf, file->info->data + file->readPos, len);
  10. DWORD64 containerPos = file->info->dataPos + file->readPos;
  11. decryptBuf(file->info->keyBuf, outBuf, len, 0, (DWORD)containerPos, (DWORD)(containerPos >> 32));
  12. file->readPos += len;


fileInfoPos.QuadPart = 0x10 + header->container->numFiles * 0x18 + index.QuadPart * 0x38;
с этим я ещё как то разобрался: 0x10+0x6C(в моём случае)*0x18 + 0x33*0x38 = в итоге получаем указатель на fileInfo.

но вот с этим например вообще не пойму: memcpy(outBuf, file->info->data + file->readPos, len);
где взять структуру SFFS файла? чёт она там не очень то описанна. иля я прост чёт не догоняю. как узнать начало блока какого-то файла в контейнере?



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

Создано: 06 ноября 2011 22:59
· Личное сообщение · #17

Ну, раз и этот вопрос подняли... Сорцы я профукал но надеюсь -->это<-- тоже поможет

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

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

Создано: 07 ноября 2011 00:07
· Личное сообщение · #18

Olenevod
спасибо))) правда хотелось самому всё...попробовал, воркает)))



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

Создано: 23 ноября 2011 01:25 · Поправил: MasterSoft
· Личное сообщение · #19

хоть тема и четырёхлетней давности, но что-то я не видел чтобы об этом где-то ещё упоминается.

mikeSP пишет:
Вот правда нужно будет немного потратить времени на преобразование текстового ключа игры в appKey.

не знаю как в более старых версия, не смотрел, но версии >5.5 appkey жёстко зашит в protect.dll Причём первый dword просто ксорится, а второй лежит вообще в явном виде (бери - не хочу) и находяться они друг за другом. так что если знаешь второй то и первый найти не проблема. но проблема найти как раз второй ибо всё это в вм. Разумеется никакие шаблоны не катят. конечно декомпиль поможет, но это не айс. Вообщем после "вычисления", appkey передаётся одним вызовом, через DeviceIoControl дровине, как я понял лежит он в lpInBuffer, но разумеется не в открытом виде или я чёта не догоняю. Задача: Хоть и известно как легко отловить appkey из ring0 хочется сделать это из ring3. Возможно кто-то из тех кто этим занимался знает как и чем шифруется appkey до передачи дровине? надеюсь понятно объяснил.




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

Создано: 24 ноября 2011 18:33
· Личное сообщение · #20

Если все так как ты описал, то это просто константы в ленте пкода и ты их так просто не вытянешь. Проще из драйвера доставать.



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

Создано: 01 декабря 2011 23:28
· Личное сообщение · #21

Nightshade пишет:
Проще из драйвера доставать.

это правда

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

В аттаче сам дров (не реверсите его - там убогий, кривой код ), KmdManager для его запуска и DebugView через который можно увидеть отсниффанный апкей. Тестил ток на Windows XP SP3, (кому не в лом в бсод уйти - затестите на вин7) в данный момент поддерживает версии стара > 5.5 и старовский драйвер должен быть обязательно запущен, если не уверены - запустите нужную прогу со старом на борту > закройте > откройте DebugView > запустите дров > опять стартаните прогу, после этого можно будет наблюдать в DebugView выловленный апкей. Вообщем хотелось бы узнать ваше мнение стоит ли реализовывать эту идею (ибо когда-то это было актуально) или отложить?

162e_01.12.2011_EXELAB.rU.tgz - sffs.zip

| Сообщение посчитали полезным: yagello, _ruzmaz_, ClockMan, yanus0, hlmadip, obfuskator, Svinovod, organizm

Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 02 декабря 2011 00:06
· Личное сообщение · #22

Нужно, очень нужно!!!! Народ подержите начинание!!! А такой вопрос, апкей можно будет отснифать, если нет возможности запустить саму программу, на уровне показа окна активации???



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

Создано: 02 декабря 2011 00:11 · Поправил: MasterSoft
· Личное сообщение · #23

+1 к карме))

yanus0 пишет:
А такой вопрос, апкей можно будет отснифать, если нет возможности запустить саму программу, на уровне показа окна активации???

пока только в теории, примерно об этом в 19 посте писал




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 02 декабря 2011 02:17
· Личное сообщение · #24

MasterSoft пишет:
Желание имееца, но есть ли смысл? если подобное никому не нужно кроме меня то и писать думаю бестолку.

когда возникают такие мысли то нужно встать отойти подальше от стенки,разбежатся и как долбанутся об неё чтоб вся дурь с головы вылетела, вопервых это нужно для тебя а выкладывать или нет после сделанного тебе решать

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


| Сообщение посчитали полезным: SReg, Dart Raiden

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

Создано: 02 декабря 2011 08:55
· Личное сообщение · #25

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

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



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

Создано: 02 декабря 2011 09:23
· Личное сообщение · #26

Zorn
это никуя не правильно, перехватывать CreateFile, ReadFile всякий может. и сомневаюсь что оно что-то распаковывает, скорей просто дампит файл из памяти как написанно тут: --> Link <--. вообщем анпакера нет - это факт.

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



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

Создано: 02 декабря 2011 10:27
· Личное сообщение · #27

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




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

Создано: 02 декабря 2011 11:37 · Поправил: Nightshade
· Личное сообщение · #28

Да есть и либа такая и драйвер для мониторинга распаковываемых файлов. И анпакер старый вроде распаковывает все файлы. Про Zorn а. Он писал этот автораспаковщик. Я его даже использовал). Все он нормально распаковывает. Причем напрямую из контейнеров стара.



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

Создано: 02 декабря 2011 11:53
· Личное сообщение · #29

Nightshade пишет:
Да есть и либа такая и драйвер для мониторинга распаковываемых файлов. И анпакер старый вроде распаковывает все файлы. Про Zorn а. Он писал этот автораспаковщик. Я его даже использовал). Все он нормально распаковывает. Причем напрямую из контейнеров стара.

опять началось... это паблик? если паблик то где он? где либа эта, где дров и где анпакер?


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




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

Создано: 02 декабря 2011 15:12
· Личное сообщение · #30

MasterSoft пишет:
Zornэто никуя не правильно, перехватывать CreateFile, ReadFile всякий может. и сомневаюсь что оно что-то распаковывает, скорей просто дампит файл из памяти как написанно тут: --> Link <--. вообщем анпакера нет - это факт.

Я вот про это писал.
Когда у тебя прога достает имена файлов в процессе работы, а не как ты наивно думаешь сразу все, ты фиг сделаешь распаковщик контейнера. И будет никуя не правильно делать всякие драйвера и распаковщики. Надо будет именно хукать апи.
Специально для тебя объясняю. Есть у тебя прога со снятым старом и контейнер. Ты знаешь аппкей. Но имена всех файлов чаще всего не знаешь. Что ты будешь делать? Логичнее похукать открытие файлов. И, при попытке открытия несуществующего файла, пытаться его распаковать из контейнера на лету. А потом вызываешь оригинальную апи и открываешь распакованный файл.

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

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

Создано: 02 декабря 2011 19:39
· Личное сообщение · #31

Nightshade пишет:
Специально для тебя объясняю. Есть у тебя прога со снятым старом и контейнер.

Вот почему именно со снятым? ясен хер дров на нём работать не будет, обычно бывает как бы наоборот когда есть прога накрытая старом и контейнер.

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


<< . 1 . 2 . 3 . >>
 eXeL@B —› Протекторы —› Распаковка Starforce SFFS ресурс файла (resource0.dat)
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати