![]() |
eXeL@B —› Вопросы новичков —› Где почитать про обход проверки целостности программы |
Посл.ответ | Сообщение |
|
Создано: 15 июля 2013 15:52 · Поправил: Sn · Личное сообщение · #1 |
|
Создано: 15 июля 2013 15:59 · Личное сообщение · #2 |
|
Создано: 15 июля 2013 16:01 · Поправил: DenCoder · Личное сообщение · #3 |
|
Создано: 15 июля 2013 16:34 · Поправил: Sn · Личное сообщение · #4 reversecode, ога, смешно! спасибо ![]() DenCoder, первый вариант не используется точно. Если патчить в olly и f9 - работает. А вот если изменить незначительно в любом месте строчку когда и Copy to executable и попробовать запустить ехе - уже отказывается работать (запускается, но не коннектится к серверу, выплевывает в общее окно текста: что версия устарела, текст весь этот в открытом виде не хранится) ![]() |
|
Создано: 15 июля 2013 16:37 · Личное сообщение · #5 Sn пишет: первый вариант не используется точно. это варианты обхода ----- IZ.RU ![]() |
|
Создано: 15 июля 2013 16:42 · Поправил: Sn · Личное сообщение · #6 |
|
Создано: 15 июля 2013 16:43 · Поправил: reversecode · Личное сообщение · #7 |
|
Создано: 15 июля 2013 16:48 · Личное сообщение · #8 Sn пишет: Меня интересует как найти то место Нууу, VirtualProtect тебя и выведет на место, когда сработает exception. Если проверка идёт через ReadProcessMemory с хендлом текущего процесса (-1)(проверить легко бряком на функу), то также если бряк сработает, стек вызовов выведет на место проверки ----- IZ.RU ![]() |
|
Создано: 15 июля 2013 16:52 · Поправил: Sn · Личное сообщение · #9 reversecode, хочу! Если, что-то некорректно обьяснил - извиняюсь. В общем, если, программу загрузить в олли и, например, занопить незначительную строчку кода, нажать f9 - то программа запустится и полностью будет функционировать. Но если сохранить данные изменения в файл и пробовать ехешник запустить - работать отказывается должным образом. DenCoder, благодарю за совет! Теперь понял. Буду пробовать предложенные Вами способы... ![]() |
|
Создано: 15 июля 2013 16:59 · Поправил: DenCoder · Личное сообщение · #10 Sn пишет: Но если сохранить данные изменения в файл и пробовать ехешник запустить - работать отказывается должным образом А что именно патчили? Адреса патчились? Если да, то на запуске возможно по релокам будет нестыковка, если они есть. И, к примеру, была команда mov eax, [SomeAddr] или push SomeAddr, вы её занопили, лоадер добавил базу образа к 0x90909090 по тому месту и могло получиться так, что появился jmp в непредсказуемое место ----- IZ.RU ![]() |
|
Создано: 15 июля 2013 17:01 · Поправил: reversecode · Личное сообщение · #11 открыть программу в дизассемблере, и посмотреть для начала какие функции импортируются и уже от них отталкиватся при отсутствии подозрительных функций, стопать программу в дебагере при старте искать место где вы меняете байты, и ставить на них аксесс брекпоинт, и когда вывалится дебаггер, смотреть место откуда идет обращение к проверке целосности ![]() |
|
Создано: 15 июля 2013 17:35 · Поправил: Sn · Личное сообщение · #12 DenCoder, адреса не патчились! Незначительные инструкции, к примеру, занопил инструкцию bound сразу после оеп. скрин: http://rghost.ru/47438249 (или такой пример, взял редактор ресурсов и внес изменения - всё, программа будет выплевывать при старте, что версия устарела) Попробовал поставить BP на VirtualProtect и ReadProcessMemory, запустил - программа не остановилась... ![]() |
|
Создано: 15 июля 2013 17:55 · Личное сообщение · #13 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 15 июля 2013 17:57 · Поправил: ELF_7719116 · Личное сообщение · #14 Один я не увидел ссылку на target-софт?? Сколько телепатов на форуме водится ![]() Если речь зашла об MD5, то не лишним упомянуть: Code:
и соответственно WinAPI MapViewOfFile/UnmapViewOfFile Sn пишет: Какие API могут использоваться компонентом TJvRichEdit для вставки текста? Если действительно RichEdit, то SendMessage. Вообще такие вещи в MSDN смотрят. ![]() |
|
Создано: 15 июля 2013 18:04 · Поправил: DenCoder · Личное сообщение · #15 Sn пишет: Попробовал поставить BP на VirtualProtect Да на VirtualProtect ставить bp не надо, вам надо выполнить на точке старта программы VirtualProtect, чтобы запретить чтение участков, которые патчились. Вот так: Code:
Это для случая, если патчился код. После вызова функции VirtualProtect, если происходит проверка этого участка в составе подсчёта какой-то контрольной суммы, то сработает exception ACCESS_VIOLATION и в стеке будет инфа об адресе инструкции, которая пыталась обратиться по адресу патча. Вопрос только в том, как без отладчика заставить прогу вызвать эту функцию - я уже устал это писать, в одном из ответов я уже писал. Например Но есть ещё способы, например изменить адрес OEP в PE-хедере, по изменённому адресу прописать код выше и не забыть jmp на OEP. ----- IZ.RU ![]() |
|
Создано: 15 июля 2013 18:38 · Поправил: Sn · Личное сообщение · #16 |
|
Создано: 15 июля 2013 19:03 · Поправил: reversecode · Личное сообщение · #17 Sn пишет: запускается, но не коннектится к серверу, выплевывает в общее окно текста: что версия устарела, текст весь этот в открытом виде не хранится не вижу вообще такого сообщения ищите где вываливается это сообщение, и по цепочке вверх идете и высматриваете свою проверку а вообще у меня дежавю на эту тему, вчера вроде такое же спрашивали о проверке сервером ? ![]() |
|
Создано: 15 июля 2013 19:50 · Поправил: Sn · Личное сообщение · #18 reversecode пишет: не вижу вообще такого сообщения Потому что, выше приведен оригинальный ехе шник, не патченный! А вот патченный http://rghost.ru/47441319 (изменена одна неиспользуемая! программой инструкция по адресу 004022BE, после чего начинаются требования обновить версию программы) reversecode пишет: ищите где вываливается это сообщение Я понимаю, что нужно это искать, но в открытом виде данный текст не хранится и сообщения отдельного не вылазиет, а скидывается в общее окно программы (окно имеет класс TJvRichEdit). Поэтому - для меня это уже проблема... ![]() Есть еще один вариант, когда тело не правлено - вылазиет окно с вводом логин пароль, а когда правлено - данное окно уже не появляется! Думаю попытаться оттолкнуться от этого места. ![]() |
|
Создано: 15 июля 2013 20:09 · Личное сообщение · #19 |
|
Создано: 15 июля 2013 20:15 · Поправил: Sn · Личное сообщение · #20 reversecode пишет: в олли дебагере аттачитесь к программе и по списку окон ищете кто там и где берет это сообщение для выводапредлагаю продолжить тему после того как вы найдете где находится это сообщение в екзешнике Принял, ушел искать. ![]() Это ничего не дало, разве что узнал, что этих TJvRichEdit там штуки 3 еще есть невидимых на основной форме, виден в реале только один. Возможно, если хеш не совпадает - вместо одного показывается другой? http://rghost.ru/47443255 http://rghost.ru/47443262 ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 15 июля 2013 20:50 · Личное сообщение · #21 |
|
Создано: 15 июля 2013 21:32 · Личное сообщение · #22 |
|
Создано: 15 июля 2013 22:48 · Поправил: DimitarSerg · Личное сообщение · #23 Не, ну что за "угадалки" от спецов ![]() Code:
Дальше формируется отсылаемая строка, если не поленится и сравнить, можно заметить одно отличие - хеш, да это мд5 исполняемого файла, мд5 оригинального файла 7BB9C957CB5B292E477F715E24317D4D, патченого A3B1F030B6C75C6314BEFB38EEE3B0D5. Как подменять - решайте сами. p.s. Я подменил - нормально запустилось (как оригинал, запросило авторизацию). Дерзайте. ----- ds ![]() |
|
Создано: 15 июля 2013 22:54 · Личное сообщение · #24 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 16 июля 2013 08:04 · Личное сообщение · #25 А еще под кайфом были разработчики сего творения, например все тот же CreateFile Code:
вот тут FileName всегда пустой и все эт дело в цикле. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Где почитать про обход проверки целостности программы |
Эта тема закрыта. Ответы больше не принимаются. |