Помогите отучить программу

Тема в разделе "WASM.RESEARCH", создана пользователем Zhbanito, 11 июл 2008.

  1. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    Есть программка, которая при запуске проверяет все файлы ресурсов с хешем и если он не совпадает, начинает скачивать "испорченые"... Помогите мне отучить ее скачивать, потому что порчу я сознательно и безопасно... Тупо руссифицирую содержимое файла, что конечно изменяет его хеш.

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

    Хеши лежат в файле Coh.checksum .Это имя прям вначале и пишется в стек
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Zhbanito
    Выложил бы и файл checksum уж заодно, чтобы не заморачиваться с его структурой...
     
  3. Постигающий

    Постигающий New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2006
    Сообщения:
    35
    Напиши создателям что хочешь перевести на русский, может они сами тебе помогут.
     
  4. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    Version 4
    Build "17.20080625.1T"
    file "CityOfHeroes.exe"
    time 1214600602
    full 8855552 7a10f8d7 4fe76692 a9c4c294 ad8b2bfd
    и т.д.

    насчет создателей не знаю... врядли они мне пойдут навстречу... с чего бы это?
     
  5. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    вот так вот меня послали

    The only officially supported languages worldwide are English, French and German.
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Zhbanito
    Из кода видно, что в этом файле есть еще:
    Pack и Part.
    Если требуется файл, значит нужно его выложить (хотя бы часть, по которой можно однозначно сделать выводы о структуре).
     
  7. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Zhbanito
    Чтобы разобраться с твоей проблемой, нужно знать кое-что о самой игре и процессе ее обновления.
    Процедура подсчета контрольной суммы файла CalcFileChecksum находится по адресу 0x402846, первый аргумент - адрес, куда был загружен файл (целиком с финальным 0, як строка), второй - адрес контрольной суммы, третий - что-то еще, видимо для тебя несущественное.
    В этой процедуре вызывается процедурка sub_414AF0, которая все собственно и делает.

    Вот код, который возможно и нужно патчить (возможно это не единственное такое место):
    Код (Text):
    1. .text:0040475E                 lea     eax, [ebp+var_1B8]
    2. .text:00404764                 push    eax
    3. .text:00404765                 push    [ebp+checksum]
    4. .text:0040476B                 push    [ebp+filemem]
    5. .text:00404771                 call    CalcFileChecksum
    6. .text:00404776                 add     esp, 0Ch
    7. .text:00404779                 mov     eax, [ebp+file]
    8. .text:0040477F                 add     eax, 8
    9. .text:00404782                 push    eax
    10. .text:00404783                 lea     eax, [ebp+checksum]
    11. .text:00404789                 push    eax
    12. .text:0040478A                 call    FileChecksum
    13. .text:0040478F                 pop     ecx
    14. .text:00404790                 pop     ecx
    15. .text:00404791                 test    eax, eax
    16. .text:00404793                 jz      short loc_4047E3
    После подсчета суммы файла процедура FileChecksum сравнивает его с хранящимися для каждого файла, загруженного из coh.checksum, данными о контрольной сумме. Видимо после этой проверки и нужно сделать какие-то изменения.
     
  8. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    да пускай считает что угодно... главное что бы игра запускалась независимо от результата подсчета...

    Version 4
    Build "17.20080625.1T"
    file "CityOfHeroes.exe"
    time 1214600602
    full 8855552 7a10f8d7 4fe76692 a9c4c294 ad8b2bfd
    file "CrashRpt.dll"
    time 1139860748
    full 1080832 3c39acfb a9168580 310a7735 328850cf
    file "dbghelp.dll"
    time 1152393154
    full 1030144 54973c62 b0352a95 8a44f218 754018f8
    file "DFEngine.dll"
    time 1197938192
    full 676464 9219d297 b7452f41 005c51a3 43b5dccf
    file "doublefusion/cache/data/generic_tech_wall_1024_256/df.dat"
    time 1209507667
    full 88 8fced430 525c0713 783d9eee 16d612d1
    file "doublefusion/cache/data/generic_tech_wall_1024_256/generic_tech_wall_1024_256.tga"
    time 1208368008
    full 786476 8bab1a3d 7f36adb0 10b5ee48 2d6ceda2
    file "doublefusion/cache/data/generic_tech_wall_128_512/df.dat"
    time 1204588246
    full 88 f2729ee5 ce323cb7 404ae1f8 e59f747d


    и так для каждого файла в папке
     
  9. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    сам экзешник игры не запускается непосредственно. ссылается на Апдейтер. Значит апдейтер какой-то аргумент скармливает... может его искать?
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Zhbanito
    Попробуй поколдовать с адресом 404793 (листинг я привел выше) после вызова функции FileChecksum.
     
  11. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    А не проще ли пересчитать хэши и записать обновлённые в Coh.checksum ? По идее правильные значения можно просто подглядеть в отладчике...
     
  12. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    roman_pro
    Можно сказать даже больше - похоже, что есть опции, позволяющие сгенерить патч. К сож. афтар не очень доступен (либо не очень интересуется происходящим судя по его запоздало-вялым реакциям), а то можно было бы и покумекать на эту тему...
     
  13. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    я каждый день в эту тему гляжу... по нескольку раз. просто я честно признаюсь, что не программист низкого уровня и темболее не реверс-инженер
     
  14. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    начет пересчитать, мне кажется что это все синхронизируется с сервером... т.к. я давно пытался записывать свои хеши в этот файл(coh.checksum), но видимо он сам под контролем и всегда исправлялся
     
  15. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Zhbanito
    Ну дык надо тесно сотрудничать, а не ждать... у моря погоды.
     
  16. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    ну дык я сотрудничаю... вроде все что надо поставляю
     
  17. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Zhbanito
    Тогда вопрос: ты пробовал обойти проверку (адрес 404793) или нет?
     
  18. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    пытаюсь, потому что декомпилировать я смог, а скомпилировать не получается

    как же так выходит, что код не собирается обратно, а ругается прям с самого начала...
    дизасемблил IDA, собираю FASM
     
  19. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    А если удалить это CohUpdater что будет?
     
  20. Zhbanito

    Zhbanito New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    23
    ничего не будет... только исполняемый файл игры при запуске ругается и говорит, что игра запускается только через CohUpdater