eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: ajax (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Крэки, обсуждения —› Взлом пользовательской контрольной суммы
Посл.ответ Сообщение

Ранг: 2.1 (гость)
Статус: Участник

Создано: 24 июля 2009 18:03 New!
Цитата · Личное сообщение · #1

Господа!

Имеется программа. Программа использует логин на сервер, после успешного логина идет обычная работа, после неуспешного вываливается в еррор.
Процесс активации необходимо разложить по полочкам - для создания своего логин-сервера для данной программы (не разово взломать программу, а именно разложить авторизацию по полочкам).
Программа написана на VisualC и активно юзает msvcrt80.dll

Авторизация ПОЧТИ разложена, вся. Нужна помощь прогрессивного тутошнего сообщества - у меня затык именно на последнем, финальном этапе процесса (ну, это уж как водится). Итак, авторизация программы идет в такой последовательности:
1. Берется показание сист.таймера (GetTimer)
2. Таймером сидируется генератор случ.чисел (msvcrt.srand() )
3. Генерируется рандом-число (msvcrt.rand() ).
4. В памяти создается строка для закидывания на сервер (используется несколько параметров - юзернейм итд). Все данные в строке - каждый раз постоянные, КРОМЕ рандомного числа.
5. По определенному алгоритму вычисляется контрольная сумма от этой строки. Ее длина - 8 байт. Запоминается. Так как рандом-число всегда разное - то и crc всегда разный.
6. Строка отправляется на сервер.
7. В ответ на эту строку сервер присылает пакет данных, у которого помимо прочих данных в хвосте записана ответная crc на ранее принятый им пакет. Данные выпарсиваются и юзаются в работе далее, а вот эта вот серверная crc просто тупо построчно сравнивается с той, "правильной", которая была ранее вычислена самим клиентом (см.п.5 выше). Если "то что прислал сервер" совпало с "тем что должно быть" по мнению клиента (все 8 байт в обоих строках совпали) - то логин считается пройденным успешно.

Поставлены бряки, процедура вычисления "того что должно быть" от введенной строки - вычислена и выдрана к себе, но вот дальше - у меня затык, и я прошу помощи у опытных крякеров. Дело в том, что процедура имеет минимальную кодовую обвязку в своей шапке, а далее идет тупо МАССА вычислений в коде, безо всяких ветвлений и проверок - код просто тупо исполняется от начала и до конца, и в хвосте возвращает нужные мне 8 байт на строку, скормленную ему в начале.
Вопрос в том, что я прошу помощи в переводе этой массы вычислений в высокоуровневый язык (идеально - в перл или пхп, на базе коих и сделан свой сервер). ИДА по паттернам не сказала ничего вменяемого на данный код - это, скорее всего, самописный блок подсчета CRC. Максимум что смогла ИДА - это дать мне помимо АСМа еще и псевдо-C - но код такой что лось ногу сломит, хотя его и меньше асмового....

Прошу у гуру посмотреть на эту процедурку - может, кто-то видел что-то подобное? На что это вообще похоже? Я подозреваю, что это ВОЗМОЖНО какая-то стандартная процедура, просто ИДА ее дизассемблировала до кучи вместе со всем остальным, а в сорце она возможно пишется-то одной строчкой, типа result=MD5(stroka), и дело с концом....Все нужное прилагаю, в архиве:

1. Код всей процедуры в асме (ида)
2. Код всей процедуры в псевдо-С (ида+HexRays)
3. график шапки процедуры в наглядном виде (ида)
4. пример входной строки (выход с кода - ВСЕГДА 8 байт бинари, семпла не прилагаю за ненадобностью).

С удовольствием отвечу на дополнительные и наводящие вопросы. Очень хочется разобраться и вменяемо повторить эту процедуру - с некорректной crc в ответном пакете сервера клиент не залогинится.....Задача стоит ТОЛЬКО в повторении алгоритма перлом\пхп...ХЕЛП МИ!!!!!!

{ Атач доступен только для участников форума } - subroutine.rar


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 24 июля 2009 18:54 New!
Цитата · Личное сообщение · #2

собери dll и используй её в качестве модуля расширения для php, тогда не придётся морочиться с переводом листинга на php

Ранг: 2.1 (гость)
Статус: Участник

Создано: 24 июля 2009 19:02 New!
Цитата · Личное сообщение · #3

собери dll и используй её в качестве модуля расширения для php, тогда не придётся морочиться с переводом листинга на php
Ога. Я уже думал над этим, но хотелось бы изящности и "цивилизованных методов"....

Все же что-то мне подсказывает, что там ОБЫЧНАЯ функция, ибо смысла писать супер-пупер защиты там нету (прога попсовая и фришная). Логин нужен скорее всего для отсева ботов и циничного левого скачивания контента любой качалкой - прологиненному клиенту выдается сессия для работы, а без сессии - не пущаетЪ)... Вот, хотелось бы именно ПОНЯТЬ оный до сорцев, и воплотить у себя.
ДЛЛка - это совсем уж неправославно, и крайний метод имхо...

