Сейчас на форуме: padad42664, kris_sexy, site-pro, vasilevradislav (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Не получается разобрать алгоритм генерации ключа
. 1 . 2 . >>
Посл.ответ Сообщение

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

Создано: 18 июля 2007 18:28
· Личное сообщение · #1

весит прога 26 мб :
ftp://s1.nevosoft.ru/beeparty_rus.exe
Есть кейген готовый, но интересен сам принцип генерации серийного номера..
Валидная пара такая:
9238 ----> 3273729373

патч сделать без проблем, но меня приперло сделать самому кейген
:00401C83 8A88E8F24000 mov cl, byte ptr [eax+0040F2E8]
:00401C89 8888C1ED4000 mov byte ptr [eax+0040EDC1], cl
:00401C8F 40 inc eax
:00401C90 84C9 test cl, cl
:00401C92 75EF jne 00401C83
:00401C94 8D0424 lea eax, dword ptr [esp]
:00401C97 50 push eax
:00401C98 E8EB140000 call 00403188
:00401C9D 8B4C2404 mov ecx, dword ptr [esp+04]
:00401CA1 B807452EC2 mov eax, C22E4507
:00401CA6 F7E9 imul ecx
:00401CA8 03D1 add edx, ecx
:00401CAA C1FA10 sar edx, 10
:00401CAD 8BCA mov ecx, edx
:00401CAF C1E91F shr ecx, 1F
:00401CB2 03CA add ecx, edx
:00401CB4 890D48EF4000 mov dword ptr [0040EF48], ecx
:00401CBA E841F3FFFF call 00401000
:00401CBF 83C408 add esp, 00000008
:00401CC2 C3 ret

первые команды это занесение введенного юзером номера в память, затем пересылка всего серийника
в другую ячейку..
непонятно зачем нужен call 00403188,а сама проверка как я понял это
call 00401000
В Hex-виде валидный серийник будет выглядеть как C321255D
а алгоритм генерации чего-то мутит с C22E4507 (это наверно константа, от которой пляшет процедура генерации) и эта константа во всех играх есть.
Поковырял в отладчике ,нифига не понимаю как он генерит такой серийник в конце концов...



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

Создано: 18 июля 2007 18:36
· Личное сообщение · #2

сами процедуры выглядят так:
1.
:00403188 55 push ebp
:00403189 8BEC mov ebp, esp
:0040318B 51 push ecx
:0040318C 51 push ecx
:0040318D 8D45F8 lea eax, dword ptr [ebp-08]
:00403190 50 push eax

* Reference To: KERNEL32.GetSystemTimeAsFileTime, Ord:01C0h
|
:00403191 FF15C4C04000 Call dword ptr [0040C0C4]
:00403197 8B45F8 mov eax, dword ptr [ebp-08]
:0040319A 8B4DFC mov ecx, dword ptr [ebp-04]
:0040319D 6A00 push 00000000
:0040319F 050080C12A add eax, 2AC18000
:004031A4 6880969800 push 00989680
:004031A9 81D1214E62FE adc ecx, FE624E21
:004031AF 51 push ecx
:004031B0 50 push eax
:004031B1 E8CA100000 call 00404280
:004031B6 8B4D08 mov ecx, dword ptr [ebp+08]
:004031B9 85C9 test ecx, ecx
:004031BB 7402 je 004031BF
:004031BD 8901 mov dword ptr [ecx], eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004031BB(C)
|
:004031BF C9 leave
:004031C0 C3 ret



и вторая:
:00401000 68C1ED4000 push 0040EDC1
:00401005 E80F220000 call 00403219
:0040100A 8B15A8F34000 mov edx, dword ptr [0040F3A8]
:00401010 83C404 add esp, 00000004
:00401013 B92E000000 mov ecx, 0000002E
:00401018 56 push esi
:00401019 8DA42400000000 lea esp, dword ptr [esp]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401031(C)
|
:00401020 8BF2 mov esi, edx
:00401022 D3E6 shl esi, cl
:00401024 33F0 xor esi, eax
:00401026 81E6FFFFFF7F and esi, 7FFFFFFF
:0040102C 83E905 sub ecx, 00000005
:0040102F 8BC6 mov eax, esi
:00401031 79ED jns 00401020
:00401033 8BC8 mov ecx, eax
:00401035 81E1FFFF0000 and ecx, 0000FFFF
:0040103B C1E810 shr eax, 10
:0040103E 3BC8 cmp ecx, eax
:00401040 5E pop esi
:00401041 7514 jne 00401057
:00401043 A148EF4000 mov eax, dword ptr [0040EF48]
:00401048 2BC1 sub eax, ecx
:0040104A 83F802 cmp eax, 00000002
:0040104D 7F08 jg 00401057
:0040104F 83F8FF cmp eax, FFFFFFFF
:00401052 7C03 jl 00401057
:00401054 B001 mov al, 01
:00401056 C3 ret

эта больше похожа на проверку..




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 18:50
· Личное сообщение · #3

блин без отладчика трудно уследить че и куда перемещается, но помоему вся генерация состоит из XOR'а и двух AND'ов.. могу ошибаться, но автар посмотри, что в регистрах и если во вторую процедуру имя приходит в чистом виде, то скорее всего так и есть. имя передается через переменную где-то в 0040F3A8

-----
radio uno in ibisa ...




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

Создано: 18 июля 2007 19:54
· Личное сообщение · #4

Nitrogen-а в студию!
перед вводом ключа ставлю брекпоинт на 401С83, далее состояние регистров начальное:
EAX 00000000
ECX FA9C2982
EDX 7FFE0304
EBX 0000000A
ESP 0012F2D4
EBP 0012FE98
ESI 0012F306 ASCII ";pochta@mail.ru"
EDI 0040F2F2 beeparty.0040F2F2
EIP 00401C83 beeparty.00401C83
C 0 ES 0023 32bit 0(FFFFFFFF)
P 1 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 1 DS 0023 32bit 0(FFFFFFFF)
S 0 FS 0038 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00010246 (NO,NB,E,BE,NS,PE,GE,LE)

после выхода из первой процедуры:
EAX 469E4654
ECX 0012F2D4
EDX 00000000
EBX 0000000A
ESP 0012F2D0
EBP 0012FE98
ESI 0012F306 ASCII ";pochta@mail.ru"
EDI 0040F2F2 beeparty.0040F2F2
EIP 00401C9D beeparty.00401C9D
C 0 ES 0023 32bit 0(FFFFFFFF)
P 1 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 0 DS 0023 32bit 0(FFFFFFFF)
S 0 FS 0038 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000206 (NO,NB,NE,A,NS,PE,GE,G)

и после выхода из последней процедуры:
EAX 00003F00
ECX 0000121E
EDX 00002416
EBX 0000000A
ESP 0012F2D0
EBP 0012FE98
ESI 0012F306 ASCII ";pochta@mail.ru"
EDI 0040F2F2 beeparty.0040F2F2
EIP 00401CBF beeparty.00401CBF
C 0 ES 0023 32bit 0(FFFFFFFF)
P 1 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 1 DS 0023 32bit 0(FFFFFFFF)
S 0 FS 0038 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)



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

Создано: 18 июля 2007 19:58
· Личное сообщение · #5

Icelot пишет:
имя приходит в чистом виде

имя всмысле серийник? там привязка к СМС коду 4-х значному, сам номер состоит из 10 цифр
(откуда это узнал автор кейгена для меня осталось загадкой) ,адрес мыла как я понял - не используется для генерации... говорили что защита тут очень легкая




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 июля 2007 20:02 · Поправил: overwriter
· Личное сообщение · #6

Народ ваще ленивый пошел) ну эт столько времени уйдет чтоб без отладчика это разбирать...

Разбирай сам...

HavocTracer пишет:
1. патч сделать без проблем, но меня приперло сделать самому кейген
2. Nitrogen-а в студию!

При таком раскладе ты его делаешь не сам его делает Нитроген)))

-----
Researcher




Ранг: 59.9 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 18 июля 2007 20:03
· Личное сообщение · #7

игрушки с меил ру ломаешь что ли?




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 20:06
· Личное сообщение · #8

т.е. при валидной паре прога из второй функи не возвращается?

-----
radio uno in ibisa ...




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

Создано: 18 июля 2007 20:07
· Личное сообщение · #9

overwriter пишет:
9238 - номер, так? первая команда: вопрос как это можно поместить в cl?

в cl идёт n-значный номер, который юзер вводит (ему присылают его по смс с номера 9238)
Серийник сначала суется в адрес 40EDC1 , затем оттуда пересылается в 40F2E8
overwriter пишет:
При таком раскладе ты его делаешь не сам его делает Нитроген)))

El_Diablo пишет:
игрушки с меил ру ломаешь что ли?

если нечего сказать по тему, не флудить! ок?




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 20:09
· Личное сообщение · #10

HavocTracer пишет:
защита тут очень легкая

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

-----
radio uno in ibisa ...




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

Создано: 18 июля 2007 20:13
· Личное сообщение · #11

Icelot пишет:
т.е. при валидной паре прога из второй функи не возвращается?

перепрыгивает через messageboxA и переходит к распаковке smssrv~1.dll вроде-бы,(это
некое подобие враппера), чего я не понимаю, куда девается сам ключ: его либо шифруют,либо
через другие регистры передают на последний call




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 20:15
· Личное сообщение · #12

HavocTracer пишет:
call 00404280

тут смотреть вроде надо....

-----
radio uno in ibisa ...





Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 июля 2007 20:16
· Личное сообщение · #13

HavocTracer, я подправил свой пост.
HavocTracer пишет:
в cl идёт n-значный номер, который юзер вводит (ему присылают его по смс с номера 9238)

3273729373 - и вот это по твоему влазит в cl и потом двумя командами пересылается? HavocTracer пишет:
если нечего сказать по тему, не флудить! ок?

ОК. но я недоволен))))

-----
Researcher




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

Создано: 18 июля 2007 20:36
· Личное сообщение · #14

overwriter пишет:
3273729373 - и вот это по твоему влазит в cl и потом двумя командами пересылается?

цикл видишь???
пересылается ПОБИТНО, я думал и так понятно всем..
Ты сам хоть скачал прогу или так просто пришел?



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

Создано: 18 июля 2007 20:38
· Личное сообщение · #15

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



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 18 июля 2007 21:16 · Поправил: Vovan666
· Личное сообщение · #16

HavocTracer пишет:
я офигеваю - перед тем как писать ответ


А как остальные офигевают. Перед тем как задать влпрос надо нажать поиск и вписать туда невософт.

[url=http://exelab.ru/f/action=vthread&forum=1&topic=6383
]http://exelab.ru/f/action=vthread&forum=1&topic=6383
[/url]
[url=http://exelab.ru/f/action=vthread&forum=3&topic=6381
]http://exelab.ru/f/action=vthread&forum=3&topic=6381
[/url]
ну и где-то еще пару тем было.




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 июля 2007 21:32
· Личное сообщение · #17

HavocTracer вот за полного нуба меня запинговал(
Прога весит 26 мегов, если бы я мог ее скачать уже бы сделал для тебя кейген, наверна, если алго не сложный. 26 метров - именно по этому ты наверное тут кодом разбросался.
Наверное это поможет кому-либо тебе помочь)

HavocTracer пишет:
цикл видишь???

понял) не думал, что сие цикл пересылки, значит номер Null-terminated by '0', но эт и без меня было понятно))))
Сча погадаю тебе на гуще (диалапщик я).

-----
Researcher




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

Создано: 18 июля 2007 21:50
· Личное сообщение · #18

overwriter
скачай другую прогу поменьше, там же одинаковая защита (у последних версий по крайней мере 100 пудов)
я же спрашиваю не конкретно эту сломать, а общий алгоритм генерации (надеюсь вы понимаете что он
у всех игр одинаковый раз есть универсальный кейген)



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

Создано: 18 июля 2007 21:52
· Личное сообщение · #19

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




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 июля 2007 21:54
· Личное сообщение · #20

Прочитал все. Не хватит терпения. Я думаю ни у кого не хватит. Да и в 1 процедуре есть вызовы еще двух процедур не плохо бы посмотреть состояние регистров до вызова тех процедур, что внутри 1ой и после вызова , да и стэк неплохо бы посмореть.... не телепатов мало. У кого канал пошире поможет

-----
Researcher





Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 июля 2007 21:56
· Личное сообщение · #21

HavocTracer,до 2-3 мегов есть там проги?просто качать долга буду(( дай плиз прямой линк на програмулину тада, если так.

-----
Researcher





Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 22:01
· Личное сообщение · #22

выложи exe'шник

-----
radio uno in ibisa ...




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

Создано: 18 июля 2007 22:05
· Личное сообщение · #23

самая мелкая вот эта:
ftp://nevosoft.ru/feng_shui_mahjong_rus.exe (8 мб) но я не уверен что там защита новая стоит...
overwriter пишет:
просто качать долга буду

у меня диал-ап, 4 кб\сек , закачало за 2 часа



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

Создано: 18 июля 2007 22:09
· Личное сообщение · #24

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



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

Создано: 18 июля 2007 22:17
· Личное сообщение · #25

overwriter пишет:
Прочитал все. Не хватит терпения. Я думаю ни у кого не хватит. Да и в 1 процедуре есть вызовы еще двух процедур не плохо бы посмотреть состояние регистров до вызова тех процедур, что внутри 1ой и после вызова , да и стэк неплохо бы посмореть....

поверь мне: если бы у тебя был хотя бы небольшой опыт написания кейгенов, то не составило бы труда
уже только по виду кода сказать что и где генерится.. нет ни пакера навесного,ни RSA шифрования...
Вот у меня опыта кейгеностроительства нет и поэтому смотрю на эти процедуры как баран на новые ворота, но ведь не все же здесь такие...




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 22:25
· Личное сообщение · #26

как посидеть в отладчике, так отговорки, как на понт брать, так горазд..

ps выложи exe!

-----
radio uno in ibisa ...




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

Создано: 18 июля 2007 22:29 · Поправил: HavocTracer
· Личное сообщение · #27

Icelot
держи, только фигли от него толку:

<img src="img/attach.gif"> <SCRIPT type=text/javascript>dfl("files/","8eb0_18.07.2007_CRACKLAB.rU.tgz");< /SCRIPT> - beeparty.exe

зы касперчегом только проверяй,а то у меня тут вирь недавно чуть MBR винта не грохнул...



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 18 июля 2007 22:31
· Личное сообщение · #28

Вот так надо выкладывать:
dump.ru/files/8/8635930714/




Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 18 июля 2007 22:39
· Личное сообщение · #29

я фигею.. нафиг мне 476 кб картинок-то было выкладывать?? о_О

-----
radio uno in ibisa ...




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

Создано: 18 июля 2007 22:58
· Личное сообщение · #30

короче,в процедура проверки это вот:
:00401020 8BF2 mov esi, edx
:00401022 D3E6 shl esi, cl
:00401024 33F0 xor esi, eax
:00401026 81E6FFFFFF7F and esi, 7FFFFFFF
:0040102C 83E905 sub ecx, 00000005
:0040102F 8BC6 mov eax, esi
:00401031 79ED jns 00401020

в EDX хранится 2416h это 9238 наши, фактически 3 микропроверки:
1. ecx=eax после этого цикла
2. :00401043 A148EF4000 mov eax, dword ptr [0040EF48]
:00401048 2BC1 sub eax, ecx
:0040104A 83F802 cmp eax, 00000002
:0040104D 7F08 jg 00401057
3. eax не превышает FFFFFFFF (зачем надо???)
Вот здесь надо копать имхо, т.е. она не тупо ключ сравнивает с введенным, а проверяет его
с помощью каких то арифметических операций


. 1 . 2 . >>
 eXeL@B —› Крэки, обсуждения —› Не получается разобрать алгоритм генерации ключа
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати