Академический Документы
Профессиональный Документы
Культура Документы
First Unpack the crackme then Load it on OllyDbg (it's Written in Asm so it's ea
sy to Understand),
then run it, type your name and a fake serial and put a breakpoint on getdlgitem
text , and trace
right here:
004010C7 |. 83F8 10
CMP EAX,10
; Serial must be 10h =
16d char if not .. bad serial
004010CA |. 75 5D
JNZ SHORT UNPACKED.00401129
........
.......
.........
........
.......
.........
004010DD |.
004010DF |.
004010E1 |.
ost 8 char
004010E4 |.
004010E6 |.
1 char
004010E9 |.
85C0
74 20
83F8 08
TEST EAX,EAX
JE SHORT UNPACKED.00401101
CMP EAX,8
7F 2F
83F8 01
JG SHORT UNPACKED.00401115
CMP EAX,1
7C 02
JL SHORT UNPACKED.004010ED
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
|.
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
C605
87304000
88304000
89304000
8A304000
8B304000
8C304000
8D304000
8E304000
8F304000
90304000
91304000
92304000
93304000
94304000
95304000
96304000
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
>MOV
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
DS:[403087],53
DS:[403088],4A
DS:[403089],4B
DS:[40308A],41
DS:[40308B],5A
DS:[40308C],42
DS:[40308D],56
DS:[40308E],54
DS:[40308F],45
DS:[403090],43
DS:[403091],47
DS:[403092],49
DS:[403093],44
DS:[403094],46
DS:[403095],4E
DS:[403096],47
so here the crackme put some nubmers to use them for Serial generation ( 4 routi
nes used ), we
gone explain what each routine do ;)
**** Routine 1 **** ( serial-1- Generation)
0040113d
0040113f
00401141
00401143
00401145
|>
|.
|.
|.
|.
33db
33c9
33d2
33ff
33f6
xor
xor
xor
xor
xor
ebx,ebx
ecx,ecx
edx,edx
edi,edi
esi,esi
;\
; }
; }-------------> "Zero" on Registers
; }
;/
00401147 |> 8a99 a0304000 /mov bl,byte ptr ds:[ecx+4030a0] ;<---- put each ch
ar of our name on bl
0040114d |. 80fb 41
|cmp bl,41
;<---- compare thi
xor ecx,ecx ;\
xor edx,edx ; }-------------------> "Zero" on regist
xor ebx,ebx ;/
;\
; }
; }-----> in this p
; }
edx = res
;/
004011a9 |. 0fca
INTEL format
bswap edx
push edx
push unpacked.00403000
; /<%lX>
; |format =
"%lX"
004011b1 |. 68 18314000
cked.00403118
004011b6 |. E8 c3000000
a
push unpacked.00403118
; |s = unpa
call <jmp.&user32.wsprintfa>
; \wsprintf
xor ebx,ebx \
}----------------------> "Zero" on Regi
sters
004011c0 |. 33c9
xor ecx,ecx /
004011c2 |> 8a99 18314000 /mov bl,byte ptr ds:[ecx+403118] ;<--- we put chars
on bl
004011c8 |. 80fb 3a
|cmp bl,3a
004011cb |. 7c 02
|jl short unpacked.004011cf
004011cd |. Eb 09
|jmp short unpacked.004011d8
004011cf |> 80c3 11
|add bl,11
004011d2 |. 8899 18314000 |mov byte ptr ds:[ecx+403118],bl ;<-- replace initi
al char with the final chars
004011d8 |> 41
|inc ecx
004011d9 |. 83f9 08
|cmp ecx,8
004011dc |.^75 e4
\jnz short unpacked.004011c2
;<--- loop until S
erial2 chars are finished
**** End of routine 3 ****
**** Routine 4 **** ( Final serial Generation)
004011de |. 33db
004011e0 |. 33c9
sters
004011e2 |. 33d2
xor ebx,ebx ;\
xor ecx,ecx ; }---------------------> "Zero" on Regi
;<-- put it on Se
|add edx,2
|inc ecx
|cmp edx,10
xor edx,edx ;/