Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых) |
eXeL@B —› Основной форум —› Генерация случайного числа |
Посл.ответ | Сообщение |
|
Создано: 06 декабря 2007 17:56 · Личное сообщение · #1 Есть программа в защите которой используется генерация случайного числа. Пробую сделать так чтобы программа генерила одно и тоже число (8 байт) каждый раз: 1)В реестровую ветку Microsoft\Cryptography\RNG помещаю одинаковые данные.(программа при запуске её читает и пишет в нее новое значение) 2) программой TRIAL FREEZER замораживаю для нее время чтобы она думала что запускается в один и тот-же момент. После этого програмно запускаю и сохраняю сгенерированое число (сделал 200) раз и она каждый раз герегила разное число - в результатах байты распределяются равномерно(от 0 до FF) с нормальным для небольшой выборки шумом. Вопрос: как ещё программа может генерировать случайное число? Навыками отладки в ассемблере не обладаю поэтому в отладчике прогнать немогу. Смотрел через AIP монитор вроде стандартная виндовая функция генерации случайного числа не выполняется(возможно криво смотрел). |
|
Создано: 06 декабря 2007 18:52 · Поправил: LexxCracker · Личное сообщение · #2 Вариантов поистине тьма... 1. GetTickCount() 2. rdtsc 3. Раздичные манимпуляции с координатами курсора мышки, цветами пикселей монитора, работа с объемами физической памяти и пр. Без отладчика реестр в данном случае тебе не помощник. Куда проще освоить отладчик, найти место, откуда берется случайное число и пропатчить так, чтобы содержимое было всегда отдно и тоже. |
|
Создано: 06 декабря 2007 19:25 · Личное сообщение · #3 LexxCracker пишет: Вариантов поистине тьма... Полностью согласен! ekap, разобраться может быть довольно сложно... А почему, собственно, тебе нужно ekap пишет: сделать так чтобы программа генерила одно и тоже число (8 байт) каждый раз ? Если пытаешься зарегить, то не проще ли будет сделать патч? Или тебе именно интересна сама реализация алгоритма? ----- Программист SkyNet |
|
Создано: 06 декабря 2007 20:04 · Личное сообщение · #4 |
|
Создано: 06 декабря 2007 20:15 · Личное сообщение · #5 LexxCracker пишет: 1. GetTickCount() - да, об этом я не подумал возможно TRIAL FREEZER его не замораживает. 2. rdtsc 3. Раздичные манимпуляции с координатами курсора мышки, цветами пикселей монитора, работа с объемами физической памяти и пр. rdtsc - маловероятно но всёже попробую посмотреть а как в отладчике выглядит асемблерная команда обращения к нему? попробую посмотреть... кообдинаты мыши и цвета пикселей монитроа во время моих проверок не менялись, обем физической памяти тоже вроде не менялся я припомощи самописанной программы частично загружал программу жертву считывал сгенерированый ключ закрывал и так по кругу 200 раз без моего участия. LexxCracker пишет: Куда проще освоить отладчик, найти место, откуда берется случайное число и пропатчить так, чтобы содержимое было всегда отдно и тоже. Пробовал не получилось =) т.к. не знаю асемблера и попытки разобратся в нем никчему не привели. FrenFolio пишет: А почему, собственно, тебе нужно ekap пишет: сделать так чтобы программа генерила одно и тоже число (8 байт) каждый раз ? Потому-что мне показалось это самым реальным способом для меня сломать достаточно хорошо защищенную программу (помоимо своей защиты ещё запокована аспротектом) как я уже сказал без знания команд асемблера. |
|
Создано: 06 декабря 2007 20:20 · Личное сообщение · #6 Jupiter пишет: Скорее всего вызывается CryptGenRandom, которая не является частью программы, а является частью системы и твой фризер на неё не распространяется, поэтому ты и наблюдал постоянное изменение значений. её обращение ведь должен отлавливать API монитор... а я этого не увидел хотя запись в Cryptography\RNG говорит что используется виндовая функция CryptGenRandom ... завтра попробую написать тестовую программу и посмотреть увидит ли АПИ монитор её использование... и заодно на GetTickCount посмотрю - замораживает фризер или нет... |
|
Создано: 07 декабря 2007 10:04 · Личное сообщение · #7 |
|
Создано: 07 декабря 2007 11:09 · Личное сообщение · #8 |
|
Создано: 07 декабря 2007 11:25 · Поправил: ekap · Личное сообщение · #9 Lumen пишет: библиотека msvcrt.dll функция rand параметров нет, результат возвращает в регистре EAX Возможно... список ДЛЛ использующихся в программе:
Да и указаная тобой библиотека пристуствует в списке. Сейчас попробую её АПИ монитором отловить... Lumen пишет: Кстати автор, на чем прога написана? Программа написана на C++ и упакована аспротектом. Jupiter пишет: Скорее всего вызывается CryptGenRandom Написал программу использующую эту апи функцию АПИ монитор замечательно её отлавливает, проверил ещё раз на программе жертве ничего похожего из advapi32.dll она не вызывает... |
|
Создано: 07 декабря 2007 11:34 · Поправил: ekap · Личное сообщение · #10 ekap пишет: Да и указаная тобой библиотека пристуствует в списке. Сейчас попробую её АПИ монитором отловить... Посмотрел, эту функцию оттуда она не берет. ---- проверил GetTickCount который в kernel32.dll Оттуда она не вызывает ничего интересного кроме системного времени: CloseHandle CreateEventA CreateFileA CreateFileMappingA DuplicateHandle GetCommandLineA GetLocaleInfoA GetLongPathNameA GetModuleFileNameA GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemInfo GetSystemTime GetThreadLocale GetVersionExA GlobalAlloc InitializeCriticalSection InitializeCriticalSectionAndSpinCount IsDebuggerPresent LoadLibraryA lstrcmp lstrcpy MapViewOfFile MultiByteToWideChar TlsAlloc TlsSetValue VirtualFree |
|
Создано: 07 декабря 2007 11:43 · Личное сообщение · #11 |
|
Создано: 07 декабря 2007 12:08 · Личное сообщение · #12 |
|
Создано: 07 декабря 2007 13:14 · Личное сообщение · #13 |
|
Создано: 07 декабря 2007 14:09 · Личное сообщение · #14 UR-Shark пишет: Ты уверен что от этого числа всё зависит? да, если я смогу делать его одинаковым то смогу подсовывать программе одинаковый ответ и она будет работать. и новые версии тоже. я даже хотел сделать базу чисел вопрос>ответ но понял что для всех вариантов восьмибайтного(и ответ такой-же длинны) числа мне нехватит места на жестком диске =) |
|
Создано: 07 декабря 2007 15:14 · Личное сообщение · #15 |
|
Создано: 07 декабря 2007 15:29 · Поправил: ekap · Личное сообщение · #16 Lumen пишет: а это че, тест какой-то или че за программа? Это программа она генерит число отправляет на сервер сервер его преобразует и возвращает ответ потом программа как-то его проверяет и если ответ соответствует(они не одинаковые) запросу то она запускается. Название программы нехочу здесь писать чтоб разработчи не поменяли алгоритм авторизации... |
|
Создано: 28 февраля 2008 12:34 · Личное сообщение · #17 |
|
Создано: 28 февраля 2008 13:01 · Личное сообщение · #18 |
|
Создано: 28 февраля 2008 17:28 · Личное сообщение · #19 |
eXeL@B —› Основной форум —› Генерация случайного числа |
Эта тема закрыта. Ответы больше не принимаются. |