Автор Тема: Обход проверки CRC  (Прочитано 11597 раз)

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Обход проверки CRC
« : 24 Декабря 2016, 21:17:46 »
Программа Simplify3D-3.1.1
Ссылка на скачивание https://yadi.sk/d/h-e-TSq5zq7rY

Суть дела такова - ресурсы находятся в ж-к строках файла Simplify3D.exe. Даже при простом сохранении в Radialix, без всякого перевода, программа становится неработоспособной, выдавая сообщение "Установленные файлы повреждены. Переустановите приложение". Попытка правки в WinHex вызывает то же самое окно. Возникло подозрение, что при запуске идёт проверка CRC или целостности файла. Пробовал использовать уроки от Solenij и Leserg  по снятию проверки, но ничего не добился. Видимо не там копаю или не так. Использовал OllyDBG, однако она для меня до сих пор тёмный лес. Если есть желание разобраться, то прошу помочь. Самому интересно - как бороться с подобными штуками.

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Обход проверки CRC
« Ответ #1 : 05 Января 2017, 16:50:56 »
Здравствуйте!

Посмотрел я на Вашу проблему. Там все намного сложнее, как может показаться на первый взгляд. Конечно, я могу ошибаться, т.к. опыта по решению таких задач у меня не много. Но помимо хеша, а проверятся именно целостность SHA-1, выполняется проверка имени самого исполняемого файла, а также SHA-1 файла Interface.dll и Common.dat. Банальный обход этих проверок (типа замена условных переходов на безусловные) не дает положительного результата: сразу после запуска программа закрывается. Где-то и как-то (я не смог это определить) выполняется еще какая-то неявная проверка. То кто ломал программу, по-моему, также не стал заморачиваться с этим вопросом. Еще с самого начал меня удивил тот факт, что исходный файл Interface.dll нужно переименовать в Interface.dl1, а на его место скопировать файл из архива аптечки. Я сначала не придал этому значения и попросту выполнил замену указанного файла. В итоге программа не запустилась и я решил, что она недоломана. Потом еще раз прочитал инструкцию и сделал, как написано. Только тогда программа заработала. Позже, когда я начал копать файл Simplify3D.exe, стало понятно зачем нужно было оставить оригинальный файл Interface.dll в Interface.dl1. Поэтому у меня родилась идея провернуть такую же фишку с файлом Simplify3D.exe. Я сделал его копию, переименовал в Simplify3D.ex1 и поместил в каталог установки программы, по аналогии с файлом Interface.dll. Затем с помощью отладчика внес небольшие изменения в Simplify3D.exe, чтобы при его запуске выполнялась проверка файла с именем Simplify3D.ex1. В итоге, теперь с полученным файлом можно делать, что угодно, в том числе и локализовать. Правда я не знаю, как такое решение отразится на функциональности приложения в целом, т.к. не владею оборудованием, для которого предназначена эта программа.  

Файлы смотрите в ЛС. В проекте перевода кодировку строк укажите UTF-8. Также склоняюсь к мысли, что безопасней сделать разделение строк по ссылкам и не переводить их все подряд. Также более тщательно проводите отладку перевода, с максимально-возможной проверкой всех функций программы.

Я проверил запуск программы на системах Windows 8 и 10 в виртуальном окружении. Работу на реальных системах не проверял. В принципе, если я не ошибся, то программа должна работать. Если нет, то она выдаст знакомое Вам уведомлении о повреждении файлов установки. Также это уведомление будет выдано, если имя исполняемого файла будет отличаться от Simplify3D.exe. Поэтому будьте внимательны. По умолчанию в настройках проекта перевода для имени локализованного файла указано добавление суффикса согласно локали перевода, например Simplify3D_RUS.exe. При попытке запуска файла с таким именем вы получите сообщение об ошибке. Поэтому локализацию лучше делать в отдельном каталоге, а для проверки и отладки копировать локализованный файл в каталог установки.

Оффлайн миха04

  • Модератор
  • Старожил
  • *****
  • Сообщений: 374
    • http://
Обход проверки CRC
« Ответ #2 : 05 Января 2017, 21:24:16 »
Спасибо, буду пробовать.