Сейчас на форуме: _MBK_, ut2004, vsv1 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Нужна помощь в создании кейгена!
Посл.ответ Сообщение

Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 20 марта 2007 13:01
· Личное сообщение · #1

Имеется программа, ключ в которой генерится в зависимости от железа и программного обеспечения, поэтому при изменении конфигурации компа прога слетает. А автор проги - человек довольно жадный - для приобретенной у него проги бесплатно высылает только 3 ключа, а за каждый последующий хочет 400 рублей. Но я немного увлекся, короче место в программе где генерится ключ активации, я нашел, прогу зарегистрировал. Но не хочется каждый раз в отладчике искать этот номер. Подскажите пожалуйста, как создать кейген или подправить прогу чтобы она сама выводила в окно или в файл этот номер. Вот это место:

00512D2A |. E8 5568FEFF CALL 004F9584
00512D2F 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ;здесь в EAX загружается адрес по которому находится правильный ключ
00512D32 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00512D35 E8 8264EFFF CALL 004091BC

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




Ранг: 68.0 (постоянный), 6thx
Активность: 0.060
Статус: Участник

Создано: 20 марта 2007 13:22
· Личное сообщение · #2

"Прогу в студию" (ц)



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 20 марта 2007 15:01
· Личное сообщение · #3

Прога тяжеловатая 700 Мб. Сам ехе - 1.9 Мб могу выслать на мыло или выложить куда-нибудь, если подскажете куда.




Ранг: 68.0 (постоянный), 6thx
Активность: 0.060
Статус: Участник

Создано: 20 марта 2007 15:21 · Поправил: Dr3d
· Личное сообщение · #4

Там можно свой код вписать, если сам не можешь, давай exe`шник, попробую сделоть



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 20 марта 2007 16:43
· Личное сообщение · #5

Выложил exe'шник на webfile.ru
Упакован RAR, размер 663 кб. Ссылка:
webfile.ru/1352840



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 20 марта 2007 20:40
· Личное сообщение · #6

wasmkv пишет:
00512D2F

После этого адреса делай JMP на свой код, который выведет серийник в файл или куда там тебе надо. После кода делай JMP обратно, только не забудь то что затрешь восстановить.

-----
Blame the victim!




Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 21 марта 2007 12:40
· Личное сообщение · #7

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

00512D2F E9 205D0000 JMP 00518A54
00512D34 90 NOP
00512D35 E8 8264EFFF CALL 004091BC

00518A44 0000 ADD BYTE PTR DS:[EAX],AL ; пустое место (буфер) в програме для серийника
00518A46 0000 ADD BYTE PTR DS:[EAX],AL
----- ----
00518A52 0000 ADD BYTE PTR DS:[EAX],AL
00518A54 60 PUSHAD ; место для кода

Огромнейшее человеческое спасибо!



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 21 марта 2007 17:46
· Личное сообщение · #8

wasmkv, короче на скорую руку сделал. Смотри. Правь как надо.
revenge.crackdb.com/_users/1nn0cent/VAGScan4P2.rar

-----
Blame the victim!




Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 22 марта 2007 12:09 · Поправил: wasmkv
· Личное сообщение · #9

Большое спасибо за код. Извиняюсь за назойливость, но хотелось немножко коментариев.

00518A44 60 PUSHAD
00518A45 6A 00 PUSH 0 ; Arg4 = 00000000
00518A47 6A 00 PUSH 0 ; Arg3 = 00000000
00518A49 50 PUSH EAX ; Arg2
00518A4A 6A 00 PUSH 0 ; Arg1 = 00000000
00518A4C E8 BA7A8577 CALL user32.77D7050B ; user32.77D7050B
00518A51 61 POPAD
00518A52 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00518A55 E8 6207EFFF CALL 004091BC
00518A5A E9 D8A2FFFF JMP 00512D37

Если я правилно понял то копирование происходит с помощью команды CALL user32.77D7050B. Если можно поподробнее о том какие параметры передаются этой функции (что такое Arg1, Arg2, Arg3, Arg4).
Буду очень благодарен, если подскажете, где можно почитать об этой (и не только) библиотеках, желательно на русском языке. Спасибо еще раз.



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 22 марта 2007 14:50
· Личное сообщение · #10

Это MessageBoxA. Я просто показал как вывести на экран серийник. Дальше сам. Например, вместо вызова MessageBoxA сделай копирование в буффер. Как это делать рассказывать не буду, ибо не знаю, а МСДН рулит, но мне читать лень ибо незачем.

-----
Blame the victim!




Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 23 марта 2007 12:08 · Поправил: wasmkv
· Личное сообщение · #11

C MessageBoxA разобрался, спасибо. В Windows XP без SP работает, MessageBox появляется 8 раз. В Windows XP SP2, возникли некоторые проблемы, но это не важно. Получается то, с чего начал, а именно, остался открытым вопрос - можно ли Windows XP SP2 восстановить затертые переходом оригинальные байты по тому же самому адресу. В качестве примера:

Оригинальные

00512D32 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00512D35 E8 8264EFFF CALL 004091BC

Измененные

00512D32 E9 0D5D0000 JMP 00518A44 ;переход на мой код на свободное место
00512D37 90 NOP
00512D38 90 NOP
00512D39 90 NOP

А после выполнения кода возможно ли в Windows XP SP2, чтобы по адресу 00512D32 был не JMP 00518A44, а как в оригинале,

00512D32 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00512D35 E8 8264EFFF CALL 004091BC

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




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 марта 2007 12:36 · Поправил: PE_Kill
· Личное сообщение · #12

wasmkv пишет:
00512D32 E9 0D5D0000 JMP 00518A44 ;переход на мой код на свободное место


ну а по адресу 00518A44 пишешь
mov dword [00512D32],0E8F0558D
mov dword [00512D36],0FFEF6482
------| замуты с серийником |------
************************
-------------------------------------------
jmp 00512D32

-----
Yann Tiersen best and do not fuck




Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 23 марта 2007 13:57
· Личное сообщение · #13

Можно. Смотри пост PE_Kill
Но опять-таки не понимаю зачем... Посмотри как сделал я: то что хатерто джампом написал после своего кода. И все. И никаких проблем.

-----
Blame the victim!




Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 23 марта 2007 14:10
· Личное сообщение · #14

Я делал уже так, только что попробовал еще раз без замутов с серийником:

00518A44 60 PUSHAD
00518A45 C705 322D5100 8D55F0E8 MOV DWORD PTR DS:[512D32],E8F0558D
00518A4F C705 362D5100 8264EFFF MOV DWORD PTR DS:[512D36],FFEF6482
00518A59 61 POPAD
00518A5A E9 D8A2FFFF JMP 00512D37

В результате Windows XP SP2 матерится:
Access violation at address 00518A45 in module 'VAGScan4.exe'. Write of address 00512D32.

И Олька тоже
Access violation when writing to [00512d32]- Use Shift+F7/F8/F9 to pass exeption to program.

Короче тупик полный.



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 23 марта 2007 14:29 · Поправил: wasmkv
· Личное сообщение · #15

1nn0cent пишет:
... не понимаю зачем... Посмотри как сделал я: то что хатерто джампом написал после своего кода.

Во первых:
получается 8 MessageBox_ов, которые надо закрывать.
Во вторых:
чтобы не разбираться и рипать процедуру генерации серийника, хочу прочитать его по конкретному адресу с помощью к примеру SignOfMisery, поскольку кроме железа и програмного обеспечения серийник зависит и от рег номера поставляемого на CD.



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

Создано: 24 марта 2007 17:19 · Поправил: MilitaryMan
· Личное сообщение · #16

wasmkv

00512D2A |. E8 5568FEFF CALL 004F9584
00512D2F 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ;здесь в EAX загружается адрес по которому находится правильный ключ
00512D32 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00512D35 E8 8264EFFF CALL 004091BC
1nn0cent пишет:
wasmkv пишет:
00512D2F
После этого адреса делай JMP на свой код, который выведет серийник в файл или куда там тебе надо. После кода делай JMP обратно, только не забудь то что затрешь восстановить.

PE_Kill пишет:
wasmkv пишет:
00512D32 E9 0D5D0000 JMP 00518A44 ;переход на мой код на свободное место

ну а по адресу 00518A44 пишешь
mov dword [00512D32],0E8F0558D
mov dword [00512D36],0FFEF6482
------| замуты с серийником |------
************************
-------------------------------------------
jmp 00512D32


Всё правильно, за исключекнием того, что: НАДО ДОБАВИТЬ (чисто алгоритм):
1. Перед прыжком В НЕИСПОЛЬЗУЕМОЕ/ПУСТОЕ место записываешь 0 или 1 (или чё хошь)
2. Собственно сам прыжок
3. Проверка на то, что прыжок первый (это та переменная из п.1)
4.1. Если да - замуты с серийником + INC переменной, определенной ранее (п.1) + прыжок на п.5
4.2. Нет - прыжок на п.5
5. Тот код, что затер
6. Возврат (прыжок) на продолжение

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



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 25 марта 2007 03:58
· Личное сообщение · #17

wasmkv пишет:
получается 8 MessageBox_ов, которые надо закрывать.

Это скорее всего от того, что код проврки используется в туевой хуче мест. Посмотри внимательней пост PE_Kill'a. И запиши в моем коде на место старый код. Тогда все будет ок, и МессагеБокс вылезет один раз.

-----
Blame the victim!





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 25 марта 2007 09:52
· Личное сообщение · #18

wasmkv пишет:
Access violation at address 00518A45 in module 'VAGScan4.exe'. Write of address 00512D32.


попробуй поставить на эту секцию флаг записи

-----
[nice coder and reverser]




Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 26 марта 2007 10:12 · Поправил: wasmkv
· Личное сообщение · #19

1nn0cent пишет:
Посмотри внимательней пост PE_Kill'a. И запиши в моем коде на место старый код. Тогда все будет ок, и МессагеБокс вылезет один раз.

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

Подскажите пожалуйста, как это сделать?



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 26 марта 2007 11:28
· Личное сообщение · #20

wasmkv По-моему ты перемудрил. Для того чтобы узнать серийник нужна правленная программа.
После того как узнал серийник - берешь оригинальную прогу и вперед. Какие еще права на запись в секцию ?!



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 26 марта 2007 17:07
· Личное сообщение · #21

tundra37 пишет:
wasmkv По-моему ты перемудрил. Для того чтобы узнать серийник нужна правленная программа.

Приходится мудрить, потому что не получается. Сегодня столкнулся с новой проблемой, нормально работающая правленная программа хотя и с 8 MessageBox'ами на одной машине, отказывается работать на другой. Прога выдает сообщение:
Access violation at address 00000000. Read of address 00000000.

00513F5F 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
00513F62 E9 B95F0000 JMP 00519F20 ; внесенные изменения в прогу выделены
00513F67 90 NOP
00513F68 90 NOP
00513F69 90 NOP

00513F6A 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]


Мой код

00519F20 60 PUSHAD
00519F21 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00519F23 68 409F5100 PUSH 00519F40 ; |Title = "Key"
00519F28 50 PUSH EAX ; |Text
00519F29 6A 00 PUSH 0 ; |hOwner = NULL
00519F2B E8 C2658577 CALL user32.MessageBoxA ; \MessageBoxA
00519F30 61 POPAD
00519F31 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] ;это затертые JMP'ом команды в проге
00519F34 E8 3BF2EEFF CALL 00409174 ;это затертые JMP'ом команды в проге
00519F39 E9 29A0FFFF JMP 00513F6A
00519F3E 00 DB 00
00519F3F 00 DB 00
00519F40 4B 65 79 00 ASCII "Key",0

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



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 27 марта 2007 12:44
· Личное сообщение · #22

wasmkv пишет:
Как это можно обойти и заставить работать на других компах

На других машинах не работает, т.к. тебе дали "черновой" вариант.
У тебя вбит вызов 00519F2B E8 C2658577 CALL user32.MessageBoxA ; \MessageBoxA
в котором зашит конкретный адрес. На другом сервис-паке и другой ОС, адрес другой.
По хорошему надо искать в таблице импорта и ставить обращение туда.
С твоим уровнем тебе в запросы на взлом надо или жди добрую душу
Либо изготавливай кейген "по черному" на каждой из машин.



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 27 марта 2007 15:59 · Поправил: wasmkv
· Личное сообщение · #23

tundra37 пишет:
С твоим уровнем тебе в запросы на взлом надо или жди добрую душу


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




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

Создано: 27 марта 2007 16:26
· Личное сообщение · #24

Как вариант (внимательно не читал, сорри) можно "затертые" байты выполнить на стеке - вряд ли они скора запретят там выполнение кода...

-----
The one derivative you manage is the one I abhore (c) Slipknot




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 27 марта 2007 19:13
· Личное сообщение · #25

wasmkv пишет:
дали бы ссылочку где об этом можно почитать

Вся информация в разделе "Новичку". Какую ссылку ? Про импорт, про патчи ? Число программ вовсе не говорит про уровень - ты азбуки не знаешь. Тупо делаешь что-то, не понимая смысл.
В конце концов взял бы просто и посмотрел на отладчике, как "заплатка" отрабатывает на другой машине - сразу все увидел бы. А у тебя сплошные вопросы и бездействие. Так долго учится будешь.
"Глубже копайте - там золото".



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 28 марта 2007 10:47 · Поправил: wasmkv
· Личное сообщение · #26

tundra37 пишет:
На других машинах не работает, т.к. тебе дали "черновой" вариант

Этот черновой вариант я правил сам в Ольке и код CALL user32.MessageBoxA мне выдал отладчик. А ошибку свою я понял. Ошибся в том, что понадеялся что Windows XP SP2 устанавливался на обе машины с одного диска, а на другой машине не было отладчика. Когда разобрался, то исправил. Все оказалось очень даже просто и оригинально, без всяких JMP и восстановления затертых команд. Ниже привожу код, правда из более новой версии программы:

00513F5A . E8 5568FEFF CALL 004FA7B4 ; оригинал
00513F5F . 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; оригинал

00513F62 . 8B15 38325200 MOV EDX,DWORD PTR DS:[<&user32.MessageBoxA>]; адрес из таблицы импорта
00513F68 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00513F6A . 68 803F5100 PUSH 00513F80 ; |Title = "Key"
00513F6F . 50 PUSH EAX ; |Text
00513F70 . 6A 00 PUSH 0 ; |hOwner = NULL
00513F72 . FFD2 CALL EDX ; \MessageBoxA
00513F74 . 8B15 EC315200 MOV EDX,DWORD PTR DS:[<&kernel32.Exi>; адрес kernel32.ExitProcess из таблицы импорта
00513F7A . 6A 00 PUSH 0 ; /ExitCode = 0
00513F7C . FFD2 CALL EDX ; \ExitProcess
00513F7E . 90 NOP
00513F7F . 90 NOP
00513F80 . 4B DEC EBX ; заголовок окна
00513F81 . 65790000 DD 00007965 ; 'Key'

Осталось только сделать лоадер с помощью diablo2oo2's Universal Patcher [dUP], который проделает эту работу в памяти, дабы уменьшить размер кейгена.

Огромное СПАСИБО всем, кто хоть как-то пытался помочь. Особая благодарность 1nn0cent,PE_Kill и также tundra37.



Ранг: 24.2 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 29 марта 2007 08:57
· Личное сообщение · #27

Cделал лоадер, кейген получился размером всего 9216 байт. Работает естественно с установленной программой. Программа называется VAG-ScanXP v4.2. Если кому надо обращайтесь в личку. Тему закрываю.


 eXeL@B —› Вопросы новичков —› Нужна помощь в создании кейгена!
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати