Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых)

 eXeL@B —› Основной форум —› Генерация случайного числа
Посл.ответ Сообщение

Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2007 17:56
· Личное сообщение · #1

Есть программа в защите которой используется генерация случайного числа.
Пробую сделать так чтобы программа генерила одно и тоже число (8 байт) каждый раз:
1)В реестровую ветку Microsoft\Cryptography\RNG помещаю одинаковые данные.(программа при запуске её читает и пишет в нее новое значение)
2) программой TRIAL FREEZER замораживаю для нее время чтобы она думала что запускается в один и тот-же момент.
После этого програмно запускаю и сохраняю сгенерированое число (сделал 200) раз и она каждый раз герегила разное число - в результатах байты распределяются равномерно(от 0 до FF) с нормальным для небольшой выборки шумом.
Вопрос: как ещё программа может генерировать случайное число?
Навыками отладки в ассемблере не обладаю поэтому в отладчике прогнать немогу.
Смотрел через AIP монитор вроде стандартная виндовая функция генерации случайного числа не выполняется(возможно криво смотрел).



Ранг: 10.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 декабря 2007 18:52 · Поправил: LexxCracker
· Личное сообщение · #2

Вариантов поистине тьма...

1. GetTickCount()
2. rdtsc
3. Раздичные манимпуляции с координатами курсора мышки, цветами пикселей монитора, работа с объемами физической памяти и пр.

Без отладчика реестр в данном случае тебе не помощник.


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




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 06 декабря 2007 19:25
· Личное сообщение · #3

LexxCracker пишет:
Вариантов поистине тьма...

Полностью согласен! ekap, разобраться может быть довольно сложно...
А почему, собственно, тебе нужно ekap пишет:
сделать так чтобы программа генерила одно и тоже число (8 байт) каждый раз
?
Если пытаешься зарегить, то не проще ли будет сделать патч? Или тебе именно интересна сама реализация алгоритма?

-----
Программист SkyNet





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 06 декабря 2007 20:04
· Личное сообщение · #4

Скорее всего вызывается CryptGenRandom, которая не является частью программы, а является частью системы и твой фризер на неё не распространяется, поэтому ты и наблюдал постоянное изменение значений.

-----
EnJoy!




Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2007 20:15
· Личное сообщение · #5

LexxCracker пишет:
1. GetTickCount()
- да, об этом я не подумал возможно TRIAL FREEZER его не замораживает.
2. rdtsc
3. Раздичные манимпуляции с координатами курсора мышки, цветами пикселей монитора, работа с объемами физической памяти и пр.

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

LexxCracker пишет:
Куда проще освоить отладчик, найти место, откуда берется случайное число и пропатчить так, чтобы содержимое было всегда отдно и тоже.


Пробовал не получилось =) т.к. не знаю асемблера и попытки разобратся в нем никчему не привели.


FrenFolio пишет:
А почему, собственно, тебе нужно ekap пишет:
сделать так чтобы программа генерила одно и тоже число (8 байт) каждый раз ?

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



Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2007 20:20
· Личное сообщение · #6

Jupiter пишет:
Скорее всего вызывается CryptGenRandom, которая не является частью программы, а является частью системы и твой фризер на неё не распространяется, поэтому ты и наблюдал постоянное изменение значений.


её обращение ведь должен отлавливать API монитор... а я этого не увидел хотя запись в Cryptography\RNG говорит что используется виндовая функция CryptGenRandom ... завтра попробую написать тестовую программу и посмотреть увидит ли АПИ монитор её использование... и заодно на GetTickCount посмотрю - замораживает фризер или нет...




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 07 декабря 2007 10:04
· Личное сообщение · #7

ekap пишет:
Вопрос: как ещё программа может генерировать случайное число?


библиотека msvcrt.dll
функция rand
параметров нет, результат возвращает в регистре EAX

-----
Nulla aetas ad discendum sera





