Ребят, подскажите, возможен ли такой теоретический сценарий взлома приложения Win. защита построена так: 1) ключевые процедуры приложения защищены числовыми ключами, которые разбросаны по коду и математически искажают результат 2)вторая часть ключей, которая может правильно разблокировать результат, читается программой с сервера производителя во время старта 3) в каждый экземпляр программы зашит индивидуальный ID 4) сервер проверяет, если обратившийся экземпляр (ID) не работает с другого IP, и является оплаченным - выдаёт правильные ключи, которые правильно расшифровывают ключевые процедуры внутри экзешника Таким образом, стандартная техника снятия дампа образа самого файла не подходит. Подделывать ответ сервера тоже не получится, т.к. каждый раз запрос-ответ разный (видимо, добавляется сл. число или текущая дата). Однако после получения правильного ответа область памяти приложения полностью "расшифрована". Собственно, вопрос: есть ли способ как-то сохранить дамп памяти, а потом, запуская приложение, тупо заменять ВСЮ его память на сохранённый дамп и оживлять? Защита стоит на стандартном EXE и на COM.
Память либо дампиться (кусками или целиком в зависимости от того как шифруется) либо код исполняемого файла обрабатывается статически (при знании алгоритма и ключа). Для дампа либо OllyDBG, PETools для стстики hiew например.
Спасибо, чем сдампить образ самого exe, я знаю. вопрос в том - можно ли приаттачить к exe память из дампа, а потом "оживить" поток с этой памятью?
Если расшифровка происходит один раз, то в отладчике убедитесь что программа расшифрована в памяти, затем сдампите файл, восстановите импорт и вырежете расшифровку, что-бы не портилось правильные данные. Или просто подсуньте программе известный ключ (т.е. нечто тип эмулятора сервера). Если расшифровка/шифровка происходит постоянно то можно воспользоваться следующим методом: прибить шифровшик в памяти подождать пока все расшифруется и затем повторить то что описано выше.
Ладно, может, я чего-то не понимаю. В двух словах подскажите. Вот открываю я PE Tools, нахожу в списке свой процесс (уже полностью расшифрованный). Далее что? Команда Dump full? Хорошо, допустим, сделал. Убиваем процесс, запускаем снова. Теперь у него ключи в памяти зашифрованы. Как теперь залить ему дамп памяти? Какие кнопки жать?
Вам смотрите что нужно, вы сдампили PE-Tools'ом, получили расшифрованный файл на диске но с изгаженной таблицей импорта, ее нужно востановить. после этого у вас будет расшифрованный файл, который Вы сможете запустить, но он скорее всего вылетит так как попытается расшифровать уже рашифрованные данные поэтому расшифровшик нужно вырезать т.е. сделать так что-бы он не отрабатывал и все.
Да нет же, сам файл не упакован вообще! Никакой пакер на нём разработчики не использовали. И таблицы импорта никто не сбивал, защиты от дампирования там никакой нет. Мой вопрос не в том, как сделать дамп образа файла, а в том, можно ли сделать дамп всего пространства оперативной памяти приложения, чтобы, запустив это приложение в сл. раз, подгрузить ему эту память, "как будто оно никогда и не выключалось".
я знаю, только, что эти области при каждом запуске выделяются динамически. А ключи туда закачиваются каждый раз online, с сервера.
я бы сделал так поменял когд который получет ключ и записывал туда всегда правильный ключь а общение с сервером выкинул.
Я тоже так хотел вначале сделать, но там каждый день ключи разные, т.к. запрос уходит на сервер зашифрованный, и в него вкючается текущая дата + там "соль" какая-то, не хочется разбираться подробно, всё дизассемблируя... Думал, может, как-то хитро сдампить можно
вообщем сложно так сказать, что-то в принципе можете програмулину загрузчик написать (для пробы ) которая попробует записать память по нужным адресам. но скорее всего обломится. вероятнее всего без дизассемблирования и сознания работы алгоритма никак.