Влизаме
в SoftIce.Слагаме един 'bpx hmemcpy' и натискаме
бутноа 'Check'.SoftIce прекъсва в някоя
функция на някои си .dll излизаме от
финкциите с F12 и се връщаме обратно в
кода на програмата.Това става още един
път(2 пъти взема текста)единия път за
USER_NAME и втория път за PASSWORD.След това
натискаме пак няколко пъти F12 докато се
озовем в главната процедура на
програмата т.е на 40142C АКО СТЕ НА WINDOWS
2000 или WINDOWS XP или просто не ви брейква на
hmemcpy , можете да използвате GetWindowTextA -----------------------------------------------------------------------------------------------------------------------------------------------------
40142C CALL
004179E
40142C
MOV ECX,[ESI+64]
;връща името
40142C
CMP dword ptr[ECX-08],06
;проверява дали символите които сме
въвели са поне
6
|-----40142C
JGE 0040144A
;ако е по голямо или равно прескача на адрес 0040144A
|
40142C PUSH
EDI
|
40142C PUSH
0040307C
|
40142C PUSH
00403058
|
401445
JMP 00401523
----------------------------------------------------------------------------------------------------------------------------------------------------- |--->40144A
MOV EDX,[ECX-08]
;Премества в EDX дължината на името
40144D
XOR EAX,EAX
;изпразва EAX
40144F
TEST EDX,EDX
401451
PUSH EBX
401452
JLE 40145F |-->401454 MOVSX
EBX,byte ptr[EAX+ECX]
;слага в EBX стойноста [EAX+OCX] | 401458
ADD EDI,EBX
;събира EDI , EBX (резултатут се трупа в EDI) | 40145A
INC EAX
;повишава EAX с 1 | 40145B
CMP EAX,EDX
;сравнява EAX с дължината на името |----40145D
JL 401454
;прескача ако е по малко
40145F
MOV CL,[ECX+01]
;Слага HEXa на втората буква от името в CL
401462
MOV EBX,[4021BC]
401468 MOVSX ECX,CL
;от ECX остава само CL
40146B
SUB ECX,364D73D9
;от ЕCX изважда 364D73D9
401471
LEA EAX,[ESP+10]
;EAX = 63F808
401475
IMUL ECX,EDI
;Умножава HEXa на втората буква от името с
сбора на HEXа му
401478
PUSH 10
40147A PUSH
EAX
40147B PUSH
ECX |--------40147C
CALL EBX
;конвертва регисъра ЕCX в [EAX](Calculate #1
complete) |
40147E
ADD ESP,0C
|
401481
LEA
ECX,[ESP+0C]
|
401485
PUSH EAX
|
401486
CALL
00401762
|
40148B
PUSH
00403054
|
401490
LEA
ECX,[ESP+10]
|
401494
CALL 00401798
|
401499
MOV EDX,[ESI+64]
;Премества се оказателя за името в EDX
|
40149C
LEA
ECX,[ESP+10]
;Премества оказателя за генерирания до
момента Serial в ECX
|
4014A0
PUSH 10
|
4014A2
PUSH ECX
;Пушва се ECX
|
4014A3
MOV AL,[EDX+01]
;Премества хекса втората буква от името
в AL
|
4014A6
MOVSX EDX,AL
;Премества хекса на втората буква от
името в EDX
|
4014A9
SUB
EDX,321ABFDB
;Вади от EDX 321ABFDB и записва
резултата в EDX
|
4014AF
IMUL EDX,EDI
;Умножава EDX с ЕDI(Сбора на HEX-а на
отделните букви)
|
4014B2
PUSH EDX
;Пушва EDX
|--------4014B3
CALL EBX
;конвертва регисъра ЕDX в [EAX](Calculate #2
complete)
|
4014B5
ADD ESP,0C
|
4014B8
LEA
ECX,[ESP+0C]
|
4014BC
PUSH EAX
|
4014BD
CALL 00401798
|
4014C2
PUSH 00403054
|
4014C7
LEA
ECX,[ESP+10]
|
4014CB
CALL 00401798
|
4014D0
MOV EAX,[ESI+64]
;Премества се оказателя за името в EDX
|
4014D3
LEA
ECX,[ESP+10]
;Премества оказателя за генерирания до
момента Serial в ECX
|
4014D7
PUSH 10
|
4014D9
PUSH ECX
;Пушва се ECX
|
4014DA
MOV AL,[EAX+01]
;Премества хекса втората буква от името
в AL
|
4014DD
MOVSX EDX,AL
;Премества хекса на втората буква от
името в EDX
|
4014E0
SUB
EDX,74868196
;Вади от EDX 74868196 и записва
резултата в EDX
|
4014E6
IMUL EDX,EDI
;Умножава EDX с ЕDI(Сбора на HEX-а на
отделните букви)
|
4014E9
PUSH EDX
;Пушва EDX
|--------4014EA CALL EBX
;конвертва регисъра ЕDX в [EAX](Calculate #3
complete)
|
4014EC
ADD ESP,0C
|
4014EF
LEA
ECX,[ESP+0C]
|
4014F3
PUSH EAX
|
4014F4
CALL 00401798
|
4014F9
MOV
ECX,[ESP+0C]
;Премества се в ECX се Генерирания до
този момент
|
;номер(Calc#1+"-" +
Calc#2 + "-" + Calc#3)
|
4014FD
MOV EAX,[ESI+60]
;Премесва в EAX въведения от
потребитяля Serial
|
401500
PUSH ECX
;Пушва ECX
|
401501
PUSH EAX
;Пушва EAX
|
401502
CALL [004021B0]
;Сравнява EAX с ECX
|
401508
ADD
ESP,08
|
40150B
TEST EAX,EAX
|
40150D
POP
EBX
|
40150E
PUSH 00
|
401510
PUSH 0040307C
|
401515
JNZ
0040151E
;Прескача на 0040151E ако ne e 0(Ако EAX и ECX по горе сe
|
;различни
са различни прескача 0040151E)
|
401517
PUSH 00403040
|
40151C
JMP
00401523
|
Нека сега уточним алгоритъма.Събира HEX-а
на всички букви в дадена променлива.После
сглобява 3 стринга
с |
тирета междо тях.Първия се образува
като от HEX-а на втората буква се извади
364D73D9 и резултатът се умножи
|
по
сбора на HEX-а на името.Втория се
образува като от HEX-а на втората буква
се извади 321ABFDB и резултатът
|
се
умножи по сбора на HEX-а на името.Третия
се образува като от HEX-а на втората
буква се извади 74868196 и
|
резултатът се умножи по сбора на HEX-а на
името.Сега вече като знаете алгоритама
можете да си направите и
| Keygen ----------------------------------------------------------------------------------------------------------------------------------------------------- Ето
и самия 'CALL EBX', не че е от значение де :)) ----------------------------------------------------------------------------------------------------------------------------------------------------- |---->78002D69 PUSH
EBP 78002D6A
MOV EBP,ESP 78002D6C
CMP dword ptr[EBP+10],A |--78002D70
JNZ 78002D7C | 78002D72
CMP dword ptr[EBP+08],00 | 78002D76
JL 78012C3B |>78002D7C
PUSH 00 78002D7E
PUSH dword
ptr[EBP+10] 78002D71
PUSH dword ptr[EBP+0C] 78002D81
PUSH dword ptr[EBP+0C] 78002D84
PUSH dword ptr[EBP+08] |--78002D87
CALL 78002D94 | 78002D8C
MOV EAX,[EBP+0C] | 78002D8F
ADD ESP,10 | 78002D92
POP EBP | 78002D93
RET |>78002D94 PUSH
EBP 78002D95 MOV
EBP,ESP 78002D97 CMP
dword ptr [EBP+14],00 78002D9B MOV
ECX,[EBP+0C] 78002D9E JNZ
78012C44 78002DA4 PUSH
ESI 78002DA5 MOV
ESI,ECX |>78002DA7 MOV
EAX,[EBP+08] | 78002DAA XOR
EDX,EDX | 78002DAC DIV
dword ptr [EBP+10] | 78002DAF CMP
EDX,09 |----|--78002DB5 JA
78012C50 | | 78002DBB ADD
DL,30 | |--|>78002DBE MOV
[ECX],DL | | | 78002DC0 INC
ECX | | | 78002DC1 TEST
EAX,EAX | | |--78002DC3 JA
78002DA7 | | 78002DC5 AND
byte ptr[ECX],0 | | 78002DC8 DEC
ECX | | 78002DC9 MOV
DL,[ESI] | | 78002DCB MOV
AL,[ECX] | | 78002DCD MOV
[ECX],DL | | 78002DCF
MOV
[ESI],AL | | 78002DD1 DEC
ECX | | 78002DD2 INC
ESI | | 78002DD3 CMP
ESI,ECX |
| 78002DD5 JB
78002DC9
| | 78002DD7 POP
ESI | |
78002DD8 POP
EDI |
| 78002DD9 RET ----------------------------------------------------------------------------------------------------------------------------------------------------- |----->78002C50
ADD DC,57
|-----78002C53
JMP 78002DBE ---------------------------------------------------------------------------------------------------------------------------------------------:shade:--- Дата:
11.1о.2оо3 Автор: shade!prf Поща:
sashoo@abv.bg |