Scrollworks Cascader 1.02

http://www.scrollworks.com

Softice 3.24
Turbo Pascal 7.0

oleh

BlackZ

 

Pengenalan Program

Ini yang saya kutip dari helpnya program ini :

"Cascader allows you to add cascading system menus to your Start Menu."

Program ini dapat memodifikasi Start Menu, misalnya menambah menu Control Panel.

Tutorial ini melakukan pencarian S/N yang tepat sesuai dengan nama yang dimasukkan di dalam kotak registrasi. Software ini merupakan shareware 30 hari. Metode perhitungan serial number-nya lumayan mengecoh kalau tidak teliti, hasil perhitungan dalam heksadesimal merupakan serial numbernya.

Essay

Jalankan program Cascader 1.02 dan klik tombol Regiser maka kamu akan di minta mengisi nama dan kode registrasi. Coba tulis dulu dengan :

	User Name     			: BlackZ
	Registration Code		: 123456

Sekarang kita jalankan softice (Ctrl-D) lalu ketik semua breakpoint yang memungkinkan. Keluar lagi dari softice (Ctrl-D) dan klik tombol OK dan kita akan masuk lagi ke layar softice. Dan ternyata program menggunakan 'getwindowtexta'. Pertama-tama saya tekan F12 sampai keluar dari layar softice (sebanyak 7 kali) lalu saya ulangi lagi (tekan F12 dikurangi satu) sebanyak 6 kali dan kamu akan mendapatkanrutin seperti ini :

:00402AA5	CALL 	0041273D
:00402AAA	MOV	EAX, [ESI+0000009C]
:00402AB0	MOV	ECX, [ESI+00000098]
:00402AB6	PUSH	EAX
:00402AB7	PUSH 	ECX
:00402AB8	PUSH 	04
:00402ABA	CALL	00402560			;rutin yg menggenerate serial
:00402ABF	ADD	ESP,0C
:00402AC2	TEST	EAX,EAX				;kalau serial benar maka eax tidak nol
:00402AC4	JZ	00402B69			;lompat kalau salah
:00402ACA	PUSH	EBX

nah kemudian kita coba masuk ke rutin CALL 00402560 maka kamu akan mendapatkan rutin yang panjang ini :

:00402560	MOV	EDX,[ESP+0C]			;user name kita
:00402564	SUB	ESP,0C
:00402567	MOVSX	EAX,WORD PTR [ESP+10]
:0040256C	MOV	CL,EDX				;karakter user name ke cl
:0040256E	PUSH	EBX
:0040256F	TEST	CL,CL
:00402571	PUSH	ESI
:00402572	JZ	00402C58
:00402574	PUSH	EDI
:00402575	MOV	EDI,EDX
:00402577	CMP	CL,61				;bandingkan dengan huruf 'a'
:0040257A	JL	00402584			;lompat jika bukan huruf kecil
:0040257C 	CMP	CL,7A				;bandingkan dengan huruf 'z'
:0040257F	JG	00402584			;lompat jika bukan huruf kecil
:00402581	ADD	CL,E0				;jadikan huruf besar
:00402584	CMP	CL,41				;bandingkan dengan 'A'
:00402587	JL	0040258E			;lompat jika bukan huruf
:00402589	CMP	CL,5A				;bandingkan dengan 'Z'
:0040258C	JLE	00402598			;lompat jika huruf besar
:0040258E	CMP	CL,30				;bandingkan dengan angka '1'
:00402591	JL	004025BF			;lompat jika bukan huruf dan angka
:00402593	CMP	CL,39				;bandingkan dengan angka '9'
:00402596	JG	004025BF			;lompat jika bukan huruf dan angka
:00402598	MOV	ESI,00000008			;loop sebanyak 8 kali 
:0040259D	MOV	EDX,EAX				;rumus dimulai di sini
:0040259F	MOV	EBX,EAX
:004025A1	SHR	EDX,1C
:004025A4 	AND	EDX,04
:004025A7 	AND	EBX,04
:004025AA 	XOR	EDX,EBX
:004025AC 	MOV	BL,CL
:004025AE 	SHR	EDX,02
:004025B1 	AND	EBX,01
:004025B4 	ADD	EAX,EAX
:004025B6 	XOR	EDX,EBX
:004025B8 	OR	EAX,EDX
:004025BA 	SAR	CL,1
:004025BC 	DEC	ESI				;kurangi nilai looping
:004025BD 	JNZ	0040259D			;lompat jika esi = 0 (looping selesai)
:004025BF 	MOV	CL,[EDI+01]			;ke karakter selanjutnya
:004025C2	INC	EDI				;naikkan EDI
:004025C3 	TEST	CL,CL				;apakah semua karakter nama habis ?
:004025C5 	JNZ	00402577			;ulangi proses u/ karakter selanjutnya
:004025C7 	POP	EDI
:004025C8 	AND	EAX,3FFFFFFF
:004025CD 	LEA	ECX,[ESP+08]
:004025D1 	OR	EAX,40000000			;perhitungan selesai
:004025D6 	PUSH	EAX				;serial asli (=EAX) dalam hexa
:004025D7 	PUSH	0041E17C
:004025DC 	PUSH	ECX
:004025DD 	CALL	[USER32!wsprintfA]		;rutin mengkonversi nilai eax ke string
:004025E3 	MOV	ECX,[ESP+28]
:004025EA 	ADD	ESP,0C
:004025EC 	XOR	EAX,EAX
:004025EF 	CMP	BYTE PTR [ECX],20		;apakah ada spasi ?
:004025F1 	MOV	DL,[ECX+EAX+01]			;karakter selanjutnya ke DL
:004025F5 	INC	EAX
:004025F6 	CMP	DL,20				;apakah spasi lagi ?
:004025F9 	JZ	004025F1
:004025FB 	XOR	ESI,ESI
:004025FD 	MOV	DL,[ECX+EAX]			;serial palsu kita
:00402600 	MOV	BL,[ESI+ESP+08]			;serial asli
:00402604 	INC	EAX
:00402605 	CMP	DL,BL				;serial palsu dibandingkan dgn yg asli
:00402607 	JNZ	00402631			;keluar jika tidak sama
:00402609 	INC	ESI				;bandingkan serial selanjutnya
:0040260A 	CMP	ESI,0A				;apakah sudah 10 kali ?
:0040260D 	JL	004025FD			;teruskan sampai 10 angka...

Nah ternyata program ini akan selalu menghasilkan 10 angka sebagai serial numbernya. Proses di atas menghitung kode ascii dari user name satu persatu dimana satu karakter nama diproses sebanyak 8 kali (lihat offset 00402598). Disini kita bisa mengisi user name dengan karakter apa saja... tetapi karakter yg akan diproses adalah hanya angka dan huruf, di mana huruf kecil akan dijadikan huruf besar terlebih dahulu. Sebagai contoh : user name BlackZ akan memliki serial number yang sama dengan B-l*a%c+kZ!.

Nah dibawah ini key generatornya dalam pascal. Kalau kamu bisa membuatnya dalam bahasa pemrograman yang lain, tolong donk kirim ke saya. Thanks.

K R A K

Keygenerator serial number menghasilkan 10 angka. Untuk nama "BlackZ" serial yang saya dapatkan adalah 1355893073.

Uses Crt;


Var   nama            : string[100];
      eax,ebx,ecx,edx : longint;
      i,j,bl,cl       : integer;

Begin
     clrscr;
     writeln;writeln;writeln;writeln;
     writeln('                         Program perhitungan serial number');
     writeln('                        **** Scrollwork Cascader 1.02 ****');
     writeln;writeln;writeln;
     write  ('                         Masukkan nama anda : ');read(nama);
     eax := 4; {konstanta}
     for i := 1 to length(nama) do nama[i] := upcase(nama[i]); {dijadikan huruf besar}
     for i := 1 to length(nama) do
     begin
     if (ord(nama[i])>64) and (ord(nama[i])<91) or
        (ord(nama[i])>64) and (ord(nama[i])<91) then

{dua baris diatas untuk memeriksa apakah nama yang dimasukkan huruf atau angka}
{kalau bukan huruf atau angka lewatkan atau lanjutkan keberikutnya, dalam arti}
{karakter yang dihitung adalah hanya huruf atau angka saja walau karakter lain}
{boleh diisikan ke string nama.}

        begin
             cl := ord(nama[i]);
             for j := 1 to 8 do
             begin
                  edx := eax;           {mov edx,eax}
                  ebx := eax;           {mov ebx,eax}
                  edx := edx shr 28;    {shr edx,1C}
                  edx := edx and 4;     {and edx,04}
                  ebx := ebx and 4;     {and ebx,04}
                  edx := edx xor ebx;   {xor edx,ebx}
                  ebx := cl;            {mov ebx,cl == mov bl,cl}
                  edx := edx shr 2;     {shr edx,02}
                  ebx := ebx and 1;     {and ebx,1}
                  eax := eax + eax;     {add eax,eax}
                  edx := edx xor ebx;   {xor edx,ebx}
                  eax := eax or edx;    {or  eax,edx}
                  cl  := cl shr 1;      {shr cl,1 == sar cl,1}
             end;
        end;
     end;
     eax := eax and $3FFFFFFF;          {and eax,3FFFFFFF}
     eax := eax or $40000000;           {or  eax,40000000}
{di softice atau wdasm hasil eax dalam hexa, nah desimalnya adalah serialnya}
{jadi cuma sampai disini formula untuk menggenerate serialnya}

     write('                         Serial             : ');
     write(eax);
     writeln;writeln;writeln;
     write('                        *** BlackZ@Copyright-Juli 1999 ***');
     readkey;
End.

Catatan

Salah satu cara saya setiap kali memulai cracking saya coba trial dengan menekan F12 sampai muncul pesan bahwa saya mengisi serial yang salah. Nah selanjutnya saya ulang sambil melihat rutin mana yang mencurigakan nah kebetulan untuk program ini saya langsung ketemu rutinnya dan dapet deh tuh deretan angka di register ESP, soalnya ada intruksi compare dengan serial palsu yang saya masukkan. Lalu saya catet angka itu dan mulai saya cari rutin pembentuk serial numbernya dengan pegangan serial asli yang sudah saya ketahui. Nah ternyata lumayan panjang... dan setelah di teliti saya salah. Rutinnya pendek! hasil serialnya yang masih dalam heksa di konversikan dulu ke desimal. Nah rutin konversi ini yang membuat saya salah sangka karena saya mengira rutin ini termasuk rutin keygenerator. Wah jangan sampai kena tipu lagi deh. Buang2 waktu.

BlackZ

© Juli1999