Ранг: 2.1 (гость)
Статус: Участник

Создано: 24 июля 2009 21:57 New!
Цитата · Личное сообщение · #4

Да, кстати:
1. Прога от 2005го года, так что чего-то особо нового и изощренного от алгоритмов ожидать имхо не следует
2. Совсем рядом с вышеуказанным кодом (в рамках формирования строки перед отправкой ее на сервер) прога активнейше юзает Base64.Encode. Но нужный мне CRC не похож на Base64 - во-первых CRC всегда 8 байт, во-вторых оные - всегда бинарь, а не текст, и в третьих - при изменении хотя бы одного байта в начальной строке CRC меняется кардинально весь, а не в какой-то своей части как это было бы в случае Base64.


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 24 июля 2009 22:15 New!
Цитата · Личное сообщение · #5

parasss
Есть кнопка Правка! Не стоит плодить посты подряд.

прогу выложи - процесс быстрее пойдёт

Ранг: 2.1 (гость)
Статус: Участник

Создано: 24 июля 2009 22:33 New!
Цитата · Личное сообщение · #6

Jupiter пишет:
прогу выложи - процесс быстрее пойдёт

А смысл? Она во-первых - здоровенная по трафу, во-вторых - основной вопрос не в проге уже, а в алгоритме подсчета CRC. Хакать в проге уже ничего не надо, саму прогу я давно пропатчил, чтобы она уходила в успешный логин по всем НЕПРАВИЛЬНЫМ пакетам с сервера (JZ-->JNZ, дело замены одного байта), кои заведомо неправильные пакеты я Апачем и отдаю, с нулями вместо CRC....Всё работает, место патча - верное, и гнездо у логина - именно в этом месте.

Но сейчас надо именно правильные пакеты со своего сервера - хочется именно правильный сервак в локалке, чтобы не искать и не париться с патчами каждой новой вышедшей версии, а раз посидеть и сделать правильную отдачу на все последующие версии (ну, пока разрабы не прочухают и не сменят).
И вопрос оных правильных пакетов - всего-то алгоритм определить, кой в первом посте и приаттачен...

Если надо какие-то процедурки, регистры\стек на входе\выходе - так только попросите ж, всё дам..... Моего умишка перевести ЭТО в высокоуровневое - уже не хватает, к сожалению, о чем и сабж...Да еще С\C++ не владею абсолютно, даже понятия не имею - тот псевдо-С с ИДА - он рабочий, или проще сразу выкинуть....

с АСМом как раз все понятно (насколько у меня хватило усидчивости), но эти 15К строк я буду переводить лапками весь остаток своей жизни.........

Ранг: 13.7 (новичок)
Статус: Участник

Создано: 24 июля 2009 23:07 · Поправил: Nowar New!
Цитата · Личное сообщение · #7

Jupiter же написал - выложи прогу
Иначе интерфейс изучения проги какой-то неудобный получается, gdb напоминает:
parasss: Если надо какие-то процедурки, регистры\стек на входе\выходе - так только попросите ж, всё дам.....


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 24 июля 2009 23:31 New!
Цитата · Личное сообщение · #8

parasss пишет:
А смысл?


смысл - посмотреть самому.


parasss пишет:
здоровенная по трафу


если пара сотен мегов - то не проблема
но обычно проге для минимальной работы столько не нужно


parasss пишет:
основной вопрос не в проге уже, а в алгоритме подсчета CRC