Ранг: 111.1 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 07 декабря 2007 11:09
· Личное сообщение · #8

Flint
У меня такое дикое ощущение, что это она и используется в этой программе. Если она конечно на С++ написана. Кстати автор, на чем прога написана?

-----
The truth is out of there...




Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 декабря 2007 11:25 · Поправил: ekap
· Личное сообщение · #9

Lumen пишет:
библиотека msvcrt.dll
функция rand
параметров нет, результат возвращает в регистре EAX


Возможно... список ДЛЛ использующихся в программе:

advapi32.dll
comdlg32.dll
crypt32.dll
dnsapi.dll
gdi32.dll
imm32.dll
kernel32.dll
mpr.dll
msasn1.dll
msctf.dll
msimg32.dll
msvcrt.dll
msvfw32.dll
mswsock.dll
netapi32.dll
ntdll.dll
ole32.dll
oleaut32.dll
oledlg.dll
olepro32.dll
psapi.dll
riched20.dll
riched32.dll
rpcrt4.dll
rpcss.dll
shell32.dll
shlwapi.dll
Syncor11.dll
user32.dll
uxtheme.dll
version.dll
wininet.dll
winmm.dll
winrnr.dll
wldap32.dll
ws2_32.dll
ws2help.dll
wsock32.dll


Да и указаная тобой библиотека пристуствует в списке. Сейчас попробую её АПИ монитором отловить...
Lumen пишет:
Кстати автор, на чем прога написана?

Программа написана на C++ и упакована аспротектом.

Jupiter пишет:
Скорее всего вызывается CryptGenRandom

Написал программу использующую эту апи функцию АПИ монитор замечательно её отлавливает, проверил ещё раз на программе жертве ничего похожего из advapi32.dll она не вызывает...



Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 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




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 07 декабря 2007 11:43
· Личное сообщение · #11

Че гадать на кофейной гуще, выкладывай прогу, если небольшая по размеру, то поглядим.

-----
Nulla aetas ad discendum sera




Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 декабря 2007 12:08
· Личное сообщение · #12

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

Программа упакована Аспротектом (наверняка там прокриптованые функции и.т.п.) и пока её не сломаеш генерить она ничего не будет ключей в паблике не встречается а свой выкладывать не хочется... у меня зареганая версия.



Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 07 декабря 2007 13:14
· Личное сообщение · #13

Ты уверен что от этого числа всё зависит?
Мож лучше аспр открутить?

З.Ы. лучше не значит что проще...



Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 декабря 2007 14:09
· Личное сообщение · #14

UR-Shark пишет:
Ты уверен что от этого числа всё зависит?

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




Ранг: 111.1 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 07 декабря 2007 15:14
· Личное сообщение · #15

ekap
а это че, тест какой-то или че за программа?
И вообще не вижу смысла так делать.

-----
The truth is out of there...




Ранг: 3.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 декабря 2007 15:29 · Поправил: ekap
· Личное сообщение · #16

Lumen пишет:
а это че, тест какой-то или че за программа?

Это программа она генерит число отправляет на сервер сервер его преобразует и возвращает ответ потом программа как-то его проверяет и если ответ соответствует(они не одинаковые) запросу то она запускается.
Название программы нехочу здесь писать чтоб разработчи не поменяли алгоритм авторизации...




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 28 февраля 2008 12:34
· Личное сообщение · #17

Смотри тогда процедуру проверки ответа от сервера и патч её, чтобы всегда true возвращала...
А писать название проги и не надо, можно просто выложить под левым именем и никто её тут не найдёт

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 110.7 (ветеран)
Активность: 0.070
Статус: Участник
~ tPORt ~

Создано: 28 февраля 2008 13:01
· Личное сообщение · #18

[killme]
Isaev что толку старые топеки подымать?

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 февраля 2008 17:28
· Личное сообщение · #19

Семён-семёныч... с таким то рангом... покайтесь...


 eXeL@B —› Основной форум —› Генерация случайного числа
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати