Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Игровой клиент (https://forum.zone-game.info/forumdisplay.php?f=54)
-   -   А давайте напишем свой L2FileEdit :-) (https://forum.zone-game.info/showthread.php?t=41214)

BSmith 08.08.2016 20:09

А давайте напишем свой L2FileEdit :-)
 
Вдохновившись темой https://forum.zone-game.info/showthread.php?t=40993 захотелось мне написать на коленке что-то вроде простенького редактора dat файлов, полноценного редактора конечно не получилось, но все же возможно найдутся люди кто подхватит идею

Итак, первым делом пришлось вытащить ключ из l2encdec, тут пришла на помощь IDA, открываю файл l2encdec.exe, декомпил в С код, долгий анализ и ничего не вышло, нету его там, но где то же он есть )) Открываю gg-bps.dll и вот она заветная строка

PHP код:

      v3 "75b4d6de5c016544068a1acf125869f43d2e09fc55b8b1e289556daf9b8757635593446288b3653da1ce91c87bb1a5c18f16323495c55"
           "d7d72c0890a83f69bfd1fd9434eb1c02f3e4679edfa43309319070129c267c85604d87bb65bae205de3707af1d2108881abb567c3b3d0"
           "69ae67c3a4c6a3aa93d26413d4c66094ae20390000001d"


Этих данных нам с головой хватит для дешифрации (Примечание, способ работает после прогона папки system утилитой patcher.exe)

Первые 256 байт это так называемый modulus, оставшиеся 8 байт это publicExponent (то что нужно для инициализации RSAPublicKeySpec)

Далее конечно же написание кода с использованием полученных ключей, что примечательно структура даток напоминает структуру пакетов, а именно ByteBuffer и все вытекающее, чтобы увидеть быстрый результат пришлось взять L2GameDataName.dat т.к. он состоит из списка простых строк

Код:
Свернуть ↑Развернуть ↓


И конечно же результат, точнее вырезки из лога

Результат:
Свернуть ↑Развернуть ↓


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

PHP код:

int count Integer.reverseBytes(byteBuffer.getInt());
for(
int i 0counti++)
{
    
System.out.println(readUtfString(byteBuffer));



Emperor 08.08.2016 20:34

Re: А давайте напишем свой L2FileEdit :-)
 
За старания плюс, но зачем придумывать велосипед? Профит разве что от работы с новыми хроникам, т.к. файледит не всегда быстро обновляют до свежих хроник\протоколов.

BSmith 08.08.2016 20:40

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Emperor (Сообщение 416699)
За старания плюс, но зачем придумывать велосипед? Профит разве что от работы с новыми хроникам, т.к. файледит не всегда быстро обновляют до свежих хроник\протоколов.

Это скорее хобби + на эту тему мануалов я как таковых не нашел (хотя может плохо искал)

Zubastic 08.08.2016 20:52

Re: А давайте напишем свой L2FileEdit :-)
 
https://github.com/L2Miko/L2FileEdit
автор делай свой форк и вперед пилить хелиос :)

BSmith 09.08.2016 09:45

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Zubastic (Сообщение 416702)
https://github.com/L2Miko/L2FileEdit
автор делай свой форк и вперед пилить хелиос :)

Форк ? У этого товарища стандартный L2FileEdit который не поддерживает многие новые структуры (об этом уже писали на форуме не 1 раз). В данном случае нужна именно новая утилита

smeli 09.08.2016 10:54

Re: А давайте напишем свой L2FileEdit :-)
 
думаю в сентябре я присоединюсь к етому проекту

GOODPower 09.08.2016 11:24

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

думаю в сентябре я присоединюсь к етому проекту
... надеюсь ты шутишь :D

Zubastic 09.08.2016 11:52

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от BSmith (Сообщение 416719)
Форк ? У этого товарища стандартный L2FileEdit который не поддерживает многие новые структуры (об этом уже писали на форуме не 1 раз). В данном случае нужна именно новая утилита

Форк - своя разработка основанная на том, что я кинул выше. Добавляете структуры и получаете новый файл едит :)

smeli 09.08.2016 12:43

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от GOODPower (Сообщение 416723)
... надеюсь ты шутишь :D

а чего вы боитесь то?

Emperor 09.08.2016 14:33

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от BSmith (Сообщение 416701)
Это скорее хобби + на эту тему мануалов я как таковых не нашел (хотя может плохо искал)

Пили компилятор *.u файлов.
http://cs5.pikabu.ru/images/previews...9111212862.jpg

DreamStage 09.08.2016 16:31

Re: А давайте напишем свой L2FileEdit :-)
 
код шифрования?

DreamStage 09.08.2016 22:14

Re: А давайте напишем свой L2FileEdit :-)
 
Tested, not working, did you made the source code without testing? :D

Evian 10.08.2016 00:33

Re: А давайте напишем свой L2FileEdit :-)
 
И кому это надо? Тут из вас годс никто не делает. А кто делает - у того итак все это есть

DreamStage 10.08.2016 02:05

Re: А давайте напишем свой L2FileEdit :-)
 
Update: if you check for data size errors you will get all data decrypted, sometimes it gives some read errors

smeli 10.08.2016 06:54

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Evian (Сообщение 416763)
И кому это надо? Тут из вас годс никто не делает. А кто делает - у того итак все это есть

пробудитесь, год уже давно старая сага
саги иду так:
1 хроники
2 троны
3 год
4 епик талес

так вот хелиос птс делаю я, и инструментов на всё всё всё у меня нету

DreamStage 10.08.2016 07:09

Re: А давайте напишем свой L2FileEdit :-)
 
For decrypting Skillname requires for code update: Math.abs(Integer.reverseBytes(byteBuffer.getInt()) )

If no abs = negative indexs for readUtfString

Still data is not fully decrypted for all cases has many unknown characters:

Partial Code:
Код HTML:

Ԁ㠲㌱ᄀ
言Лекарство ਒ Ẵ䄄䈄〄㴄〄㈄㬄㠄㈄〄㔄䈄 䄀㬄〄㄄㸄㔄 㨀䀄㸄㈄㸄䈄㔄䜄㔄㴄㠄㔄 ሀ〄䠄㔄㌄㸄 㼀㔄䀄䄄㸄㴄〄㘄〄⸄ ጀ
딀Останавливает среднее кровотечение Вашего персонажа. ਔ ẵ䄄䈄〄㴄〄㈄㬄㠄㈄〄㔄䈄 䄀㠄㬄䰄㴄㸄㔄 㨀䀄㸄㈄㸄䈄㔄䜄㔄㴄㠄㔄 ሀ〄䠄㔄㌄㸄 㼀㔄䀄䄄㸄㴄〄㘄〄⸄ ᔀ


smeli 10.08.2016 10:09

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от BSmith (Сообщение 416695)
Вдохновившись темой........

тут у меня ява 1.6, новее нету, можно что нибудь сделать?

java.security.InvalidKeyException: Public Key cannot be used to decrypt.
at com.ibm.crypto.provider.RSAwithNoPad.engineInit(Un known Source)
at javax.crypto.Cipher.a(Unknown Source)
at javax.crypto.Cipher.a(Unknown Source)
at javax.crypto.Cipher.init(Unknown Source)
at javax.crypto.Cipher.init(Unknown Source)

Emperor 10.08.2016 10:17

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от smeli (Сообщение 416767)
так вот хелиос птс делаю я

В одного что-ли? :redlol:

BSmith 10.08.2016 10:42

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от smeli (Сообщение 416769)
тут у меня ява 1.6, новее нету, можно что нибудь сделать?

java.security.InvalidKeyException: Public Key cannot be used to decrypt.
at com.ibm.crypto.provider.RSAwithNoPad.engineInit(Un known Source)
at javax.crypto.Cipher.a(Unknown Source)
at javax.crypto.Cipher.a(Unknown Source)
at javax.crypto.Cipher.init(Unknown Source)
at javax.crypto.Cipher.init(Unknown Source)

