1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Berlin Connection

Тема в разделе "Установка и запуск игр", создана пользователем dosgamer, 19 сен 2025.

  1. dosgamer

    dosgamer

    Регистрация:
    12 сен 2025
    Сообщения:
    20
    Дорогие участники сообщества! Поскольку вы уже так здорово помогли мне с KGB, у меня есть ещё одна игра, которая мучает меня уже довольно давно. Речь идёт о немецком квесте под названием «Berlin Connection». Я неоднократно пытался взломать проверку по руководству (Handbuchabfrage), но без успеха, так как игра использует DOS-расширитель, и в отладчике я получаю лишь бессмысленный код. К сожалению, игра доступна только на немецком, но, возможно, вы сможете посмотреть её в целях сохранения? Я загружу файл к этому сообщению.

    Berlin Connection (1994) - MobyGames

    С наилучшими пожеланиями, dosgamer.
     

    Вложения:

  2. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    121.988
    @dosgamer, создавать такие темы следует не в разделе "Мастерская", где вы сделали это изначально, а в разделе "Установка и запуск игр"; тема перенесена.

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

    Уточните, пожалуйста, два момента:
    1. Руководство пользователя к данной игре доступно (то есть ваш запрос о взломе связан лишь с устранением необходимости вводить коды?)?
    2. Пробовали ли вы искать взломанную версию данной игры? Например, архив с данной игрой есть в Total DOS Collection: я не проверял ту версию, но, возможно, она уже взломана?
     
    dosgamer нравится это.
  3. dosgamer

    dosgamer

    Регистрация:
    12 сен 2025
    Сообщения:
    20
    Я уже проверил exoDOS и TOSEC, а также разные сайты abandonware — игра там есть, но с активной проверкой по руководству. Коды для этой проверки я положил в архив: «Berlin-Connection_Misc_DOS_DE_Copy-Protection-Codes.txt». Отсканированного руководства найти не удалось: это игра, которую в своё время «Berliner Morgenpost» выпускала как рекламную; похоже, тогда руководство можно было купить прямо в газете — теперь оно, видимо, утрачено. Зато есть список правильных слов, который я приложил.

    Внимание: речь идёт о версии 1992 года; существует ещё «Berlin Connection» 1998 года — это другая игра.

    Спасибо за ваши усилия!
    --- добавлено 19 сен 2025, предыдущее сообщение размещено: 19 сен 2025 ---
    Извините, я имел в виду 1994, а не 1992 — моя ошибка (к сожалению, не удалось отредактировать сообщение). И да, речь о проверке кода в начале игры. Было бы здорово, если бы удалось снять защиту.
     
    kreol и Uka нравится это.
  4. iunnamed

    iunnamed

    Legacy

    Регистрация:
    15 янв 2007
    Сообщения:
    1.251
    Поглядел бегло игру - там, действительно, DOS-расширитель, причем какой-то нестандартный, первый раз такой вижу. А исполняемый код представляет из себя виртуальную машину для какого-то байт-кода скриптового языка. В общем, разбираться в этом очень долго и сложно.
    Однако, так как вариант вопроса в начале выбирается случайным образом, то можно сделать так, чтобы счетчик случайных чисел был равен какой-то константе при запуске, а не количеству тиков таймера которое всегда разное (полагаю, что для квеста именно случайное начальное значение счетчика не должно быть критичным, если, конечно, игра не подразумевает каких-то сюжетных развилок, которые при каждом запуске должны быть разные, как это, например, в Diablo сделано). Тогда вопрос всегда будет один и тот же с одним и тем же вариантом ответа.

    Содержимое файла "BERLINER.CRK":
    Код:
    Berlin Connection (Promotion Software GmbH, 1994)
    
    File "B.EXE": always 1-4-1 manual check with "Benny"
    B.EXE
    0001DDC7: 65 B8
    0001DDC8: 67 24
    
    File "N.EXE": always 1-4-1 manual check with "Benny"
    N.EXE
    00018F87: 65 B8
    00018F88: 67 24
    Ставить и откатывать можно через программу crackfix.

    После изменений при запуске игры всегда будет один и тот же вопрос "1-4-1" с правильным ответом "Benny" (самый первый вариант в левом верхнем углу).
     
    Последнее редактирование: 25 сен 2025
    Eraser, dosgamer, Uka и 2 другим нравится это.
  5. dosgamer

    dosgamer

    Регистрация:
    12 сен 2025
    Сообщения:
    20
    С ума сойти! Огромное спасибо за отличную работу. И да, раньше я такой экстендер тоже никогда не видел — он меня чуть не свёл с ума. С наилучшими пожеланиями, dosgamer.
     
    iunnamed нравится это.
  6. Uka

    Uka

    Переводчик

    Регистрация:
    21 окт 2012
    Сообщения:
    29.757
    @dosgamer, немецкий коллега Eulisker сегодня приобрёл эту игру (отчасти по нашей с вами косвенной наводке) и поделился образом дискетки и всеми сканами!
    JC Front.jpg JC Inner.jpg Disk.jpg JC Back.jpg
     

    Вложения:

    Dimouse, iunnamed, dosgamer и 2 другим нравится это.
  7. dosgamer

    dosgamer

    Регистрация:
    12 сен 2025
    Сообщения:
    20
    Вау, большое спасибо! :) Я сейчас же заархивирую документы и, возможно, загружу их на Archive.org :)
     
  8. Uka

    Uka

    Переводчик

    Регистрация:
    21 окт 2012
    Сообщения:
    29.757
    Я думаю, не нужно: Eulisker обычно туда оперативно всё сам добавляет :)
     
  9. oFF_rus .

    oFF_rus

    Legacy

    Регистрация:
    25 фев 2007
    Сообщения:
    2.164
    Недавно читал про похожий патч и к чему он привёл в другом квесте:
    The Colonel’s Bequest – Case Cracked

    Будем надеяться что тут вмешательство окажется менее разрушительным (судя по описанию из той заметки там не seed поломали, а прямо вообще генерацию случайных чисел), хотя и так, наверное, можно словить во время игры некоторую (нежелательную?) детерминированность в чём-нибудь ("Everyone blinks, fidgets, and moves with lifeless constancy").
     
    Uka и iunnamed нравится это.
  10. iunnamed

    iunnamed

    Legacy

    Регистрация:
    15 янв 2007
    Сообщения:
    1.251
    Большое спасибо за статью! С интересом прочитал. Патч для игры изначально делался с невырожденным (не нулевым) значением начального счетчика, но, на всякий случай, заменил сейчас 00 на 24, вариант вопроса останется тем же при запуске, но последний байт не будет равен нулю.
    Сам код в игре такой:
    Код:
    push ebx
    push edx
    mov  eax, [00019AB4]
    mov  ebx, 00000FFF9
    mul  ebx
    cmp  eax, 0
    jne  @skip
    mov  eax, [gs:046C]
    @skip:
    mov  [00019AB4], eax
    pop  edx
    pop  ebx
    retn
    Что на языке C выглядело бы так:
    Код:
    DWORD dwRandValue = 0; // начальное значение при запуске игры
    
    DWORD GetRandom(void) {
      dwRandValue = dwRandValue * 0xFFF9;
      // если после умножения получился ноль, то читается значение таймера
      if (dwRandValue == 0) dwRandValue = GetTickCount();
      return(dwRandValue);
    }
    Патч заменяет строку чтения таймера:
    mov eax, [gs:046C] ; 65 67 A1 6C 04
    На присвоение константе:
    mov eax, 0x04C6A124 ; B8 24 A1 6C 04
    Напомню, что в DOS по адресу 0040:006C (или 0000:046C) хранится DWORD значение равное количеству тиков (примерно 18,2 в секунду) прошедших с момента включения компьютера. Так что подобное число там вполне может быть.
    Проверить, что игра проходима (а заодно есть ли там случайные элементы на которые это значение может повлиять) можно по прохождению (на немецком - можно использовать онлайн переводчик): Komplettlösung zu "Berlin Connection".
    Всю игру тестировать и проходить времени не было (дошел только до третьего экрана - киоск на улице после ночного клуба), но в DOSBox Debugger поставленная на эту функцию точка останова сработала только один раз при запуске игры (не исключено, конечно, что dwRandValue где-то читается напрямую, а не через эту функцию, увы, в DOSBox Debugger нет точек останова при чтении памяти, а только на запись).
    В статье, кстати, правильно указано, что лучше изменять скрипт в ресурсах, а не исполняемый файл интерпретатора. Но тут непонятно что за байткод и сколько на его разбор уйдет времени и сил. Поэтому и был выбран такой упрощенный вариант обхода защиты.
     
    Последнее редактирование: 25 сен 2025
    Uka нравится это.
  11. Uka

    Uka

    Переводчик

    Регистрация:
    21 окт 2012
    Сообщения:
    29.757
    Попробовал (с изменениями "65 67 -> B8 22" в обоих файлах) - нет, у меня там не "Benny", а "Connection". И этот вариант не принимается :(
    b_002.png b_003.png
     
    iunnamed нравится это.
  12. dosgamer

    dosgamer

    Регистрация:
    12 сен 2025
    Сообщения:
    20
    Ука, попробуй, пожалуйста, эту версию. Она пропатчена по указаниям iunamed. Работает у тебя?
     

    Вложения:

  13. Uka

    Uka

    Переводчик

    Регистрация:
    21 окт 2012
    Сообщения:
    29.757
    @dosgamer, работает, но это предыдущий вариант взлома, с "00", тогда как выше я пробовал последний вариант, с "22".
     
    iunnamed и dosgamer нравится это.
  14. iunnamed

    iunnamed

    Legacy

    Регистрация:
    15 янв 2007
    Сообщения:
    1.251
    Большое спасибо за проверку! Было поздно, был уставший, не туда посмотрел. Там должно было быть 24 (hex). Поправил во всех сообщениях.

    --- добавлено 25 сен 2025, предыдущее сообщение размещено: 25 сен 2025 ---

    Почему там 0x24 (36)? В игре 3 картинки с 12 вариантами ответов (3 x 12 = 36), которые идут по порядку (BENNY - 0, FESTPLATTE - 1, и т.д.), при этом правильный вариант ответа зависит от младшего байта счетчика случайных чисел. То есть диапазон вариантов лежит в интервале [0..35], что при 36 дает снова 0, при 37 снова 1 и так далее. Отсюда видно, что в файле "Berlin-Connection_Misc_DOS_DE_Copy-Protection-Codes.txt" не хватает 3 вариантов ответов для слов BEGINNT, BELIEBIGEN и PROGRAMM. Вот полный правильный список разбитый на картинки и отсортированный в порядке номера правильного ответа слева направо, сверху вниз (также заменил MUSS на MUB - по начертанию слово должно быть проще найти тем, кто не является носителем языка):
    Код:
    1. ABSCHNITT |  2. ZEILE | 1. WORT | BENNY
    3. ABSCHNITT |  4. ZEILE | 4. WORT | FESTPLATTE
    2. ABSCHNITT |  5. ZEILE | 1. WORT | EINFACH
    1. ABSCHNITT | 12. ZEILE | 4. WORT | KNACKEN
    3. ABSCHNITT |  2. ZEILE | 7. WORT | SPIELER
    1. ABSCHNITT |  8. ZEILE | 9. WORT | BILDET
    1. ABSCHNITT |  4. ZEILE | 5. WORT | WEIT
    1. ABSCHNITT |  3. ZEILE | 5. WORT | BERLIN
    2. ABSCHNITT |  1. ZEILE | 3. WORT | DARAN
    3. ABSCHNITT |  1. ZEILE | 3. WORT | BITTE
    1. ABSCHNITT |  5. ZEILE | 5. WORT | MUB
    3. ABSCHNITT |  2. ZEILE | 1. WORT | VERWENDET
    
    3. ABSCHNITT |  4. ZEILE | 1. WORT | SPIELSTAND
    3. ABSCHNITT |  1. ZEILE | 4. WORT | OHNE
    2. ABSCHNITT |  1. ZEILE | 2. WORT | WERDEN
    2. ABSCHNITT |  4. ZEILE | 2. WORT | DAS
    1. ABSCHNITT | 10. ZEILE | 1. WORT | ZUSAMMEN
    3. ABSCHNITT |  3. ZEILE | 2. WORT | PROGRAMM
    1. ABSCHNITT |  7. ZEILE | 2. WORT | TOTENMASKE
    1. ABSCHNITT |  5. ZEILE | 1. WORT | EREIGNISSE
    1. ABSCHNITT |  4. ZEILE | 2. WORT | BEGINNT
    1. ABSCHNITT |  8. ZEILE | 3. WORT | MORA
    1. ABSCHNITT |  1. ZEILE | 5. WORT | JAGD
    3. ABSCHNITT |  2. ZEILE | 4. WORT | WILL
    
    1. ABSCHNITT |  9. ZEILE | 4. WORT | CONNECTION
    1. ABSCHNITT |  6. ZEILE | 6. WORT | FELIX
    2. ABSCHNITT |  3. ZEILE | 3. WORT | ES
    2. ABSCHNITT |  3. ZEILE | 2. WORT | GIBT
    1. ABSCHNITT |  2. ZEILE | 1. WORT | DISKETTE
    2. ABSCHNITT |  3. ZEILE | 1. WORT | MINDESTENS
    3. ABSCHNITT |  2. ZEILE | 1. WORT | BELIEBIGEN
    1. ABSCHNITT | 11. ZEILE | 2. WORT | MORGENPOST
    3. ABSCHNITT |  3. ZEILE | 1. WORT | EINE
    1. ABSCHNITT |  7. ZEILE | 5. WORT | GEHEIMNIS
    1. ABSCHNITT | 10. ZEILE | 6. WORT | TOM
    2. ABSCHNITT |  4. ZEILE | 4. WORT | EINMAL
    
    Как быстро пользоваться этим ключом? Смотрим какое слово первое на предложенной игрой картинке ответов: BENNY, SPIELSTAND или CONNECTION - в зависимости от этого выбираем нужный блок ответов и уже в нем ищем нужные числа.

    Небольшая программа для вывода всех возможных вариантов вопросов (идут также по порядку):
    Код:
    #include <stdio.h>
    
    int main(void) {
    unsigned char b;
    char s[256];
    int i, j;
    FILE *fl;
      fl = fopen("DATA1.DAT", "rb");
      if (!fl) { return(1); }
      fseek(fl, 0x4BC9, SEEK_SET);
      for (i = 0; i < (3 * 12); i++) {
        for (j = 0; j < 4; j++) {
          fseek(fl, ftell(fl) + 1, SEEK_SET);
          fread(&b, 1, 1, fl);
          fread(s, b, 1, fl);
          s[b] = 0;
          printf("%s ", s);
        }
        fseek(fl, ftell(fl) + 5, SEEK_SET);
        printf("\n");
      }
      fclose(fl);
      return(0);
    }
     
    Последнее редактирование: 25 сен 2025
    Dimouse и Uka нравится это.
  15. iunnamed

    iunnamed

    Legacy

    Регистрация:
    15 янв 2007
    Сообщения:
    1.251
    В общем, да, можно поменять ресурсы и не трогать исполняемые файлы, оставив счетчик случайных значений как есть.
    Что нужно:
    1. Оригинальная игра или откатить все изменения в файлах "B.EXE" и "N.EXE" назад.
    2. Распаковать в папку с игрой архив "bchelper.zip".
    3. Запустить "bchelper.exe" (так как игра для DOS, то и программу нужно запускать из DOS или DOSBox).
    4. После этого файлы "bchelper.exe" и "bchelper.c" (это исходные коды) можно удалить.
    Файл "DATA1.DAT" будет отредактирован и теперь текст при запуске будет прямо указывать нужное слово, а также его строку и порядковый номер в строке (так, на всякий случай).
     

    Вложения:

    • bchelper.zip
      Размер файла:
      7,3 КБ
      Просмотров:
      8
    TheMadLynx, kreol, Dimouse и 2 другим нравится это.
  16. dosgamer

    dosgamer

    Регистрация:
    12 сен 2025
    Сообщения:
    20
    Я действительно впечатлён. Невероятно, как у вас это получилось. Эта версия тоже теперь работает без проблем, таймер исправен. Ещё раз большое спасибо!
     
  17. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    4.460
    Понимаю, что не совсем в тему, но недавно я обнаружил эту игру на архивной копии немецкого сайта с бесплатными играми DrLoad.de:
    DrLoad.de - Spiele kostenlos!

    Игра не взломана, но там прилагается, как я понимаю, файл полностью исчерпывающим списком кодовых слов. Предположительно, игра была в таком виде обнародована официально в 2001 г. Разумеется, это не отменяет удобства полного удаления защиты от копирования.
     
    kreol нравится это.
  18. iunnamed

    iunnamed

    Legacy

    Регистрация:
    15 янв 2007
    Сообщения:
    1.251
    Эх, ну, вот опять, "чукча не читатель, чукча писатель".

    Если речь идет об этом архиве (единственная сохранившаяся копия по приведенной ссылке из нескольких сайтов на которые шло перенаправление при попытке скачать), то файл "FREEWARE.TXT" внутри это точная копия "Berlin-Connection_Misc_DOS_DE_Copy-Protection-Codes.txt" размещенного в первом сообщении темы, где точно также не хватает 3 кодов, которые теперь доступны в теме (и всего парой сообщений выше, можно даже всю тему не читать). Более того, в том архиве еще отсутствует "LIESMICH.1ST" с информацией от разработчиков игры (не то чтобы он был особенно важным, больше интересен с исторической точки зрения), поэтому очень не факт, что даже "предположительно" игра была "в таком виде обнародована официально".
     
  19. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    4.460
    Интересно, что ты так сходу вспомнил общение со мной почти десятилетней давности -- притом что я, кажется, крайне редко участвую в тех же обсуждениях, что и ты.

    Я даже не знаю, должно ли мне быть лестно или нет, что ты меня помнишь. Но в любом случае могу тебя заверить, что комментарии про "чукчу" меня не задели, даже если ты преследовал такую цель (я честно не могу понять, потому что, кажется, вообще тебя не знаю -- мы как-то не пересекаемся на этом форуме).
    С той лишь разницей, что файл FREEWARE.TXT имеет даты из 2001 г., а Berlin-Connection_Misc_DOS_DE_Copy-Protection-Codes.txt -- из 2025 г. И ещё в архиве из первого сообщения явно сторонний file_id.diz 2016 г. то ли из EXODos, то ли из TDC.
    Я высказал своё предположение, которое кажется относительно правдоподобным. Если тебе вдруг было бы интересно, я ходил на архивные копии страниц "Берлинер Моргенпоста", но не нашёл там никакой информации о распространении данной игры. Однако поскольку на сайте DrLoad.de я также не нашёл явной пиратчины, а сам сайт тоже немецкий, резонно предположить, что они добавили эту игру, честно полагая, что она легально бесплатная. Если это так, следовательно, они могли её взять из официального источника либо из стороннего источника, куда она попала из официальных рук.

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

    Отдельно могу добавить, после запуска этой игры у меня вообще возникли вопросы, зачем там была добавлена защита от копирования. Хотя она делалась за деньги, качеством на вид совсем не блещет. И да, я в курсе, что некоторые немецкие вербешпили продавались за деньги, мне непонятна схема в случае с газетой.
     
    iunnamed нравится это.
  20. iunnamed

    iunnamed

    Legacy

    Регистрация:
    15 янв 2007
    Сообщения:
    1.251
    А потому что огорчает в людях, когда они считают что написать непроверенную информацию - это нормально. Особенно когда правильный ответ буквально одним сообщением выше, но за десять лет ничего не изменилось.

    Так о чем и речь.

    А теперь давайте по фактам, на проверку которых достаточно 5 минут.

    Заходим на MobyGames.com и находим там интересную обложку:
    Berlin Connection cover or packaging material - MobyGames.
    Находим этот сборник за июнь 1997 года на Archive.org:
    PC Power 1997-06 CD-ROM : Alchemy Publishing, BriStein Verlag GmbH.
    Видим на диске полную версию игры в папке "BERLIN".
    Также видим там файлы "PAWORT.TXT" и "WPAWORT.TXT" с одинаковым содержимым - это руководство пользователя, по которому и нужно искать необходимые слова при запуске игры.
    Оба файла датируются апрелем 1997 года.

    Возвращаемся к исходному сообщению:
    Итого, по фактам:
    - игра точно была в полном виде обнародована официально ранее 2001 года;
    - список кодов в "FREEWARE.TXT" и "Berlin-Connection_Misc_DOS_DE_Copy-Protection-Codes.txt" не является ни "исчерпывающим" (пропущено 3 слова), ни официальным, а является чьей-то самодеятельностью;
    - если очень хочется что-то написать, но написать нечего, а информацию проверять лень, то лучше себя пересилить и ничего не писать, чем вводить людей в заблуждение сообщениями с непроверенными данными или хотя бы начинать сообщения словами "Тему не читал, про игру ничего не знаю, шел мимо и не смог удержаться..." и далее по тексту, что хотя бы будет честно по отношению к тем, кто такие сообщения потом будет читать.

    С хелперами ругался несколько лет назад по этому же самому поводу (с тех пор принципиально в хелперский раздел не захожу, смотрю темы и публикую исправления исключительно в открытом разделе форума, чтобы они годами не лежали никому ненужные и не покрываясь пылью). Ругался по той же самой причине: либо человек тратит свое время, либо он тратит чужое. Не надо писать про "исчерпывающий" если коды не проверялись. Не надо вводить людей в заблуждение. Потому что они тоже прочитают последнее сообщение (им же тоже лень) и будет "опять 25" - почему игра задает вопросы, ответов на которые в файле нет. Давайте будем формулировать сообщения строго, либо снабжать их шапкой с текстом о том, что это полет фантазии на заданную тему. Такое предупреждение хотя бы будет честным по отношению ко времени других людей.
    Таки есть принципиальная и очень большая разница между ненамеренной ошибкой (см. выше про 22 и 24 в теме) и введением людей в заблуждение ложными сведениями «проверить которые я в данный момент не в состоянии. И не особо стремлюсь». Потому что возникает резонный вопрос: зачем? Зачем такие сведения писать? Для чего? Чтобы что? Какую новую, полезную и техническую (раз уж речь идет о технической теме по игре) информацию сообщение про якобы "исчерпывающий" список кодов несло? Может быть тогда стоит проявить силу воли и не писать такие сообщения?
     
    MrFlibble нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление