Войти
  1. ВКонтакте
  2. Facebook
  1. »
  2. »
  3. »
  4. Снятие защиты CRC с Auslogics Driver Updater
Скрыть панель справаПоказать панель справа

Снятие защиты CRC с Auslogics Driver Updater

Старожил
  1. Офлайн
  2. Администраторы
  3. 622 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 1 отправлено 23:59, 06.11.2014
Снятие защиты CRC с Auslogics Driver Updater


Тема создана для пользователя Dodakaedr. Здесь описывается, как убрать двойную защиту CRC в исполняемом файле программы Auslogics Driver Updater.

Первым делом переводим языковый файл enu.lng. Сделано. Но вот беда – некоторые текстовые строки стали длинней и перестали вмещаться на старое место. Теперь нужно менять координаты этих текстовых строк. Сами координаты строк, точнее, их дескрипторы и их параметры, находятся в исполняемом файле DriverUpdater, в секции ресурсов RCData. Да вот еще беда – после любого вмешательства в исполняемый файл программа рушится с сообщением об ошибке. Как оказалось, исполняемый файл содержит CRC защиту. Позже выяснилось, что таких защит аж две.
Итак, грузим экзешник в отладчик Olly Debugger, желательно самой последней версии. После загрузки файла сразу же автоматически проанализируется его код. После этого нужно найти место в коде, где вызывается сообщение об ошибке. Для этого правым кликом в отладчике через контекстное меню выбираем Search for -> All Intermodular calls. После этого появится список со всеми внешними вызовами функций. Далее ищем в этом списке (для упорядочивания можно нажать на колонку Dest name) вызов WindoswAPI функции под названием MessageBox. Данная функция отвечает за выскакивающие окошка с сообщениями. Но в списке этих нужных функций аж 10 штук, какая же из них нам нужна? Для этого на каждую функцию MessageBox в списке поставим точку останова (“бряк”), делается это клавишей F2 или через контекстное меню командой BreakPoint. После этого запускаем через отладчик саму программу клавишей F9 или большим жирным треугольником на панели инструментов. После этого программа запустится и когда дойдет до места, где нужно вывести сообщение об ошибке, то отладчик остановит ее. На экран выведется место в коде, где произошел останов.

Отладчик на точке останова


Данная подсвеченная строчка как раз и вызывает сообщение об ошибке. Чуть выше находится команда условного перехода - JZ SHORT 00462680.

Команда условного перехода и место ее перехода


Команда условного перехода проверяет определенное условие и если условие совпадает, то переходит на указанную строку кода. В данном случае, эта команда проверяет целостность исполняемого файла, и если файл изменен, то переход не осуществляется, а продолжается выполняться код после этой команды. Что и приводит к выводу окна сообщения. Если же файл не изменялся, то условие выполняется, и команда условного перехода срабатывает, вследствие чего и происходит перескакивание места в коде, откуда вызывается сообщение об ошибке. На скрине маршрут объезда кода показан в виде длинной серой стрелки.
Для того чтобы программа всегда обходила проблемное место в коде, нужно команду JZ SHORT 00462680 поменять на JMP SHORT 00462680. Что дает смена команды JZ на JMP? Если команда JZ переходит на нужное место при соблюдении условия, то команда JMP(сокращ. JUMP) не проверяет никаких условий, а прямиком переходит на нужное место. Чтобы сменить значение JZ SHORT 00462680 нужно двойным щелчком по этому месту, или пробелом, вызвать поле редактирования, вписать нужное значение, в нашем случае это JMP SHORT 00462680, а потом нажать Assemble. После этого нужное место в коде изменится, и программа теперь всегда будет обходить место в коде, где вызывается сообщение об ошибке.

Измененная команда


На скрине измененная команда подсвечена желтым цветом и от нее уходит длинная красная стрелка, которая означает, что весь проблемный блок кода будет пропущен.
Осталось теперь лишь сохранить измененное значение в сам исполняемый файл. Для этого через контекстное меню правой мыши выбираем Edit -> Copy all modifications to executable. После этого выскочить еще одно окошко, в котором также через контекстное меню нужно выбрать Save file… , где откроется стандартное окно сохранения файла. Сохраняем. А теперь запустим. В результате появится сообщение об ошибке, но уже другое и не такое как в первом случае. Это сработала еще одна CRC защита, и она также находится в исполняемом файле. Данная защита сравнивает контрольные суммы всех файлов программы и если что-то не так, то появляется вот такое сообщение.

Сообщение об ошибке при срабатывании второй защиты


Не буду здесь расписывать, как нужно вычислять такую защиту, скажу, что повозился изрядно и в каждого исследователя имеются свои методы поиска таких защит. Забегая наперед, скажу, что благодаря изменению всего одного байта такая защита легко снимается.
Итак, опять грузим в отладчик файл DriverUpdater.exe. Можно загрузить уже измененный файл, где была снята первая защита. А можно при снятии первой защиты не сохранять пока файл и не закрывать отладчик, а сразу тут же приступить к снятию второй защиты. Дело вкуса.
В общем, сначала нужно найти нужное место, где срабатывает защита. Для этого, как в случае с первой защитой, вызываем список всех доступных функций в программе через контекстное меню Search for -> All Intermodular calls. А далее ищем строчку вот такого типа:
CALL JMP.&AxComponentsRTL_bpl.@Auslogics@System@Win@Filetrust@TFileTrust@$bctr$qqrx20S


ystem@UnicodeStringo>

Понятно, что список функций будет просто огромен и найти такую длинную и сложную строку непросто. Но фишка в том, что эта функция уникальна и встречается в программе только в одном единственном месте. После того как данная строка будет найдена нужно по ней щелкнуть, после этого попадаем в код, где и вызывается эта функция. Чуть ниже будет видна команда XOR EAX,EDX. На скрине подсвечена строка с этой командой.

Место в коде где нужно сменить команду


Теперь команду XOR EAX,EDX нужно сменить на XOR EAX,EAX. Делаем такие же самые действия, как и во время снятия первой защиты – редактирование команды и сохранение измененной команды непосредственно в файл. Собственно и все, вторая защита снята.

Последний раз редактировал WYLEK 21:27, 07.02.2017
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 2 отправлено 09:15, 08.11.2014
Nexus;13867 писал:Итак, грузим экзешник в отладчик Olly Debugger, желательно самой последней версии. После загрузки файла сразу же автоматически проанализируется его код. После этого нужно найти место в коде, где вызывается сообщение об ошибке. Для этого правым кликом в отладчике через контекстное меню выбираем Search for -> All Intermodular calls. После этого появится список со всеми внешними вызовами функций. Далее ищем в этом списке (для упорядочивания можно нажать на колонку Dest name) вызов WindoswAPI функции под названием MessageBox. Данная функция отвечает за выскакивающие окошка с сообщениями. Но в списке этих нужных функций аж 10 штук, какая же из них нам нужна? Для этого на каждую функцию MessageBox в списке поставим точку останова (“бряк”), делается это клавишой F2 или через контекстное меню командой BreakPoint. После этого запускаем через отладчик саму программу клавишей F9
Скачал Olly Debugger 2.01 и при запуске программы зависает на модуле SensApi.dll. В чем может быть проблема?
Спойлер [+]

Последний раз редактировал WYLEK 21:29, 07.02.2017
Старожил
  1. Офлайн
  2. Администраторы
  3. 622 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 3 отправлено 13:44, 08.11.2014
Dodakaedr, если пытаешься эксперементировать на уже сломанном файле, то ничего не получится. Пробуй на оригинальном, еще не сломанном файле. Так сложилось, что программы Auslogics зависают в отладчике при их запуске.
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 4 отправлено 14:01, 08.11.2014
Цитата Nexus ()
если пытаешься эксперементировать на уже сломанном файле, то ничего не получится
нет, я на оригинальном пробовал. Скиньте плиз свой файл конфигурации ollydbg.ini программы olly debugger

Последний раз редактировал Dodakaedr 14:16, 08.11.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 622 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 5 отправлено 19:30, 08.11.2014
Цитата Dodakaedr ()
нет, я на оригинальном пробовал.

Так нужно в оригинальном подправить координаты строк через Ресторатор, чтобы потом обязательно выскакивало сообщение об ошибке. Если отлаживать файл, в котором сообщение об ошибке не появляется, то не получится снять зашиту.
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 6 отправлено 19:35, 08.11.2014
Цитата Nexus ()
Так нужно в оригинальном подправить координаты строк через Ресторатор
это все сделано, у меня отладчик не запускает программу
Мастер
  1. Офлайн
  2. Администраторы
  3. 1263 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 7 отправлено 21:44, 08.11.2014
Цитата Nexus ()
Но вот беда – некоторые текстовые строки стали длинней и перестали вмещаться на старое место.

Таки я дико извиняюсь, но где это место?


------------------------------------------
\"Возможно всё! На невозможное просто требуется больше времени.\"
Мудрец из Шангри Ла
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 8 отправлено 22:16, 08.11.2014
Цитата gazon01 ()
Таки я дико извиняюсь, но где это место?
object lblIgnoreListCheckAll: TAxLabel(требуется удлинение), object lblIgnoreListUncheckAll: TAxLabel(требуется смещение), object lbDescription: TAxLabel(требуется увеличение высоты) и т.д.
Старожил
  1. Офлайн
  2. Администраторы
  3. 622 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 9 отправлено 23:57, 08.11.2014
Цитата Dodakaedr ()
это все сделано, у меня отладчик не запускает программу

Старнно... Возле нужного MessageBox чуть вверху есть условный переход, тот который нужно править. Попробуй на нем поставить точку прерывания и запустить программу. На скрине это место отчетливо видно. Отладчик должен дойти до этого метса и остановиться, после этого отладчик переключится на экран с кодом.
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 10 отправлено 00:18, 09.11.2014
Цитата Nexus ()
Попробуй на нем поставить точку прерывания и запустить программу.
бесполезно, все равно происходит зависание на модуле SensApi.dll. Думаю вся проблема в настройках olly dbg, если не сложно, скиньте свои настройки.
Старожил
  1. Офлайн
  2. Администраторы
  3. 622 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 11 отправлено 00:37, 09.11.2014
Вот INI файл. К самой последней версии. Только он наврядли чем поможет. А на какой системе идет отладка? Дело в том, что на 7 зачастую отладчик хреново программы обрабатывает. На XP самые лучшие результаты. Еще можно отлаживать через IDA, но объяснять как пользоваться этим чудовищем у меня нету желания biggrin
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 12 отправлено 00:52, 09.11.2014
Nexus, спасибо, зависания уже нету но есть другое и программа так и не запустилась. Буду баловаться с настройками)
Мастер
  1. Офлайн
  2. Администраторы
  3. 1263 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 13 отправлено 01:11, 09.11.2014
Цитата Dodakaedr ()
object lblIgnoreListCheckAll: TAxLabel(требуется удлинение), object lblIgnoreListUncheckAll: TAxLabel(требуется смещение), object lbDescription: TAxLabel(требуется увеличение высоты) и т.д.

так эта беда только в настройках? или ещё в каком окне выскакивает?


------------------------------------------
\"Возможно всё! На невозможное просто требуется больше времени.\"
Мудрец из Шангри Ла
 
Перейти
Найти

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Последние темы

  1. Radialix 3
    Автор: pangasiys Сегодня, 13:27
  2. PartitionGuru 4.9.3.409_х86_х64_RUS
    Автор: Lupik2 Вчера, 11:30
  3. Задавайте вопросы по русификации и мы...
    Автор: Xabib2302 23:24, 18.11.2017
  4. Поговорим?
    Автор: kurkoff1965 11:15, 18.11.2017
  5. QTranslate 5.4.1 + Portable
    Автор: gazon01 07:21, 15.11.2017
  6. Promt Professional 9.0 Giant &...
    Автор: WYLEK 15:04, 14.11.2017

Изменения статуса

  1. Никто не менял личный статус.