Сейчас на форуме: asfa, bartolomeo (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Не могу отследить проверку серийника |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 03 апреля 2008 15:55 · Поправил: Модератор · Личное сообщение · #1 Прграмма с жестким серийником считывает его практически сразу после ввода. Сама программа, если ставить бряк на секцию код, постоянно останавливается если активно ее окно. То есть идут циклы. Много чего пробовал делать, но пока не удалось толком ничего. Даже смотрел в стеке какой функцие вызывается окно о неправильном серийнике. Оказалось из библиотеки USER32, хотя этой функции в списке нет, а также бряк на нее не ставится из самого кода проги. Если только перейти в модуль USER32 и там поставить бряк на определенный адрес. Также в стеке видел мой неправильный серийник, пробовал ставить бряк на этот адрес, но все что там происходило было уже после сравнения и вело к выводу сообщения о неправильном серийнике. Причем перед выходом окна о неправильном серийнике стои CALL и ведет не в библиотеку USER32. А если поставить бряк в самой библиотеке USER32, то адреса возврата в стеке нет. Как работает эта программа я не знаю. Что можно попробывать сделать, чтобы поймать момент считывания серийника ??? Если ставить bp на TRANSLATE MESSAGE не помогает. Пробовал и условные бряки ставить, но тоже не помогло особо. И еще. Сразу после ввода серийника в буфере памяти его нет. А это говорит о том, что когда я делаю окно программы неактивным, то она уже серийник как-то шифрует. И я в этом собственно убедился, когда посмотрел что она делает с введенным серийником сохраненным в стеке... ![]() |
|
Создано: 19 мая 2011 20:54 · Личное сообщение · #2 |
|
Создано: 19 мая 2011 22:52 · Поправил: anunak · Личное сообщение · #3 хм, вон оно как оказалось ![]() ![]() ![]() Promix_17 пишет: находишь куда попадает требуемое значение и находишь проверку серийника брейкпоинтом на обращение к памяти. вот об этом я и спрашивал, после bp получается, что при вводе символа он срабатывает (и до вывода окна тоже) и какое-то колбашение начинается с этим введённым символом, вот что интересно мне, как не очень соображающему в этом деле, может надо сначала ввести весь серийник в рамки и затем bp поставить чтобы прослеживать, сразу то он при введении не проверяет по символьно? в общем пока я так пробовал проследить очень много кода и не встречал пока каких-либо упоминаний о местах, где у него серийники хранятся для сравнения... хотя они там нибось в 16ричном формате будут сам ключ в реестре 15 значный в 16ричной системе... мож и таким путём бы пойти можно было, если он в реестр пишет ключ рабочий, но у менэ знаний таких нету( это если там не прикрыто это дело от крякеров ![]() Promix_17 пишет: Не могу не поделиться, моя первая, реально взломанная настоящая программа: 0x41D7FC правильнее в нашем случае наверное было бы, если бы вы рабочие серийники увидели ![]() ![]() |
|
Создано: 20 мая 2011 08:18 · Личное сообщение · #4 |
|
Создано: 21 мая 2011 01:10 · Поправил: anunak · Личное сообщение · #5 Promix_17 пишет: Странно, у меня после jmp прога продолжает установку... Дальше проверить не могу, а то очень много качать придётся... Ну и где-нибудь ещё тогда в самой игре заменить один переход и всё отлично запускаться будет. этот файл уже сделан, чтобы просто серийник в реестр загнать, качать не обязательно, смысл в том что, если ключ будет не правильный, то в игре будет защита fade разброс пуль неимоверный и по сети поиграть не получиться... а уж в самой игре как эту проверку отрубать это вообще дикий лес ![]() вот тут (после уже поколбасивания введённого серийника по регистрам) в ebp строка всего серийника начиная с этой команды 00402304 |. 83C5 01 ||ADD EBP,1 начинает медленно уменьшаться и там встречаются cmp ,мож это и есть проверка... и наверное он каким-то алгоритмом из строки всех символов высчитывает... либо после того 00416550 /$ 8A10 MOV DL,BYTE PTR DS:[EAX] тоже чё-то на проверку похоже... ![]() |
|
Создано: 21 мая 2011 13:52 · Личное сообщение · #6 Если игра по сети, то серийник наверняка на сервере проверяется. Поэтому в коде установки не вся проверка производится, наверное. А остальное всё уже на сервере. А чтоб в самой игре проверку убрать, ставь брейкпоинты на функцию считывания значения из реестра. Больше ничего сказать не могу... А вообще, легче с IDAPro + HEXRаys разбираться. ![]() |
|
Создано: 22 мая 2011 07:31 · Поправил: anunak · Личное сообщение · #7 Promix_17 пишет: Если игра по сети, то серийник наверняка на сервере проверяется. Поэтому в коде установки не вся проверка производится, наверное. А остальное всё уже на сервере. проверка вся они там id выдают и с одинаковыми ключами (с одинаковыми id) пишет ключ уже используется (а отключение проверки этой убрали с патчами) или с уже засвеченными ключами... вот мож как этот id изменить попробовать (какая функция за это дело отвечает?), ну и где про это читать непонятно только... ![]() Promix_17 пишет: А чтоб в самой игре проверку убрать, ставь брейкпоинты на функцию считывания значения из реестра. да там они такие идиоты, что одним jmp всё дело решиться... это уже крэк полноценный надо писать для игры... ![]() Promix_17 пишет: Больше ничего сказать не могу... спасибо и на том, что сказано это лучше, чем ничего :D хотя может знаете, какой-нить брутфорс есть для подбора вот к таким программам подобного типа? запустить чтобы пароль подбирался, мож когда-нибудь подберётся ![]() ![]() |
|
Создано: 23 мая 2011 09:55 · Поправил: ARCHANGEL · Личное сообщение · #8 Знаете, я вообще не люблю во все эти дела вмешиваться. Вот советует кто-то кому-то какой-то способ, и хорошо. Но тут сделаю, пожалуй, исключение. Promix_17 Вы пишете вещи, за которые надо бить по рукам. Я не хочу вас обидеть, но мы находимся на форуме для того, чтоб говорить людям правду. Итак, поехали. Какой, к чёрту jmp? Какой, нах, реестр? Ставим бряк на MessageBoxW, вводим левый серийник, прерываемся, раскручиваем стек. Находим место, где MFC-обёртки читают код из Edit-контроллов, далее идёт слияние этих кусков в единый серийник, причём все буквы о меняются автоматом на нули (0x30), а буквы I - на 1. Далее идёт процедура проверки, вот если она вернёт 1 - то инсталл попытается (только попытается) продолжиться. Всё, поиск занимает, примерно, минут 10 максимум. Если игра по сети, то серийник наверняка на сервере проверяется. ... А остальное всё уже на сервере. А чтоб в самой игре проверку убрать, ставь брейкпоинты на функцию считывания значения из реестра. Вообще чушь. Если серийник проверяется на сервере, то вы хоть боком прыгайте, но пропатчив свой клиент, проверку не уберёте. Сервер может получить инфу о серийнике, и на основе этого вернуть какое-то значение, но это значение чекается в клиенте, и клиент либо работает, либо нет. Поэтому проверка всё равно в клиенте. anunak пишет: хотя может знаете, какой-нить брутфорс есть для подбора вот к таким программам подобного типа? запустить чтобы пароль подбирался, мож когда-нибудь подберётся Забудьте эту идею. Люди столько не живут. от jmp тут к сожалению толку мало... Согласен, особенно если учесть, что переход этот безусловный. Наверное, имелось ввиду je/jne. Но неважно, не будем придираться к словам. Дело в том, что всё здесь не прям так элементарно, как вам хотелось бы. Серийники не лежат в открытом виде. Поэтому "подсмотреть" их не получится. Не могли бы вы кинуть ссылку для скачивания? Хотелось бы посмотреть именно ту версию, что и у вас. Может, что и решим с ключами. Ничего, если программа большая. Это как раз тот случай, когда до опредлённых пределов размер не имеет значения. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 24 мая 2011 01:22 · Поправил: anunak · Личное сообщение · #9 ARCHANGEL пишет: Находим место, где MFC-обёртки читают код из Edit-контроллов, далее идёт слияние этих кусков в единый серийник, причём все буквы о меняются автоматом на нули (0x30), а буквы I - на 1. Далее идёт процедура проверки, вот если она вернёт 1 - то инсталл попытается (только попытается) продолжиться. Всё, поиск занимает, примерно, минут 10 максимум. это вы уже просмотрели или предположили? а то вот тут по моему, какая-то проверка начинается (в перемешку с перегоном маленьких букв в большие вычитанием -20... или он там просто перегоном занимается подгружая строку от 1 до Z в EDX и по 4 знака для сравнения беря или он их берёт и сравнивает со знаком кода, который он из EBP по одному забирает) 004022E0 /$ 83EC 0C SUB ESP,0C чуть ниже 00402300 |> 0FBE75 00 |/MOVSX ESI,BYTE PTR SS:[EBP] и после теста, если ничего нету, то на Неверный код... в принципе, если это проверка я бы попробовал разобраться ![]() ![]() ARCHANGEL пишет: Дело в том, что всё здесь не прям так элементарно, как вам хотелось бы. в нете пишут, что эту игру ещё с первой части (2007г) взломать не могут, мож это и не возможно, но razor1911 как-то свой кейген написали, значит алгоритм вычислили, только он не рабочий, его, толи забанили уже, толи непонятно, как так, что в их генераторе всегда 1911 присутствует в конце, если в серийниках там числа разные... кейген ARCHANGEL пишет: Не могли бы вы кинуть ссылку для скачивания? Хотелось бы посмотреть именно ту версию, что и у вас. Может, что и решим с ключами. Ничего, если программа большая. Это как раз тот случай, когда до опредлённых пределов размер не имеет значения. у меня пиратка на диске купленная и повозиться там придётся с установкой последнего патча, но если вам захочется, то вот есть продолжение у игры "операция стрела" ![]() |
|
Создано: 24 мая 2011 10:07 · Поправил: ARCHANGEL · Личное сообщение · #10 anunak пишет: это вы уже просмотрели или предположили? Посмотрел, конечно. Если вам интересно, с какого места начинается проверка, то могу вам завтра точный адрес отписать (щас не могу - на работе). в нете пишут, что эту игру ещё с первой части (2007г) взломать не могут Смотря что понимается под словом "взломать". Кстати, не могли б ли вы ссылку кинуть на то, где вы это прочитали? Ладно, попытаюсь скачать по вашим ссылкам прогу, посмотрим, что из этого выйдет. 8 Гигов - да уж, загрузка займёт некоторое время. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 24 мая 2011 11:20 · Поправил: anunak · Личное сообщение · #11 ARCHANGEL пишет: Посмотрел, конечно. Если вам интересно, с какого места начинается проверка, то могу вам завтра точный адрес отписать (щас не могу - на работе). конечно интересно я за этим и интересуюсь ![]() ![]() ARCHANGEL пишет: Смотря что понимается под словом "взломать". Кстати, не могли б ли вы ссылку кинуть на то, где вы это прочитали? наверное генераторы ключей сделать или стабильную игру обеспечить по сети... прочитал тут Code:
Code:
ARCHANGEL пишет: Ладно, попытаюсь скачать по вашим ссылкам прогу, посмотрим, что из этого выйдет. ну, если ключ доставать из файлика 1 мегового, то нафига вам оное... наверняка и так дел хватает... ну я конечно не против ![]() ARCHANGEL пишет: 8 Гигов - да уж, загрузка займёт некоторое время. а без патчей даже соединять не будет так как там при игре по нету уже у всех версии обновлённые... ![]() |
|
Создано: 24 мая 2011 11:25 · Поправил: Nightshade · Личное сообщение · #12 http://www.xrel.to/game-nfo/306868/ARMA-II-Reinforcements-SKIDROW.html http://www.xrel.to/game/60720/ARMA-2-Operation-Arrowhead.html Какая там защита? Из нфо вроде секур Если там секур, то для установки можно использовать любой ключ. Для запуска можно его заинлайнить. Секур можно запускать и без ключа. Если присутствиет fade или кастом, то достаточно любого валидного даже забаненного ключа. Если нужна игра онлайн, то ключ проверяет сервак и тогда ключ нужен не забанненый и валидный. В игре у клиента обычно не все проверки ключа. Часть проверок идет на сервере и мы их не видим. После доп проверок идет норм игра или дисконнект. Так что бесполезно пытаться искать алго для игры по сети. ![]() |
|
Создано: 24 мая 2011 11:39 · Поправил: ARCHANGEL · Личное сообщение · #13 Если я правильно понял поставленную задачу, то всё звучит примерно так. 1. У нас есть игра, в инсталле которой проверяется ключ. 2. Если мы ввели ключ, который прошёл все проверки инсталла без патча самого инсталлятора, то такой ключ по умолчанию считается валидным. 3. Если потом с этого валидного ключа к серверу подключается куча народу, то такой ключ становится забаненым. 4. Суть состоит в том, чтоб отреверсить алгоритм генерации ключа и научиться генерить валидные ключи. 5. При высокой степени рандомизации таких ключей забанить всё множество ключей кейгена будет просто нельзя. Игра будет считаться успешно взломанной. Вот это и предстоит проверить. Теперь отвечая на вопрос, зачем мне фулл инсталлятор. Мне нужно получить орцепь успешной установки. Ни больше, ни меньше. Причём, теоретически, если повезёт, это можно сделать, имея на руках лишь инсталлятор без игры. Но с рабочим инсталлятором сделать это гораздо проще и надёжнее. В случае разброса пуль и прочей хрени можно попытаться её устранить, если есть сама игра. В случае подключения к интернету - тут только опытным путём - коннект либо есть, и тогда цель достигнута, либо нет, и нужно что-то делать. Короче, ничего обещать не могу - попробуем. Nightshade Как я понял из рассказа ТС, то раньше ключи из кейгена Разора подходили для он-лайн игры, пока их не забанили. Значит никаких дополнительных проверок сервер не производил. Просто стал палить их по последнему префиксу. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 24 мая 2011 12:00 · Личное сообщение · #14 да не проверяет сервер ничего там, по сети то рубают, а раньше можно было в настройках конфига сетевой игры прописать, чтобы дубликатный id не кикал, с последними патчами эту возможность убрали, с одинаковыми ключали не поиграть теперь... ARCHANGEL пишет: Если я правильно понял поставленную задачу, то всё звучит примерно так. 1. У нас есть игра, в инсталле которой проверяется ключ. 2. Если мы ввели ключ, который прошёл все проверки инсталла без патча самого инсталлятора, то такой ключ по умолчанию считается валидным. 3. Если потом с этого валидного ключа к серверу подключается куча народу, то такой ключ становится забаненым. 4. Суть состоит в том, чтоб отреверсить алгоритм генерации ключа и научиться генерить валидные ключи. 5. При высокой степени рандомизации таких ключей забанить всё множество ключей кейгена будет просто нельзя. Игра будет считаться успешно взломанной. всё так и есть))) ![]() ![]() |
|
Создано: 30 мая 2011 09:40 · Личное сообщение · #15 |
|
Создано: 31 мая 2011 04:17 · Личное сообщение · #16 ARCHANGEL пишет: W6N4-TRYLC-YK581-A8SD6-DS9G8 Попробуйте этот ключик. Интересует, как программа поведёт себя при попытки поиграть по сети (сам проверить это не могу). Если всё ок, то можно выпускать кейген в свет. вообще не запускается игра (хотя патч последний нормально встал) пишет бэт кей гив ин сетап... ![]() |
|
Создано: 31 мая 2011 09:40 · Личное сообщение · #17 |
|
Создано: 31 мая 2011 12:04 · Личное сообщение · #18 ARCHANGEL пишет: Т.е. устанавливается норм, но запускаться отказывается? да, установилась норм и даже патч встал норм, но игра сама не пошла, только заставка на русском мелькнула, так что вы с языком, он там по моему в первой части кода кодируется, угадали) ARCHANGEL пишет: А при использовании кейгена от Разор тоже такой эффект? с этим устанавливается и запускается, но по сети пишет неверный ключ и в самой игре другая защита fade включается разброс пуль и прочие глюки... ![]() |
|
Создано: 31 мая 2011 14:24 · Личное сообщение · #19 |
|
Создано: 31 мая 2011 14:43 · Личное сообщение · #20 ARCHANGEL пишет: А если без патчей - просто установить и попробовать играть? без патчей можно и в первую на пиратских ключах играть ![]() ![]() |
|
Создано: 01 июня 2011 09:47 · Поправил: ARCHANGEL · Личное сообщение · #21 anunak Ключик, который я постил выше - результат реверса проверки инсталлятора. Никаких угадываний там нет. 14 байт рандомизации, 15-й байт - рипнутый алго CRC, дальше блоками по пять байт крутим цикл и из каждого блока восстанавливаем по 8 цифробуков. Видимо, Nightshade был прав - на серваке врубается дополнительная проверка, которая при грамотной её реализации не может быть отключена на стороне клиента. Как мне кажется, если с этим ключиком не запустилось, значит тут два варианта - либо дополнительные проверки в клиенте, либо дополнительная удалённая проверка на сервере. Узнать, какому из двух вариантов соответствует действительность, легко. Отключите сеть и запустите игру, если запустится, значит это удалённая проверка, если нет - значит надо копать клиент. Сам я этого не могу проверить - как-то лень ещё и патчи эти качать. ...на пиратских ключах играть... Ну что вы - нет такого понятия - пиратский ключ. Это просто ключ, не проходящий все проверки ))) ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 09 июня 2011 08:44 · Личное сообщение · #22 ARCHANGEL пишет: Видимо, Nightshade был прав - на серваке врубается дополнительная проверка, которая при грамотной её реализации не может быть отключена на стороне клиента. есть такое дело, но это пол правды... ARCHANGEL пишет: Как мне кажется, если с этим ключиком не запустилось, значит тут два варианта а как вам вариант что они специально как-то сделали, чтобы простым путём невозможно было ключик узнать, значит, где-то там подвох может быть... потому что кейген от razor работает, но не через батлай (inet), тоесть только тогда, когда свой сервер вручную делать, но защита внутренняя включается разброс пуль в самой игре что не попасть никуда ![]() ![]() |
|
Создано: 09 июня 2011 10:28 · Личное сообщение · #23 |
|
Создано: 28 июня 2012 14:50 · Поправил: negoday · Личное сообщение · #24 Немного продолжу тему. Помогите кто чем сможет ![]() ![]() ![]() |
|
Создано: 28 июня 2012 16:05 · Личное сообщение · #25 Если в запросах игрушки запрещены, это не значит, что можно постить этот запрос в другие топики. Тем более когда своих действий 0. Бери и разбирайся, чо там не работает и чего не хватает. ![]() |
|
Создано: 28 июня 2012 18:21 · Поправил: negoday · Личное сообщение · #26 Ok, тогда следующий вопрос интересующимся данной веткой и желающим посодействовать ![]() Имеется вот такой код: Code:
В реестре имеется значение 16-тиричное HEX: Code:
Как понять, какая часть этого значения берётся из HEX? Я, конечно, извиняюсь за нубские вопросы ![]() ![]() |
|
Создано: 28 июня 2012 21:05 · Поправил: -=AkaBOSS=- · Личное сообщение · #27 negoday пишет: Как понять, какая часть этого значения берётся из HEX в приведенном тобой коде нет ни малейшего намёка на работу с ключом из реестра, поэтому понять что-либо сложно например, каким будет a3 при указанном ключе? условия понятны, но нужно проследить, откуда он берётся зы выложи сам модуль, чтоли также не помешала бы пара серийников: правильный/неправильный и на будущее - перед тем, как заливать файлы, архивируй их. ибо не у всех есть мегабитный канал ![]() |
|
Создано: 28 июня 2012 21:41 · Поправил: negoday · Личное сообщение · #28 -=AkaBOSS=-вот тут он есть Ещё есть инсталл (тут ![]() ![]() ![]() ![]() ![]() |
|
Создано: 11 июля 2012 20:27 · Личное сообщение · #29 Так, а теперь мне стало интересно, я как понял. Существует реально рабочий кейген, то есть для входа в игру, и даже для игры в одиночку. Но вот по интернету с ним не играется, ибо пишет инвалид сидикей. И напрашивается вопрос, это вообще возможно решить? Как кейген, связывается с идом? Как это вообще отследить? Или что происходит, почему на серверы не пускает? Ведь как написали выше, шанс 1 к 10000 что выпадет рабочий кей. Но ведь выпадает! Значит система есть! Кто поможет, где и как отслеживать? ![]() |
<< . 1 . 2 . |
![]() |
eXeL@B —› Вопросы новичков —› Не могу отследить проверку серийника |