Jump to content
Korean Random
SkepticalFox

space.bin (CompiledSpace) - packer/unpacker

Recommended Posts

Кажется, надо использовать расшифровщики типа base64. Или unpack. Я в этом не разбираюсь от слова "совсем", извини.

https://kt.pe/kaitai_struct_webide/

Вот удобная веб-программка для реверса)

Пока мне некогда этим заниматься...

Share this post


Link to post

Short link
Share on other sites

Ок, намёк понят.

А вообще может у тебя завалялся hangar_v2.pkg еще до внедрения space.bin?

У меня одна идея появилась...

...а хотя все равно для её осуществления придется перекачать весь клиент.

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites

https://kt.pe/kaitai_struct_webide/

Вот удобная веб-программка для реверса)

Посмотрел там - заинтересовала int8=64 в первой строке. В остальном смысла не вижу. Java не знаю.

 

Попробовал перегнать в универсальный декодер - фигня.

 

Сейчас unpack'ом попробую поработать.

P.S. я с анпаком не работал, попробую изучить сначала распаковщик спейс.бин.

Подскажи, что значат эти строки:

http://joxi.ru/KAxNKKgcxQvwm8

KAxNKKgcxQvwm8.jpg

PPS Разобрался.https://docs.python.org/2/library/struct.html#format-characters

Понял кое-что!

http://joxi.ru/82QEggWUXgqj2d

82QEggWUXgqj2d.jpg

Теперь надо найти зависимость между int'ами и всем блоком.

PPPS. 3f - не признак конца блока, а его длина...

Так.

Один блок - 64 байта.

Зачем тогда длину блока в конце указывать?..

Содержимое блока состоит из float'ов. Задача упростилась.

http://joxi.ru/zANGNNQs3gMer9

zANGNNQs3gMer9.jpg

Понял.

Первые 4 int'а - данные о блоках.

Первый - длина первого блока - 48 байт.

Второй - 0 - хз.

Третий - 63 - наверное, длина последующих блоков, хотя я не уверен.

Четвертый - 70 - тоже не знаю.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Четвертый - 70 - тоже не знаю.

Ну так-то все это очевидно.

Вопрос в самом смысле чисел в блоке с данными, а не в дескрипторе блоков - они универсальны.

Share this post


Link to post

Short link
Share on other sites

Часть с данными - полностью float'ы, хотя встречаются 'HMM=[float]' и подобное.


Ну так-то все это очевидно.

Для кого как... Я вот впервые копаюсь в таких файликах, для меня это открытие.

Share this post


Link to post

Short link
Share on other sites

полностью float'ы

эпсилон в float'е говорит о том, что это и не float вовсе)

там вперемешку что-то...

вот для этого мне и нужны старые ангары...

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites

эпсилон в float'е говорит о том, что это и не float вовсе)

Сдаюсь!

Не думал, что всё до такой степени сложнааааа

 

http://joxi.ru/RmzNaavcEl84mO

RmzNaavcEl84mO.jpg

...такое чувство, что "?" - разделитель...

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Сдаюсь!

Не думал, что всё до такой степени сложнааааа

Да не. Все очень просто. Идут два uint32, которые содержат информацию о размере блока и о количестве блоков этого размера.

48 0 - блоков с размером 48 нет, т.к. второе число 0.

64 70 - размер 64, блоков 70.

после 64*70 снова идет блок с 2 числами ну и так далее...

Думаю каждое из чисел 48, 64, ... означает тип ламп - spot, omni, ...

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites

Аааа, спасибо.


Думаю каждое из чисел 48, 64, ... означает тип ламп - spot, omni, ...

Ну да, их два всего.

 

Но они могут быть target или free. В таргете должна быть еще позиция пустышки, на которую направляется камера. Я думаю, эти 16 байт выделяются именно для таргет spotlight/omnilight.

 

А еще надо проверить, может ли быть в BigWorld'е SunLight...


А кстати, почему последний блок такой огромный?

 

Намекает на конец файла...

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

А еще надо проверить, может ли быть в BigWorld'е SunLight...

Чую ночью проверю.

Кстати, можно просто в space.bin инжектить новые значения для ламп и смотреть что изменится)

Но вроде некоторые лампы только на улучшенном графоне видны...

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites

 

 

инжектить новые значения для ламп и смотреть что изменится)
 

Ну да) но их там дофига, надо уметь усмотреть изменения.


Чую ночью проверю.

А ты на малиновке проверь.

Или другой карте.

Если его нет - то можно смело сказать, что движок санлайтом управляет.

ПС. J2bYnnJHzyjxm6.jpg

Share this post


Link to post

Short link
Share on other sites

Во, видишь?

Там могут быть 80-байтные, 48-байтные и 64-байтные секции.

krDG337se6QdAp.jpg

Но в малиновке их нет, следовательно, движок сам управляет SunLight'ом.

...и восьмибайтные бывают!? не заметил с первого раза.

Придумал.

 

Давай возьмем и удалим все секции кроме одной?

А заголовок есесно поправим.

Ну а конец тоже надо оставить, а то боюсь клиент крашиться будет.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

PS. выяснил, что:

с 56 до 60 байта 100% float.

После 'НММ=' всегда идет float... либо int, надо выяснить.

Также есть 'НМL=', аналогично с пунктом выше.

 

56-60 байты ?сортируют? строки. Т.е. если эти байты - '00HB', то они обязательно будут иметь вид 5md5xxGT95xW21.jpg. Все байты до выделения разные.


Дай-ка я составлю табличку. Погоди немного.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Все байты до выделения разные.

Это как <node>...<row3>...</row3></node>

Там тоже всегда одно и тоже.

Edited by SkepticalFox

Share this post


Link to post

Short link
Share on other sites

Это как <node>...<row3>...</row3></node>

Там тоже всегда одно и тоже.

А, ну и отлично. Сейчас рассортирую все и будем гадать.:)

Во!

Держи!

BWLC.zip

Странно, но в последних строках не хватает восьми байт, чтоб всё было как выше.

http://joxi.ru/bmonGGBCzv7Xry

bmonGGBCzv7Xry.jpg

Сверху есть различия для лампы с 56-60 байтами "А" (00 00 а0 41)

Остальное сверять лень. Я немного подустал, пойду сделаю glossiness map для своего божественного патрона.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Сейчас попробую запихнуть только секции A.


Затести, плес. Смещения учел. Длжно быть освещение только А, либо вылет.space.zip


Исправил сейчас, перекачай.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...