Качайте 1.8 http://www.oracle.com/technetwork/ja...ads/index.html

smeli 10.08.2016 11:09

Re: А давайте напишем свой L2FileEdit :-)
 
"Качайте" - етот метод непоможет
нужно решение для 1.6

ето оказывается так трудно!?

Altha1oda 22.08.2016 16:10

Re: А давайте напишем свой L2FileEdit :-)
 

Очень понравилась тема.
Провели проверку на анпакнутой engine.dll вынув ключик rsa.
Сравнили с защищенной библиотекой через дамп + по String поиску, ключ был такой же.
записали видео как искать rsa 256 key , может кому то полезно.
в l2exe + engine.dll так же есть rsa 256 , Протектор Themida 1x как показано на видео уроке не мешает вынуть этот ключик , можно попробовать и на хелиосе , ведь с каждым новым клиентом ключик меняют.
Ps так же вынули с Black desert - на нём так же стоит протектор themida , aes rijndael 256 key.

Спасибо автору, полезная тема!

Emperor 22.08.2016 16:28

Re: А давайте напишем свой L2FileEdit :-)
 
Скооперируйтесь, пилите уже свой гит и собирайте эдитор, чего уж, народ вроде заинтересован. Можете даже пожертвования прикрутить, что бы работать было не лень, лично 1-2 тысячи готов подкинуть за шустрый эдитор для хелиоса и всего, что будет дальше.

Файлэдит уже давно мёртв, даже Мико не особо заинтересован впиливать схемы свежих хроник - гит молчит уже полгода, если не больше.
Да и тупит он с файлами в которых много строк, типа skillgrp.

BSmith 22.08.2016 16:45

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Emperor (Сообщение 417534)
Скооперируйтесь, пилите уже свой гит и собирайте эдитор, чего уж, народ вроде заинтересован. Можете даже пожертвования прикрутить, что бы работать было не лень, лично 1-2 тысячи готов подкинуть за шустрый эдитор для хелиоса и всего, что будет дальше.

Файлэдит уже давно мёртв, даже Мико не особо заинтересован впиливать схемы свежих хроник - гит молчит уже полгода, если не больше.
Да и тупит он с файлами в которых много строк, типа skillgrp.

Заманчиво конечно, но а кто Хелиосом занимается ? Бывает просматриваю топы и анонсы, так ГоД хроник как таковых нет, только godworld и залетные клиенты скриптов (дай бог им здоровья:redlol:)

Emperor 22.08.2016 16:53

Re: А давайте напишем свой L2FileEdit :-)
 
BSmith, Ну естессна, это же сравнительно свежие хроники. Погоди, месяц-другой пройдёт - как грибы после дождя повылезают.
Ну, офк если игрокам заедут, т.к. не все хроники воспринимаются игроками как интересные.

BSmith 22.08.2016 17:12

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Emperor (Сообщение 417542)
BSmith, Ну естессна, это же сравнительно свежие хроники. Погоди, месяц-другой пройдёт - как грибы после дождя повылезают.
Ну, офк если игрокам заедут, т.к. не все хроники воспринимаются игроками как интересные.

Вот как то за все время кроме Asima не один сервер людям не заехал, а это о чем то говорит
P.s. Речь о проектах с онлайном хотя бы 500+

Nehrk 22.08.2016 17:13

Re: А давайте напишем свой L2FileEdit :-)
 
Как раз хочу написать что-то на mono.. Хорошая тема.

n3k0nation 22.08.2016 19:08

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Emperor (Сообщение 417534)
Скооперируйтесь, пилите уже свой гит и собирайте эдитор, чего уж, народ вроде заинтересован. Можете даже пожертвования прикрутить, что бы работать было не лень, лично 1-2 тысячи готов подкинуть за шустрый эдитор для хелиоса и всего, что будет дальше.

Файлэдит уже давно мёртв, даже Мико не особо заинтересован впиливать схемы свежих хроник - гит молчит уже полгода, если не больше.
Да и тупит он с файлами в которых много строк, типа skillgrp.

Я боюсь, что Вы будете единственным, кто закинет пожертвования туда. Там кроме того, что нужно написать криптер/декриптер, нужен так же ассемблер/дизассемблер в какой-нибудь формат (я, например, склоняюсь к xml). Более того, придется писать схемы ассемблирования/дизассемблирования для кучи клиентов игры и поддерживать новые версии игры.
Слишком дофига времени уйдет на это.

Zubastic 22.08.2016 19:40

Re: А давайте напишем свой L2FileEdit :-)
 
Пилю для себя. Разобрал пока пару датников, медленно, но верно ковыряю до конца.

smeli 22.08.2016 19:42

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от n3k0nation (Сообщение 417551)
Слишком дофига времени уйдет на это.

ну так можно етот маленький кусок явы подправить как я просил
времени много недолхно много занять

Emperor 22.08.2016 22:52

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от n3k0nation (Сообщение 417551)
Я боюсь, что Вы будете единственным, кто закинет пожертвования туда. Там кроме того, что нужно написать криптер/декриптер, нужен так же ассемблер/дизассемблер в какой-нибудь формат (я, например, склоняюсь к xml). Более того, придется писать схемы ассемблирования/дизассемблирования для кучи клиентов игры и поддерживать новые версии игры.
Слишком дофига времени уйдет на это.

Ну, было бы желание, а возможность найдется.

Zubastic 22.08.2016 23:22

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Emperor (Сообщение 417559)
Ну, было бы желание, а возможность найдется.

Без знаний и желания хрен что там выйдет :)

LifeGame32 23.08.2016 08:48

Re: А давайте напишем свой L2FileEdit :-)
 
у меня вот что получилось.

ChaosPaladin 23.08.2016 10:43

Re: А давайте напишем свой L2FileEdit :-)
 
Ну он ведь все равно работает через asm/disasm. Так что для актуальных хроник он не подойдет, это всего лишь шкурка.

acmi 23.08.2016 14:44

Re: А давайте напишем свой L2FileEdit :-)
 
Совет – не делайте представление в виде таблицы, там древовидная структура.

Ninjago 04.04.2017 11:17

Re: А давайте напишем свой L2FileEdit :-)
 
Столкнулся с проблемой при кодировке/раскодировке armorgrp.dat 610 протокола.
Там где винхексом видно что 9 текстур, после раскодировке в 9 столбце пусто. Словно изначально и не подразумевали, что будет когда-либо больше 8 текстур.
Всвязи с этим, возможно, возникли некоторые "пасхалки" при работе и адаптации новых текстур. Полагаю патчер начинает изживать своё. Будем рады увидеть новый инструмент для работы.

Hint 04.04.2017 19:11

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Ninjago (Сообщение 425051)
Столкнулся с проблемой при кодировке/раскодировке armorgrp.dat 610 протокола.
Там где винхексом видно что 9 текстур, после раскодировке в 9 столбце пусто. Словно изначально и не подразумевали, что будет когда-либо больше 8 текстур.
Всвязи с этим, возможно, возникли некоторые "пасхалки" при работе и адаптации новых текстур. Полагаю патчер начинает изживать своё. Будем рады увидеть новый инструмент для работы.

Какой ddf? Если бы был неправильный, то файл бы вообще не сохранялся.

Ninjago 05.04.2017 07:02

Re: А давайте напишем свой L2FileEdit :-)
 
Цитата:

Сообщение от Hint (Сообщение 425057)
Какой ddf? Если бы был неправильный, то файл бы вообще не сохранялся.

В лс расписал с ссылками на файлы. Дело даже не в ддф.


Текущее время: 10:04. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot