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

 eXeL@B —› Основной форум —› Кейген из самой пороги.
Посл.ответ Сообщение


Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 01 августа 2006 00:18
· Личное сообщение · #1

Вопрос заключается в следующем:

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

-----
-=истина где-то рядом=-




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

Создано: 01 августа 2006 00:36
· Личное сообщение · #2

Копай в сторону

.data
format db "%08lX",0
szBuff db 32 dup (0)
.code
push EAX
push OFFSET formatN
push OFFSET szBuff
call wsprintf




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

Создано: 01 августа 2006 01:00
· Личное сообщение · #3

а лоадырь не катит - загрузить процесс приостановленным, вбить какой-нить вызов sleep(много) сразу после места где в регистре ключ появляется (не забыв предварительно записать его в память процесса), а потом спокойно ReadProcessMemory() и прибить процесс....а вообще: брать al, стирать старшие 4 бита. если буква приписывать в старшие 4h если цифра 3h записать байт куда нить, потом сдвинуть eax на 4 и повторить и так 8 раз. приписать \0 символ и вызвать MessageBox() не забыв положить в стек адрес места куда складывали....




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 01 августа 2006 01:00
· Личное сообщение · #4

Я пользуюсь для этого следующим кодом:


.data
Int2HexBuffer db 16 dup(0)
.code
Int2Hex proc
arg @@Value:DWORD, @@Digits:DWORD
uses ecx, edx
mov edx, @@Digits
mov eax, @@Value
lea ecx, Int2HexBuffer
mov [ecx], dl
xadd edx, ecx
@@loop1:
push eax
and al, 0Fh
aam
aad 11h
add al, 30h
mov [edx], al
pop eax
shr eax, 4
dec edx
loop @@loop1
inc edx
mov ecx, @@Digits
mov byte ptr edx[ecx], 00
mov eax, edx
ret
Int2Hex endp

Digits -- кол-во символов,которые надо отобразить.
При возврате в EAX указатель на получившуюся строку(буфер Int2HexBuffer).

-----
the Power of Reversing team





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 01 августа 2006 01:18
· Личное сообщение · #5

Вот собственно участок кода:

/*4E4303*/ ADD EAX,3
/*4E4306*/ CDQ
/*4E4307*/ XOR EAX,EDX - вот с этого момента уже весит в еах серийник
/*4E4309*/ SUB EAX,EDX
/*4E430B*/ MOV DWORD PTR SS:[EBP-44],EAX
/*4E430E*/ FILD DWORD PTR SS:[EBP-44]
/*4E4311*/ FSTP TBYTE PTR SS:[EBP-30]
/*4E4314*/ WAIT
/*4E4315*/ FLD TBYTE PTR SS:[EBP-30]
/*4E4318*/ FLD TBYTE PTR SS:[EBP-20]
/*4E431B*/ FCOMPP
/*4E431D*/ FSTSW AX
/*4E431F*/ SAHF
/*4E4320*/ JNZ Mobil_Ge.004E440F - это джамп на мессадж бокс..

(...cut...)

/*4E440F*/ PUSH 2010 - Ну и собственно сам мессаджбокс.
/*4E4414*/ MOV ECX,Mobil_Ge.004E4500
/*4E4419*/ MOV EDX,Mobil_Ge.004E4508
/*4E441E*/ MOV EAX,DWORD PTR DS:[4ED658]
/*4E4423*/ MOV EAX,DWORD PTR DS:[EAX]
/*4E4425*/ CALL Mobil_Ge.0046FECC


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

-----
-=истина где-то рядом=-





Ранг: 66.5 (постоянный)
Активность: 0.030
Статус: Участник
Повелитель ЗЛА

Создано: 01 августа 2006 01:27
· Личное сообщение · #6

Вот в этой статье такой способ взлома есть, и там проще.
2) Создание кейгена на основе самой программы.
http://exelab.ru/art/?action=view&id=97



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

Создано: 01 августа 2006 01:34
· Личное сообщение · #7

Может я чего не понял. Но где еще

push addr Caption
push addr Text
push Handle

А вообще подумай как сделать и прочитай сравку про мессагебокс.




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 01 августа 2006 01:40 · Поправил: KingSise
· Личное сообщение · #8

Cigan пишет:
Может я чего не понял. Но где еще

push addr Caption
push addr Text
push Handle


Совсем не обязательно, что должен присутствовать push.

004E440F 68 10200000 PUSH 2010
004E4414 B9 00454E00 MOV ECX,Mobil_Ge.004E4500 ; ASCII "Ошибка!" - Caption
004E4419 BA 08454E00 MOV EDX,Mobil_Ge.004E4508 ; ASCII "Неверный серийный номер!" - Text
004E441E A1 58D64E00 MOV EAX,DWORD PTR DS:[4ED658]
004E4423 8B00 MOV EAX,DWORD PTR DS:[EAX]
004E4425 |. E8 A2BAF8FF CALL Mobil_Ge.0046FECC

-----
-=истина где-то рядом=-





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 01 августа 2006 01:47
· Личное сообщение · #9

KingSise пишет:
Совсем не обязательно, что должен присутствовать push.

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




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 01 августа 2006 02:13
· Личное сообщение · #10

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

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

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

-----
-=истина где-то рядом=-





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 01 августа 2006 03:37
· Личное сообщение · #11

KingSise пишет:
но всеже вопрос есть вопрос - как вывести значение регистра(ов) в мессаджбоксе...

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

push 08
push REG
call Int2Hex
push MB_OK
push NULL
push eax
push NULL
call MessageBoxA


-----
the Power of Reversing team




Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 01 августа 2006 03:46
· Личное сообщение · #12

mov edx, eax ; в eax выводимый DWORD
push ebx
mov ebx, OFFSET szBuff ; буфер для строки
add ebx, 8
mov BYTE PTR [ebx], 0
mov ecx, 4
@L1:
sub ebx, 2
mov al, dl ; байт, который будем конвертировать
aam 16
cmp al,10
sbb al,69h
das
xchg al, ah
cmp al,10
sbb al,69h
das
mov WORD PTR [ebx], ax
shr edx, 8
loop @L1
xor eax, eax
push eax
push eax
push ebx
push eax
call MessageBox
pop ebx





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 01 августа 2006 05:34
· Личное сообщение · #13

Спасибо всем, особенно Asterix.
Вопрос считаю исчерпаным.

-----
-=истина где-то рядом=-



 eXeL@B —› Основной форум —› Кейген из самой пороги.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати