Сейчас на форуме: asfa, bartolomeo (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Не могу отследить проверку серийника |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 03 апреля 2008 15:55 · Поправил: Модератор · Личное сообщение · #1 Прграмма с жестким серийником считывает его практически сразу после ввода. Сама программа, если ставить бряк на секцию код, постоянно останавливается если активно ее окно. То есть идут циклы. Много чего пробовал делать, но пока не удалось толком ничего. Даже смотрел в стеке какой функцие вызывается окно о неправильном серийнике. Оказалось из библиотеки USER32, хотя этой функции в списке нет, а также бряк на нее не ставится из самого кода проги. Если только перейти в модуль USER32 и там поставить бряк на определенный адрес. Также в стеке видел мой неправильный серийник, пробовал ставить бряк на этот адрес, но все что там происходило было уже после сравнения и вело к выводу сообщения о неправильном серийнике. Причем перед выходом окна о неправильном серийнике стои CALL и ведет не в библиотеку USER32. А если поставить бряк в самой библиотеке USER32, то адреса возврата в стеке нет. Как работает эта программа я не знаю. Что можно попробывать сделать, чтобы поймать момент считывания серийника ??? Если ставить bp на TRANSLATE MESSAGE не помогает. Пробовал и условные бряки ставить, но тоже не помогло особо. И еще. Сразу после ввода серийника в буфере памяти его нет. А это говорит о том, что когда я делаю окно программы неактивным, то она уже серийник как-то шифрует. И я в этом собственно убедился, когда посмотрел что она делает с введенным серийником сохраненным в стеке... ![]() |
|
Создано: 03 апреля 2008 16:21 · Личное сообщение · #2 |
|
Создано: 03 апреля 2008 16:28 · Личное сообщение · #3 |
|
Создано: 03 апреля 2008 16:37 · Личное сообщение · #4 Если не устраивает шпион и прога не пакована, и функции вызываются стандартным способом (то бишь прописаны в импорте) то можешь попробовать бряк на все функции. Search for -all intermodular calls. Тут можно поставить бряк на все функции. Затем убираешь явно лишние типа Enter/LeaveCriticalSection. Запускаешь прогу на исполнение, по пути убирая все сработавшия бряки. Когда наконец сможешь нажать кнопку "зарегить", то вылетешь на функции где считывается серийник, ну или рядом с ней. Метод, конечно, убогий, но работает )) ![]() |
|
Создано: 03 апреля 2008 16:39 · Личное сообщение · #5 |
|
Создано: 03 апреля 2008 16:50 · Поправил: MACKLIA · Личное сообщение · #6 jondo пишет: Даже смотрел в стеке какой функцие вызывается окно о неправильном серийнике. Оказалось из библиотеки USER32 Вот это открытие ,создавать подобные темы нужно в разделе новичков ,да ито там тебе не сильно помогут - если ты не можешь выложить прог. jondo пишет: хотя этой функции в списке нет, а также бряк на нее не ставится из самого кода проги jondo на какую именно функцию ты ставиш бряк ? ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 03 апреля 2008 17:33 · Личное сообщение · #7 |
|
Создано: 03 апреля 2008 20:36 · Личное сообщение · #8 Спасибо Wild_One за советы, но таких прог где они срабатывают скоро не будет вообще. Имхо. Если модератор мудрец ничего сказать не может думаю действительно не туда зашел. А скорее всего как мне кажется есть проги, взломать которые могут единицы. ********************************************************************* jondo пишет: хотя этой функции в списке нет, а также бряк на нее не ставится из самого кода проги jondo на какую именно функцию ты ставиш бряк ? ********************************************************************** MessageBoxA. Но после ее вызова нет адреса возврата. Но это все так мелочи. Мне бы какой-нибудь способ, как можно проследить момент, когда программа считывает мой ввод серийника. ![]() |
|
Создано: 03 апреля 2008 20:48 · Личное сообщение · #9 jondo Ты напиши нормально что за прога, ссылку на неё. А также как происходит считывание серийника. Есть кнопка или авто проверка при вводе? Начем написана прога? jondo пишет: Если модератор мудрец ничего сказать не может думаю действительно не туда зашел. На то что ты написал, действительно не кто не чего внятного и не ответит. ![]() |
|
Создано: 03 апреля 2008 21:07 · Личное сообщение · #10 |
|
Создано: 03 апреля 2008 22:35 · Личное сообщение · #11 |
|
Создано: 04 апреля 2008 09:10 · Личное сообщение · #12 jondo пишет: Если модератор мудрец ничего сказать не может думаю действительно не туда зашел. Циферки и ранги за ними для придурков сделаны. Ей Богу, я за то чтобы убрать данные о количестве постов глубоко в свойства участника, где им и место. Но это может сделать только Администратор. А модераторы, по своей обязанности, должны всего лишь следить за порядком на форуме. Например: - топики чайников должны быть в разделе новичков; - не должно быть тем с дебильными названиями вроде "Нужен совет" и т. п. Дальше буду просто удалять топики автора, если в названии нет никакой информации (читаем учебник информатики для младших классов). ----- Всем привет, я вернулся ![]() |
|
Создано: 04 апреля 2008 12:35 · Поправил: jondo · Личное сообщение · #13 TO Isaev. Если SoftAce не ставится из=за видеокарты, то че делать. Есть другие отладчики которые фокус с окна не снимают ? И почему интересно если поставить bp на доступ к памяти во время запуска программы, то айс не будет реагировать на циклы. Что значит понятие - фокус окна. Если под этим подразумеваются любые функции и циклы при бряке на доступ к памяти которые срабатывают сами по себе то это одно. А если это только какая-нибудь одна функция, то это мне не поможет. ![]() |
|
Создано: 04 апреля 2008 12:57 · Поправил: Milfhunter · Личное сообщение · #14 |
|
Создано: 04 апреля 2008 14:55 · Поправил: jondo · Личное сообщение · #15 TO Milfhunter. Сам удивляюсь, но почему-то этот бряк не работает. Хотя когда ставиш бряк на GetWimdowTextA то после ввода серийника ищу его значить в памяти и его там почему-то нет. Удивительно. А потом срабатывает бряк на GetWimdowTextA после нажатия кнопки OK. В строке буфер, если перейти в дамп, моего серийника нет. И в памяти его нет. А зачем тогда срабатывает GetWimdowTextA. Сначала было непонятно. А потом после того, как выскакивает окно о непр. серийнике, то в памяти по трем адресам появляется мой серийник. А потом когда второй раз ставишь бряк на GetWimdowTextA то в буфере оказывается серийник введенный в прошлый раз. Вот такой вот геморрой. Отсюды вывод, программа сразу считывает серийник и сразу его на ходу и проверяет. Вот собственно как поймать этот момент я не знаю. Жду умных мыслей. И поясню также, что бряк на TranslateMessage не приносит удовлетворения. ![]() |
|
Создано: 04 апреля 2008 16:14 · Личное сообщение · #16 |
|
Создано: 04 апреля 2008 22:47 · Личное сообщение · #17 |
|
Создано: 05 апреля 2008 12:45 · Личное сообщение · #18 |
|
Создано: 06 апреля 2008 23:38 · Личное сообщение · #19 |
|
Создано: 07 апреля 2008 21:42 · Личное сообщение · #20 |
|
Создано: 19 мая 2011 05:18 · Поправил: anunak · Личное сообщение · #21 Archer пишет: Ищите не ключ, стало быть, а сообщение о неверном ключе. а если это сообщение вызывается из одного места (например самое первое типа "Вы хотите установить..." и "Вы ввели неверный код" причём их в All referenced text strings нету) надо искать причину и то место в коде, где происходит некие изменения? а как в Olly предыдущую операцию просмотреть, там можно назад пойти по коду или только самому просматривать? и может ли серийный номер в процессе ввода (по функции GetWindowTextW) уже сразу проверяться при вводе одного символа? и что означает например bp на GetWindowTextW если поставить, то остановка происходит при вводе каждого знака в первые 4 поля (там их 5 всего), а в последнем такой остановки не происходит? ...например вывод строки называется по англицки "bag_key итд" (видать он там русский просто подгружает где-то в этой функции, чтобы по русски оно писало, учил ассемблер по Калашниковe лет 5 назад, только под дос врубился, под win не бумбум) её нашёл значит от появления окна для ввода до этого вывода, где-то проверка, её надо найти... но там чё-то он сразу гонять начинает по регистрам, как вводишь первый знак и, если всё сразу ввести и bp поставить то тоже, то четыре знака поколбасит, то побольше, то вообще всё, то начало и конец... и может ли быть провека номера, код проверки, в модуле например User32? или проверка, только в самом коде где-то, если никаких модулей нету проверок строк? ![]() |
|
Создано: 19 мая 2011 08:28 · Личное сообщение · #22 |
|
Создано: 19 мая 2011 09:35 · Поправил: anunak · Личное сообщение · #23 PE_Kill пишет: Что то по описанию похоже на установщик программы, там обычно скомпилированные скрипты используются или внешние библиотеки. ну это установщик игры, который просит серийник, чтобы установиться... PE_Kill пишет: В системных библиотеках не может быть проверки серийника, на то они и системные. а сама программа на время в библиотеку такую свой код добавить не может или его изменить? чтобы от туда из библиотеки на проверку переходило и назад... *** а такое на проверку похоже в EBP ascii строка с полным серийником, который вводился и если по f8 шагать, то будет медленно эта строка уменьшаться, а в EAX ascii строка подгружается, где все числа и буквы от "1...Z" и в EDX начиная с "4...Z" только это тогда геморройная проверка такая, что он из всех символов используя, какой-то алгоритм вычисления номеров нормальных числами их сравнивает с самими номерами ![]() ![]() |
|
Создано: 19 мая 2011 14:03 · Личное сообщение · #24 |
|
Создано: 19 мая 2011 14:31 · Личное сообщение · #25 |
|
Создано: 19 мая 2011 14:40 · Личное сообщение · #26 |
|
Создано: 19 мая 2011 15:25 · Личное сообщение · #27 прогу выложить? это мы могём ![]() ![]() ![]() |
|
Создано: 19 мая 2011 18:11 · Личное сообщение · #28 |
|
Создано: 19 мая 2011 19:40 · Поправил: Promix_17 · Личное сообщение · #29 Всего одна команда: bpx GetWindowTextW Попадаешь в цикл MFC, который автоматически изменяет значения переменных в программе (это возникает при связывании элемента управления с требуемой программистом переменной), находишь куда попадает требуемое значение и находишь проверку серийника брейкпоинтом на обращение к памяти. ![]() |
|
Создано: 19 мая 2011 20:12 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Не могу отследить проверку серийника |