Есть программка, которая при запуске проверяет все файлы ресурсов с хешем и если он не совпадает, начинает скачивать "испорченые"... Помогите мне отучить ее скачивать, потому что порчу я сознательно и безопасно... Тупо руссифицирую содержимое файла, что конечно изменяет его хеш. Я вродебы нашел ту проверку, которая сообщает, что хеши не совпадают, но поскольку мое знание ассемблера ограничено 11 статьями для начинающих, ручать не могу. Хеши лежат в файле Coh.checksum .Это имя прям вначале и пишется в стек
Version 4 Build "17.20080625.1T" file "CityOfHeroes.exe" time 1214600602 full 8855552 7a10f8d7 4fe76692 a9c4c294 ad8b2bfd и т.д. насчет создателей не знаю... врядли они мне пойдут навстречу... с чего бы это?
вот так вот меня послали The only officially supported languages worldwide are English, French and German.
Zhbanito Из кода видно, что в этом файле есть еще: Pack и Part. Если требуется файл, значит нужно его выложить (хотя бы часть, по которой можно однозначно сделать выводы о структуре).
Zhbanito Чтобы разобраться с твоей проблемой, нужно знать кое-что о самой игре и процессе ее обновления. Процедура подсчета контрольной суммы файла CalcFileChecksum находится по адресу 0x402846, первый аргумент - адрес, куда был загружен файл (целиком с финальным 0, як строка), второй - адрес контрольной суммы, третий - что-то еще, видимо для тебя несущественное. В этой процедуре вызывается процедурка sub_414AF0, которая все собственно и делает. Вот код, который возможно и нужно патчить (возможно это не единственное такое место): Код (Text): .text:0040475E lea eax, [ebp+var_1B8] .text:00404764 push eax .text:00404765 push [ebp+checksum] .text:0040476B push [ebp+filemem] .text:00404771 call CalcFileChecksum .text:00404776 add esp, 0Ch .text:00404779 mov eax, [ebp+file] .text:0040477F add eax, 8 .text:00404782 push eax .text:00404783 lea eax, [ebp+checksum] .text:00404789 push eax .text:0040478A call FileChecksum .text:0040478F pop ecx .text:00404790 pop ecx .text:00404791 test eax, eax .text:00404793 jz short loc_4047E3 После подсчета суммы файла процедура FileChecksum сравнивает его с хранящимися для каждого файла, загруженного из coh.checksum, данными о контрольной сумме. Видимо после этой проверки и нужно сделать какие-то изменения.
да пускай считает что угодно... главное что бы игра запускалась независимо от результата подсчета... 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 и так для каждого файла в папке
сам экзешник игры не запускается непосредственно. ссылается на Апдейтер. Значит апдейтер какой-то аргумент скармливает... может его искать?
Zhbanito Попробуй поколдовать с адресом 404793 (листинг я привел выше) после вызова функции FileChecksum.
А не проще ли пересчитать хэши и записать обновлённые в Coh.checksum ? По идее правильные значения можно просто подглядеть в отладчике...
roman_pro Можно сказать даже больше - похоже, что есть опции, позволяющие сгенерить патч. К сож. афтар не очень доступен (либо не очень интересуется происходящим судя по его запоздало-вялым реакциям), а то можно было бы и покумекать на эту тему...
я каждый день в эту тему гляжу... по нескольку раз. просто я честно признаюсь, что не программист низкого уровня и темболее не реверс-инженер
начет пересчитать, мне кажется что это все синхронизируется с сервером... т.к. я давно пытался записывать свои хеши в этот файл(coh.checksum), но видимо он сам под контролем и всегда исправлялся
пытаюсь, потому что декомпилировать я смог, а скомпилировать не получается как же так выходит, что код не собирается обратно, а ругается прям с самого начала... дизасемблил IDA, собираю FASM
ничего не будет... только исполняемый файл игры при запуске ругается и говорит, что игра запускается только через CohUpdater