![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
useretail |
![]()
Сообщение
#21
|
![]() Member ![]() ![]() Группа: Authorized Сообщений: 23 Регистрация: 3-May 08 Пользователь №: 6,696 Спасибо сказали: 9 раз(а) ![]() |
todo: выковырять списки смещений и имена игр для FC
|
-=CHE@TER=- |
![]()
Сообщение
#22
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,377 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 321 раз(а) ![]() |
Так они там не зашифрованы - просто в конце находятся. Сначала список игр, потом, через запятую, смещения (байтовые) в десятичном виде. Я как раз в программе это обрабатывал, чтобы расшифровывалось всё, кроме этого списка в хвосте.
Спасибо сказали:
|
Shadeov |
![]() ![]()
Сообщение
#23
|
![]() Newbie ![]() Группа: Authorized Сообщений: 3 Регистрация: Вчера, 16:56 Пользователь №: 18,036 Спасибо сказали: 2 раз(а) ![]() |
Привет всем!
Подскажите, пожалуйста, как достать ключи смещений в CheMax? Нужна пошаговая инструкция для "новичка". Хочу сохранить это наследие, адаптировать под современные системы и при этом обеспечить обратную совместимость с базой данных. Всё никак не дадим спокойно помереть ЧеМаксу ![]() Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#24
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,377 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 321 раз(а) ![]() |
Привет всем! Добро пожаловать на форум!Подскажите, пожалуйста, как достать ключи смещений в CheMax? Нужна пошаговая инструкция для "новичка". Готовые смещения есть в архиве к программе database decrypter (ссылку ранее в этой теме давал) к последним версиям CheMax: 20.8 для английской версии (файл "eng_20_8.txt") и 21.4 для русской (файл "rus_21_4.txt"). Вроде бы, это должны быть последнии версии программы.Хочу сохранить это наследие, адаптировать под современные системы и при этом обеспечить обратную совместимость с базой данных. Всё никак не дадим спокойно помереть ЧеМаксу ![]() Если нужны для каких-то старых версий, то тут придётся попотеть. Я так делал: 1. Смещения для описаний находятся внутри CheMax.exe, но файл защищён ASPack. 2. Я снимал ASPack программой Dr.WEB.FLY-CODE.Unpacker.0.1. 3. Далее нужно вытащить строки (названия игр) и смещения - они отдельно находятся. 4. Чтобы вытащить имена игр, засовываем распакованный файл "STEP1_ASPACK.exe" в программу по работе с ресурсами (я для этого Resource Hacker использовал) и сохраняем куда-нибудь .DFM файл с главной формой программы. Затем в Delphi (у меня он стоит) создаём пустой проект, затем сохраняем и закрываем его. Заменяем файл формы сохранённой формой от CheMax. После этого открываем проект снова в Delphi, на форме выбираем список с именами игр, выбираем редактировать, затем сохраняем в буфер обмена Ctrl+C всё содержимое и вставляем Ctrl+V в какой-нибудь пустой текстовый файл. 5. Теперь нужно достать смещения. Здесь сложнее, потому что они в бинарном виде и как их найти я не могу написать - я тупо вручную отсматривал файл в HEX-редаторе. У меня осталась вот такая черновая рабочая программа, которой я смещения доставал - надеюсь пригодится как отправная точка для работы. Обращаю внимание, что смещений, вроде бы, на 1 больше, чем названий игр (последнее смещение равно размеру файла с описаниями) - это для того, чтобы размер описания к игре можно было получить как разницу между следующим и текущим смещением. 6. Ну и потом нужно просто объединить смещения и названия игр - можно написать для этого программу или скрипт, например, на том же PHP или на чём удобнее. Программу ниже нужно скомпилировать и перенаправить вывод в файл при запуске: offsdump.exe > offs.txt Исходный код "offsdump.c": CODE #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #include <stdint.h> /* eng 19.2 */ /* static uint32_t offslist[] = { 0xD7C14, 0xDBA94, 0xDE974 }; */ /* eng 20.8 */ static uint32_t offslist[] = { 0xD8614, 0xDC494, 0xDF374 }; /* rus 21.4 */ /*static uint32_t offslist[] = { 0xDBA14, 0xDF894, 0xE2774, 0xE5654, 0xE8534, 0xEB414, 0xEE2F4 };*/ static uint32_t offs[4000]; int main(int argc, char *argv[]) { uint32_t i, j; FILE *fl; fl = fopen("STEP1_ASPACK.exe", "rb"); if (!fl) { return(1); } for (i = 0; i < (sizeof(offslist) / sizeof(offslist[0])); i++) { fseek(fl, offslist[i], SEEK_SET); fread(offs, sizeof(offs), 1, fl); for (j = 0; j < 4000; j++) { if (!offs[j]) { break; } printf("%08X\n", offs[j]); } } fclose(fl); return(0); } Спасибо сказали:
|
Shadeov |
![]()
Сообщение
#25
|
![]() Newbie ![]() Группа: Authorized Сообщений: 3 Регистрация: Вчера, 16:56 Пользователь №: 18,036 Спасибо сказали: 2 раз(а) ![]() |
QUOTE Добро пожаловать на форум! Спасибо! QUOTE Если нужны для каких-то старых версий, то тут придётся попотеть. Правильно ли я понимаю, что ни у "Dr.WEB.FLY-CODE.Unpacker", ни у "STEP1_ASPACK.exe" нет ни исходников, ни даже внятного описания принципа работы? Мне нужно будет воспроизвести их логику на клиентском JavaScript, а позже — и на других платформах. Использование готовых exe-файлов убивает кроссплатформенность. |
-=CHE@TER=- |
![]()
Сообщение
#26
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,377 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 321 раз(а) ![]() |
Правильно ли я понимаю, что ни у "Dr.WEB.FLY-CODE.Unpacker", ни у "STEP1_ASPACK.exe" нет ни исходников, ни даже внятного описания принципа работы? "Dr.WEB.FLY-CODE.Unpacker" точно исходных кодов нет, а "STEP1_ASPACK.exe" - это имя, под которым первая программа сохраняет распакованный "CheMax.exe" файл (со снятой защитой). К CheMax тоже никто исходных кодов не выкладывал.Мне нужно будет воспроизвести их логику на клиентском JavaScript, а позже — и на других платформах. Использование готовых exe-файлов убивает кроссплатформенность. А какая конечная цель проекта? Что сделать нужно в итоге?Возможно есть какое-то более простое решение, чем писать распаковщик для ASPack и что-то откуда-то выковыривать. Я почему спрашиваю именно про конечную цель, потому что промежуточные задачи могут быть сильно не о том. Не помню, вроде бы, где-то уже рассказывал, но меня как-то попросили написать распаковщик ресурсов к игре, потом переделать чтобы он сохранённые игры распаковывал (там формат схожий), но в итоге выяснилось, что человек просто хотел найти где у него в игре деньги хранятся и дать их себе побольше. Однако это легко делалось программой ArtMoney (о которой человек просто не знал) и распаковывать ничего не нужно было. К слову сказать, человек потом извинился, что ввёл в заблуждение и сразу не рассказал что именно он в итоге получить хотел, и даже на копилку сам закинул. Поэтому я про итоговую цель и спрашиваю - возможно, есть решение гораздо проще того, что мы сейчас обсуждаем. Если там какой-то секрет большой, то можно мне личное сообщение написать на e-mail. А если нет, то давайте здесь обсуждать - возможно, техническое решение будут ещё кому-то интересно для похожего или другого проекта. Или кто-то ещё из прочитавших идей подбросит. |
Shadeov |
![]()
Сообщение
#27
|
![]() Newbie ![]() Группа: Authorized Сообщений: 3 Регистрация: Вчера, 16:56 Пользователь №: 18,036 Спасибо сказали: 2 раз(а) ![]() |
QUOTE А какая конечная цель проекта? Цель — альтернативный клиент для CheMax с обратной совместимостью. Планирую сайт + кроссплатформенные клиенты (Mac, Windows, iOS, Android и т.д.). Идея в том, чтобы просто загружать CheMax.exe и cheats.dat, после чего база открывается в современном интерфейсе — прямо в браузере, без установки. Если безболезненной распаковки не получится, то, скорее всего, просто вытащу смещения вручную и буду сопоставлять по хешу .dat‑файлов. В крайнем случае — использовать только уже готовые ваши смещения от последних версий. Пока набросал небольшой сайт на основе вашей DeCheMax — https://dechemax.vercel.app/ Открывает последние версии CheMax и CheMax FC. Old пока не проверял. Всё на клиенте: база сохраняется в кэше браузера и там же распаковывается. Как доделаю — обязательно выложу исходники. Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#28
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,377 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 321 раз(а) ![]() |
Во! Спасибо за развёрнутый ответ.
Теперь по пунктам. Цель — альтернативный клиент для CheMax с обратной совместимостью. Планирую сайт + кроссплатформенные клиенты (Mac, Windows, iOS, Android и т.д.). Идея классная, только вот с точки зрения конечного пользователя сложновата в использовании. Проще будет, наверное, БД последней версии CheMax конвертировать в одностраничный HTML файл и выложить в Интернет. Кому надо скачают к себе на диск для просмотра в offline, кому не надо - смогут через Интернет обозреватель с любого устройства смотреть. Если из БД выкинуть все игры, где написано только "для этой игры есть трейнер на сайте CheMax" (сайт закрылся и трейнеры вместе с ним пропали) и больше ничего (как это ни странно, таких игр много, причём этот текст тупо дублируется), то итоговая HTML страничка ещё и занимать мало будет. Ещё можно сделать список с играми как плавающий блок слева или справа, чтобы всегда на экране был и якорями-ссылками для быстрого перехода к нужной игре.Идея в том, чтобы просто загружать CheMax.exe и cheats.dat, после чего база открывается в современном интерфейсе — прямо в браузере, без установки. Можно, как уже писал ранее, сделать сайт-вики с кодами для CheMax, где люди смогут их обновлять, исправлять, добавлять. Я не вижу смысла именно заморачиваться поддержкой всех версий (разве что, кроме как хобби) в силу следующих причин: 1. Неудобно использовать. Пользователю чтобы посмотреть какие-то коды, которые он когда-то в этой программе видел, нужно где-то найти дистрибутив программы, установить или как-то его распаковать, затем достать оттуда нужные файлы, затем залить их на сайт - я ставлю на то, что такое количество телодвижений очень многих людей отпугнёт, а кому-то просто всё желание заморачиваться отобьёт. Да, можно добавить поддержку InnoSetup установщика и .ZIP архива, чтобы можно было дистрибутив программы заливать на сайт без установки, но дистрибутив всё равно нужно будет где-то найти. 2. Сайт CheMax закрылся, похоже, автор не планирует продолжать проект. Сами по себе коды к играм не могут быть защищены авторским правом (если, вдруг, беспокоит этот вопрос). К тому же, скорее всего, коды для БД просто собирались из всяких сборников и сайтов в Интернете. Программа была полезна для экономии трафика в 2000-ых годах, когда Интернет дорого стоил и не был безлимитным, то иметь под рукой энциклопедию было удобно. А сейчас с общедоступным Интернетом такая программа не особо актуальна в виде отдельного приложения. Если безболезненной распаковки не получится, то, скорее всего, просто вытащу смещения вручную и буду сопоставлять по хешу .dat‑файлов. Да, кстати, именно такое решение и хотел предложить - заготовить смещения + имена игр от всех существующих версий и по размеру/хешу от .dat файла использовать нужные. Процесс, правда, будет долгий и трудоёмкий - непонятно сколько там версий было, что-то можно из WebArchive достать, что-то с того же Old-Dos, но все ли там версии - неизвестно.В крайнем случае — использовать только уже готовые ваши смещения от последних версий. Пока набросал небольшой сайт на основе вашей DeCheMax — https://dechemax.vercel.app/ Глянул - круто!Открывает последние версии CheMax и CheMax FC. Old пока не проверял. Всё на клиенте: база сохраняется в кэше браузера и там же распаковывается. Как доделаю — обязательно выложу исходники. Я в любом случае отговаривать не буду - если есть желание, силы и время - то почему бы и нет? Хобби проекты тем интересны и приятны, что люди делают просто то что им хочется и нравится. А ещё иногда такие штуки делаются просто чтобы освоить какие-то новые технологии и на чём-то потренироваться - просто так писать что-то абстрактное неинтересно, а вот работать над конкретной задачей уже гораздо увлекательнее. В общем, я за любой кипишь, кроме голодовки. (*улыбается*) |
![]() ![]() |
Упрощённая версия | Сейчас: 9th July 2025 - 21:16 |