это понятно и с этим у меня непонимания не возникало


parasss пишет:
пока разрабы не прочухают и не сменят


это спустя 4 года то?


parasss пишет:
Если надо какие-то процедурки, регистры\стек на входе\выходе - так только попросите ж, всё дам


надо прогу полностью. не надо под дурачка работать! не хочешь выкладывать прогу - так и скажи, не нужно под всякими предлогами отмазываться!


parasss пишет:
но эти 15К строк я буду переводить лапками весь остаток своей жизни


там большая часть кода прекрасно сворачивается макросами

Ранг: 2.1 (гость)
Статус: Участник

Создано: 25 июля 2009 08:11 · Поправил: parasss New!
Цитата · Личное сообщение · #9

если пара сотен мегов - то не проблема
ДВДюк, в сетапе, 3.2Гб, 8 файлов вида setup.exe, data.01, data.02 итд.
Тебе может и не проблема - а у меня исходящий траф 100мб на МЕСЯЦ, после выюзывания коего не коннектится даже аська со своими скромными запросами к инету. 3.2Гб - это 32 месяца...((((

это спустя 4 года то?
Новые версии выходят и присылаются (на дисках) постоянно, кои и ломать уже устал. Последняя пришла 2 недели назад.
Препарируемая именно в данном конкретном случае - от 2005 года, одна из первых доступных мне версий. Она банально быстрее ворочается на моем компе, и еще\уже проходит логин на родном сервере и полностью работоспособна в рамках функционала 2005го года -> отлаживать проще.

надо прогу полностью. не надо под дурачка работать! не хочешь выкладывать прогу - так и скажи, не нужно под всякими предлогами отмазываться!
Хм. Я разве дал повод для подобных фамильярностей?

Прога называется TravFlex Online (http://www.11infotech.com/travel-solution/travflex.php), клиент бесплатный и рассылается в виде апдейтов всем партнерам на дисках, а вот за установку локального сервера (где логин и обычный SQL-базовод) дерут совершенно невменяемую денюжку (порядка 20.000$ разово), причем техники приезжают ставить это все лично и клиенту на руки ничего не дают, кроме как установленного сервера и UID\pass на каждого уполномоченного работника. Ну или подписать с ними контракт и юзать ихний сервер в ихней шарашке удаленно (примерно десятая часть от вышеуказанной суммы в год).
Физического доступа к родному серверу у меня нет - снять имидж с диска не предлагать.

там большая часть кода прекрасно сворачивается макросами
Оппа. А подробнее, плз?


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 26 июля 2009 00:10 New!
Цитата · Личное сообщение · #10

parasss пишет:
ДВДюк, в сетапе, 3.2Гб



Jupiter пишет:
обычно проге для минимальной работы столько не нужно


я думаю, что исполняемый файл поменьше весит.



parasss пишет:
Хм. Я разве дал повод для подобных фамильярностей?


обрати внимание: exe-шник проги ты так и не выложил
я скажу так: хотел бы выложить файл - давно бы выложил. когда речь идёт от проге за 20 килобаксов, смешно слышать про траф в 100 мегов на месяц

предлагаю совсем уж простой вариант: выложи idb (IDA Database)


теперь про макросы.

смотри код процедуры sub_100012D0 (я так понимаю, этот код в dll)

лучше всего смотреть этот код в IDA
выделяешь регистр, IDA подсвечивает все такие же регистры - ты можешь явно углядеть одинаковые блоки
массив - от 0 до 0FFh (от 0 до 255), всего 256 (100h) элементов

набор команд очень мал: mov, not, xor, and, imul, sub

пример блока:
mov reg8_A,[reg32+const1]
mov reg8_B,[reg32+const2]
add reg8_B,reg8_A
mov [reg32+const2],reg8_B

его можно просто выразить через макрос
в константах разных блоков есть опеределённые зависимости, я бы даже сказал последовательности

Ранг: 2.1 (гость)
Статус: Участник

Создано: 26 июля 2009 18:49 · Поправил: parasss New!
Цитата · Личное сообщение · #11

речь идёт от проге за 20 килобаксов
Прога бесплатна. Платен свой собственный выделенный сервер к ней, кой сейчас и пытаемся создать своими силами. Дело в 8и байтах.....

выложи idb (IDA Database)
Блин. Так дал же нужный кусок листинга именно с нее. Весь-то зачем? Чем данный кусок не устраивает? Перевести в высокоуровневое надо его, и только его.

Весь idb данной дллки (178 метров) дать пока не в состоянии по техническим причинам - см.выше про 100 метров\мес, и про конец месяца на календаре. Возможно, в начале след.месяца админа уломаю выложить, или по GPRS буду уродоваться...

Да, кстати - кусок этот не в основном exe, а в одной из дллок. Выложить просто экзешник - ничего не даст, он еще половину пакета к себе захочет при запуске прежде чем начнет запускаться...

выделяешь регистр, IDA подсвечивает все такие же регистры - ты можешь явно углядеть одинаковые блоки массив - от 0 до 0FFh (от 0 до 255), всего 256 (100h) элементов
набор команд очень мал: mov, not, xor, and, imul, sub
в константах разных блоков есть опеределённые зависимости, я бы даже сказал последовательности

Эт-то понятно, что что там циклический либо блоковый алгоритм - видно сразу невооруженным взглядом.
Непонятно, как ЭТО перевести в нужный мне perl\php......

Кстати, такой вопрос: пока суть да дело - хотелось бы попробовать прогнать логин через ДЛЛку. Теста ради, так сказать. Пожалуйста, пни в сторону линька, где написано как приспособить данный код в свою дллку? То есть, тупо скомпилить этот код (как он есть) внутрь ДЛЛки я еще смогу, но насколько я понимаю - придется же еще озаботиться приемом нужной строки от обработчика php\perl в этот алгоритм, а потом выдачей результата с алгоритма - опять в обработчик. То есть, я смогу тупо сделать функцию в ДЛЛ, например, "CalculateCRC" (с данным кодом как он есть) я смогу, и в пхп-скрипте буду вызывать CalculateCRC(string) - тоже смогу...но вот как данный код получит эту строку - я не догадываюсь.... В оригинале коду через стек передается только оффсет на начало строки, и ее длину. Как оно окажется в стеке при работе через пхп+ДЛЛ - я не представляю...Пни, плиз, в сторону пошагового мануала или тутора...

Спасибо.

PS: сорри за ламерские вопросы - я изначально не программер (тем более не высокоуровневый виндявый), но решить вопрос таки надо.


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 27 июля 2009 01:14 New!
Цитата · Личное сообщение · #12

по поводу написания расширений для PHP можешь поискать по запросу "Extending PHP", а также "Zend API"

пример расширений (с сорсами) можешь найти здесь: PECL

Ранг: 2.1 (гость)
Статус: Участник

Создано: 27 июля 2009 21:28 New!
Цитата · Личное сообщение · #13

пример расширений (с сорсами) можешь найти
Пробраузил кучу пакетов (Math, Authentication, Encryption...) - но к сожалению не нашел ни одного примера с АСМом.
Разве что извратиться и делать на С с асмовым инлайном......дак я сями не владею вообще, даже на уровне "Hello World", блин.


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 28 июля 2009 07:58 New!
Цитата · Личное сообщение · #14

естессно модуль будет на Си с подключённым lib, скомпиленным masm'ом


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 28 июля 2009 10:16 New!
Цитата · Личное сообщение · #15

скомпиленная дллка, ф-ция PacketCRC принимает 3 параметра, конвенция вызовов - как в оригинале
нужны данные вызывающей ф-ции, которая в твоём случае - sub_1002B9B0

поэтому я и просил тебя выложить больше данных, т.к. процесс пошёл бы быстрее

{ Атач доступен только для участников форума } - TravFlex.PacketCRC.Dll.v0.02.rar

Ранг: 2.1 (гость)
Статус: Участник

Создано: 28 июля 2009 21:35 New!
Цитата · Личное сообщение · #16

естессно модуль будет на Си с подключённым lib, скомпиленным masm'ом
Ммда. Такие финты ушами уже не по моим мозгам, к сожалению...

выложить больше данных, т.к. процесс пошёл бы быстрее
Отправил запрошенное. Спасибо.

Ранг: 2.1 (гость)
Статус: Участник

Создано: 29 июля 2009 11:03 New!
Цитата · Личное сообщение · #17

скомпиленная дллка, ф-ция PacketCRC принимает 3 параметра
К сожалению, php стандартным образом подключения расширений - оную не принимает (при старте php, еще до исполнения каких-либо пользовательских скриптов - еррорит):
-------------------
Y:\usr\local\php5>php.exe
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'PacketCRC.dll' in Unknown on line 0
-------------------

В аттаче - пример стандартного расширения php (шло в комплекте с ним), если это поможет разобраться...

{ Атач доступен только для участников форума } - php_pdo_mysql.rar


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 29 июля 2009 14:40 New!
Цитата · Личное сообщение · #18

дык это не расширение пхп, а обычная длл
до того как интергрировать её в расширение, нужно добиться работы ф-ции получения CRC

Ранг: 2.1 (гость)
Статус: Участник

Создано: 29 июля 2009 15:35 New!
Цитата · Личное сообщение · #19

дык это не расширение пхп, а обычная длл
А....а как мне ее тестировать? Есть пхп, перл, асм.


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 29 июля 2009 15:53 New!
Цитата · Личное сообщение · #20

parasss пишет:
А....а как мне ее тестировать?


ты до сих пор не понял?

выложенной тобой инфы не достаточно!
я собрал длл на основе твоего дизасма
если бы этого было достаточно, то при передаче 3-х параметров (каких - хз), ф-ция возвращала бы нужные данные

повторяю снова и снова:
то, что ты не хочешь или не можешь выложить dll, приводит только к тому, что я вынужден смотреть всё фактически всплепую, додумывая, что та или иная ф-ция может возвращать

Ранг: 2.1 (гость)
Статус: Участник

Создано: 29 июля 2009 18:57 · Поправил: parasss New!
Цитата · Личное сообщение · #21

я собрал длл на основе твоего дизасма
Вот то, что ты выложил - можно ли уже как-то куда-то применить\потестить, имея при себе пхп\перл\асм и нулевые знания в Си? Может, оно УЖЕ работает - а мужики-то и не знают...?

я вынужден смотреть всё фактически всплепую
Я же отправил всё запрошенное по пунктам, мылом. Если что-то еще надо - озвучь, плз.

КРОМЕ больших файлов - ну НЕТУ технической возможности пока что большое выкладывать, ну правила тут такие - траф юзать только по работе, иначе потом связи не будет - а работу спросят, да еще и логи поднимут - куда траф дел... на крякерские форумы, ага...(((((( Мелкое что (в сумме) - да хоть 5 раз на дню.... Откуда я знал что для разборки вся эта куча файлА понадобится, если нужно было только 140Кб работающего кода перевести.... Не обижайся, лучше скажи конкретно, что надо.


Ранг: 582.8 (!)
Статус: Модератор
Research & Development

Создано: 29 июля 2009 19:17 New!
Цитата · Личное сообщение · #22

parasss
это длл, скомпиленная из тех исходников, что ты присылал
она не является расширением пхп

проблема в том, что ты не хочешь присылать .idb
и мне приходится просить тебя присылать куски ф-ций, которые мне не видны

в общем, мне нужны все ф-ции, которые вызывает sub_1002B9B0
(sub_1004EDF0 sub_1004EC70 sub_1004ED80 и связанные с ними)

так же мне нужно определить НАЧАЛЬНУЮ ф-цию, в которую передаются данные для подписи. поскольку idb/dll ты давать не намерен, то тебе придётся сделать это самому

мне нужна ф-ция, которая однозначно принимает пакет и считает сумму
также мне нужны однозначные данные этой ф-ции (вход - выход)

Ранг: 2.1 (гость)
Статус: Участник

Создано: 30 июля 2009 07:59 · Поправил: parasss New!
Цитата · Личное сообщение · #23

она не является расширением пхп
Я понял. Выше я спрашивал уже не про пхп, а про "вообще". Вот то, что ты приаттачил - можно ли уже как-то куда-то применить\потестить? Не обязательно с пхп. Ведь не зря же ты ее приаттачил - мне с ней надо что-то делать, насколько я понимаю?

в общем, мне нужны все ф-ции, которые вызывает sub_1002B9B0(sub_1004EDF0 sub_1004EC70 sub_1004ED80 и связанные с ними)
Да не вопрос. Почта.

так же мне нужно определить НАЧАЛЬНУЮ ф-цию, в которую передаются данные для подписи
А зачем? Строка, приходящая на вход алгоритму (вот тому, который в топе прицеплен) - мне известна до байта. Я смогу ее сформировать из посылаемых клиентом данных в любое время (благо что и формировать-то ничего не надо особо - это данные из octet-stream клиента при логине, добитые нулями до кратности 8ке). Нет никакой нужды трейсить и отрабатывать эту строку асмом - я ее прекрасно получу от клиента и отработаю тем же пхп, и подам из переменной на вход PacketCRC(). Потом получу return из PacketCRC() в виде 8и байт crc, дооформлю строку ответа этой контрольной суммой (средствами пхп) и вывалю ответ клиенту. Трейсить в вышележащие процедуры и разбирать всю полученную от клиента строку средствами асма нет нужды, имхо - асм нужен только для расчета crc от поданной на его вход строки (какой бы она ни была, хоть цитата из Пушкина...). Сформировать же эту строку в правильном виде - это уже задача пхп, и эта задача у меня уже выполнена. Могу привести множество примеров валидных строк на входе алгоритма, если нужно.

мне нужна ф-ция, которая однозначно принимает пакет и считает сумму
sub_10024300
На входе - строка, пример:
---------
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 F2 AF 83 C7 CA B6 10 C4 6E 62 00 00 8D 52 C3
77 00 00 00 00 00 00 00
---------
(40 байт, строка в хвосте добита 7ю нулями до кратности 8ке и подана на вход sub_10024300).

Эта строка для целей тестирования у меня ВСЕГДА постоянна (в клиенте юзаются неизменные и верные логин\пассворд, где строка выше - это тип_логина(1 байт - хол.старт клиента, полный логин)+UID(16 байт, пустой логин=тестовый вход)+Key(8 байт, пароль "testtest" вбит)+(rand(srand(time))-8 байт, меняю ручками чтобы всегда были постоянные при входе в процедуру)+7 нулей для кратности=40 байт. Больше клиентом в рамках логин-процесса не передается ничего.

Выход от этой строки в какой-то конкретный логин:
---------
AC CA D8 8E 8D 4A C7 7C
---------
(это CRC, которая мне и нужна). По этой crc клиент на тот момент и залогинился.

При следующей подаче ЭТОЙ ЖЕ строки на вход ЭТОЙ ЖЕ функции - CRC на выходе будет другим, но и клиент по этой другой crc тоже пройдет авторизацию на тот момент времени и опять залогинится успешно, ибо строка для проверки пришедшей этой другой crc в клиенте тоже будет другой, и обе строки таки опять сойдутся.
"Время жизни" одного crc (полученного значения на выходе, по которому клиент все еще сможет авторизоваться) - это что-то около 1 минуты. То есть, если клиент отправит запрос логина на сервер и будет ждать ответа, а я ответ сервера задержу на прокси на время t=<~60сек, а потом отдам - то клиент савторизуется успешно. Если же я задержу ответ на t=>~60сек - то клиент уже НЕ савторизуется, несмотря на то что в него CRC пришла верная, от родного сервера. Причина - при проверке пришедшей crc в клиенте на то время получится уже другая строка crc для проверки, коя и не сойдется с принятой. Вывод: crc от неизменной строки будет разным каждую конкретную минуту?

Я не знаю почему выдаются разные значения - в этом и заключается вопрос этой темы, собссно. Подозреваю, что где-то подмешивается time() - благо что значение time() клиент вычисляет заранее, и оно есть в стеке на момент входа в процедуру просчета crc. Но вот используется ли оно там - я не знаю.

Если ты заметил вызов каких-то дополнительных параметров внутри функции, которые я тебе еще не давал по мылу - скажи, предоставлю. Надо 10 снимков стека и регистров при 10и разных проходах от неизменной входной строки - скажи, будут. Надо 20 - скажи, будут. Они мелкие, какие-то килобайты - мне нет никакой проблемы их предоставлять хоть 10 раз на дню.
 eXeL@B —› Крэки, обсуждения —› Взлом пользовательской контрольной суммы

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS