![]() |
eXeL@B —› Вопросы новичков —› Найти место проверки серийника |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 25 мая 2011 00:14 · Личное сообщение · #1 Приветствую. Есть программа, была упакована ASPack. Защиту сняли, импорт восстановили, экзешка ззапускается, вроде работает даже ![]() После долгого и мучительного (давно не было практики) анализа и поиска места проверки серийника выяснил следующее: 0) C++ Builder 1) при вводе серийник не проверяется, не считая длины а просто закрывается 2) он проверяется при запуске программы, где хранится - непонятно, ProcMon наталкивет на мысль, что все хранится в конфиге (ни к чему подозрительному не обращается прога наша больше), но похожих на хеши и пароли строчек там нет. 3) периодически через какие-то промежутки времени выскакивает диалог, и говорит мне, что я нехороший буратина. В окрестностях вызова диалога проверки также не нашел. 4) эта пакость при запуске 100500 раз считывает с файла по 1 байтику, чем сильно захламляет логи... Собсно как можно выявить место проверки серийника при запуске? По логике я думаю, что нужно реверсить механизм чтения настроек, можно ли это как-то сделать красиво и быстро? Может проверенные методики, тулзы? ![]() |
|
Создано: 25 мая 2011 00:41 · Поправил: [0utC4St] · Личное сообщение · #2 |
|
Создано: 25 мая 2011 01:22 · Личное сообщение · #3 |
|
Создано: 25 мая 2011 01:37 · Личное сообщение · #4 |
|
Создано: 25 мая 2011 03:13 · Личное сообщение · #5 |
|
Создано: 25 мая 2011 04:13 · Личное сообщение · #6 |
|
Создано: 25 мая 2011 05:13 · Личное сообщение · #7 verdizela пишет: сравни снимки до и после ввода номера. прога может выдать меседж типа "перезапусти меня" а сама чекать серийник и, в случае его невалидности, она его в реестр и незапишет ![]() |
|
Создано: 25 мая 2011 09:34 · Личное сообщение · #8 Macr0s Включи логику. Серийник либо поверяется при вводе, либо куда-то записывается. Проще отследить именно этот момент - здесь меньше посторонних вызовов. Про мусор в логах - раз его много, то придется таки искать причину диалога про буратину. Серийник может проверятся динамически на валидность - например если он из цифр, то буква просто взведет флажок и СЕРЬЕЗНОЙ проверки не будет. ![]() |
|
Создано: 25 мая 2011 11:52 · Личное сообщение · #9 |
|
Создано: 25 мая 2011 12:12 · Личное сообщение · #10 |
|
Создано: 25 мая 2011 12:45 · Личное сообщение · #11 Macr0s пишет: А что обычно используют для генерации аппаратно-зависимого ключа? GetVolumeInformation cpuid Так же можно из реестра получить кучу инфы (название и серийники харда, материнки, проца и т.д.) HWID получить существует куча способов. ![]() |
|
Создано: 25 мая 2011 13:44 · Поправил: VodoleY · Личное сообщение · #12 продолжение... SystemBiosDate (дата биоса) кроме GetVolumeInformation , которое любым дискэдитором подменяеца, можно получить железный( заводской ) серийник винта/флехи, были извраты прога считала дату производства видеокарты (точнее ее биоса). еще был маразм, прога собирала че может проц(поддерживаемые инструкции и т.д.) на основе этого генерила хеш.. вощем извратов хватает З.Ы. WMI лиш способ достучаца до инфы, как ты ее буш получать.. хоть своим драйвером с ринг 0.... дело десятое ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 25 мая 2011 16:07 · Личное сообщение · #13 |
|
Создано: 25 мая 2011 17:52 · Поправил: Macr0s · Личное сообщение · #14 Konstantin не придирайся к словам ![]() В итоге нашел я валидный серийник для проги и место куда оно его пишет, осталось кейген сделать. Пока копался обнаружил, что оно получает серийный номер винчестера и хитрым образом меняет в нем символы перед всеми операциями ![]() ![]() Патчить прогу не хочу, алгоритм генерации серийника тут размазан хорошо по нескольким функциям и сам по себе довольно веселый... Зато адрес валидного серийника находится ровно в 36 байтах от начала введенного серийника, но после закрытия его формы ввода бесследно стирается. Есть идеи, как его отловить run-time? ![]() |
|
Создано: 25 мая 2011 18:53 · Личное сообщение · #15 |
|
Создано: 25 мая 2011 22:02 · Личное сообщение · #16 Macr0s пишет: с файла данные считывает по 1 байту, на полном серьезе, там скорее всего какой-то хитрый парсер настроек самописный Улыбнуло Macr0s пишет: Есть идеи, как его отловить run-time? Странно, что до сих пор людям не лень гадать, чаще сразу закрывают такие топики, когда автору лень жертву выложить, а он рассказывает какая злостная и неимоверная защита там стоит... ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 26 мая 2011 10:09 · Личное сообщение · #17 Isaev пишет: когда автору лень жертву выложить, а он рассказывает какая злостная и неимоверная защита там стоит... Не то чтобы лень, есть другие моменты: 1) интересны общие принципы действий в аналогичных ситуациях 2) после прямых подсказок типа "да тут по этому вот адресу проверка, по этому jmp по этому генерация сериала" как-то неохота самому копаться что да как А прога вот: http://superbot.su/botva.php Кстати обнаружилась онлайн-проверка, придется патчить ![]() ![]() |
|
Создано: 31 мая 2011 08:24 · Личное сообщение · #18 |
|
Создано: 31 мая 2011 12:07 · Личное сообщение · #19 |
|
Создано: 31 мая 2011 12:33 · Поправил: Isaev · Личное сообщение · #20 zeppe1in пишет: Это если патч не грамотный Смело! простой пример: post запрос с HWID и KEY, проверка в php если KEY не от этого HWID функционал на стороне сервера выполнился не правильно, скрипт пернул пару килобайт не верного ответа и на его основе пошли дальше не верные вычисления и всё пошло не так что будешь патчить? ![]() ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 31 мая 2011 13:35 · Личное сообщение · #21 |
|
Создано: 02 июня 2011 16:45 · Личное сообщение · #22 |
|
Создано: 03 июня 2011 12:30 · Личное сообщение · #23 согласен что 500 не деньги. но вот мне надо поднять 10+ мультов на разных компах. я разорюсь покупать бота для разных машин ![]() насчет онлайн проверки: 1. для самого бота - написана программа которая дает правильный ключ. для бота ключ введен правильно и он считает себя зарегенным. 2. бот делает онлайн проверку - отсылается сгенеренный ключ(зависит от конкретного компа) и еще какая то инфа. какая - неизвестно пока что. 3. первую пару дней - приходит валидный ответ от сервера и бот работает. затем начинает приходить другой ответ и прямо в тексте ответа текст: "Прога не зарегена и т.д.", который бот выбрасывает в мессаж боксе при получении и завершает работу. 4. запрет серверов для онлайн проверки - не дает результатов, бот пытается в бесконечном цикле все таки получить онлайн проверку и не работает. 5. демо версией можно пользоваться выходит 2-3 дня, после этого твой хардварный ключ блокируется на сервере, и всегда приходит ответ что прога не зарегена. 6. подмена ответа онлайн-проверки на валидный - который приходил в первые пару дней - не дает положительных результатов, бот снова шлет постоянно запросы на проверку. 7. подмена запроса с помощью прокси на другой хардварный ключ - дает валидный ответ(на пару-тройку дней). но в целом не помогает. ответ от сервера приходит валидный судя по всему для того ключа - который был отправлен. НО, скорее всего бот делает проверку ответа на основе твоего хардварного ключа и она тоже не проходит. Есть идеи? Есть смысл делать хук на функцию которая возвращает например серийный номер винта, на основании которого вычисляется хардварный ключ? ![]() |
|
Создано: 03 июня 2011 13:54 · Личное сообщение · #24 |
|
Создано: 04 июня 2011 01:09 · Личное сообщение · #25 |
|
Создано: 06 июня 2011 13:26 · Личное сообщение · #26 |
|
Создано: 06 июня 2011 15:32 · Личное сообщение · #27 zeppe1in Если верный ответ, по дальнейшим вычислениям угадать не представляется возможным, то единственная валидная пара решит проблему Ну вот, уважаемый человек, а такое говорите. Вы же наверняка про криптографию слышали, и про взлом алгоритма только лишь при наличии определённого колчиства plain-text и crypted text. Одной парой тут всё явно не ограничится. Возможно, вы что-то другое имели ввиду? ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 06 июня 2011 15:56 · Личное сообщение · #28 |
|
Создано: 06 июня 2011 16:26 · Поправил: ARCHANGEL · Личное сообщение · #29 |
|
Создано: 07 июня 2011 09:12 · Личное сообщение · #30 Ну а как это на сервере запатчить? На сервере никак. В экзе можно запатчить, чтобы выдавал "правильный" HWID, который зареган. Естественно придется 500р отстегнуть. SomeSpy : для самого бота - написана программа которая дает правильный ключ. Или имелось ввиду : менять через 2 дня этот ключ - естественно вместе с HWID. ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Найти место проверки серийника |