DLL Show 4.0

http://www.execpc.com/~sbd

Softice 3.24

oleh

BlackZ

 

Pengenalan Program

Ini yang saya kutip dari helpnya program ini :

"DLL Show for Windows 95 is a small utility that displays a list of all tasks and processes currently running on your MS Windows 95 system. DLL Show is fully Y2K compliant and will work with MS Windows 98 systems as well."

Tutorial ini melakukan pencarian S/N yang tepat sesuai dengan nama dan organization yang dimasukkan di dalam kotak registrasi. Software ini merupakan shareware 30 hari dan ada nag screen yang muncul saat pertama kali program ini dijalankan. Kalau sudah diregistrasi nag screen tersebut dapat dihilangkan. Metode perhitungan serial number-nya berbeda dengan versi sebelumnya yang hanya memiliki satu nama, organisasi dan serial number. Kali ini pembuat program ini mencoba memproteksi dengan megolah nama dan organisasi dari user.

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
	Organization			: Freelance
	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 'getdlgitemtexta'. Pertama-tama saya tekan F12 sampai keluar dari layar softice (sebanyak 4 kali) lalu saya ulangi lagi (tekan F12 dikurangi satu) sebanyak 3 kali dan kamu akan menemui rutin seperti ini :

:0040F1F1	CALL 	EBP
:0040F1F3	LEA	EAX, [ESP+10]
:0040F1F7	PUSH	EAX
:0040F1F8	CALL	004175A0			;konversi serial kita ke hexa
:0040F1FD	ADD	ESP, 04
:0040F200	MOV	EBP, EAX			;ebp = serial kita
:0040F202	PUSH 	ESI
:0040F203	CALL	00416320			;mengolah nama kita dan simpan di eax
:0040F208	ADD	ESP, 04
:0040F20B	CMP	EAX, 0119A792			;bandingkan dengan 119A792h
:0040F210	JNZ	0040F22A			;lompat kalau salah
:0040F212	PUSH	0042426C
:0040F217	MOV	EBP, [KERNEL32!lstrcpy]
:0040F21D	PUSH	ESI
:0040F21E	CALL	EBP
:0040F220	PUSH	00424254
:0040F225	PUSH 	EBX
:0040F226	CALL	EBP
:0040F228	JMP	0040F231
:0040F22A	CMP	EAX, 0D5FCE3C			;bandingkan dengan D5FCE3Ch
:0040F22F	JNZ	0040F23D
:0040F231	PUSH	EBX				;organisasi
:0040F232	PUSH 	ESI				;nama kita
:0040F233	CALL	00415170			;rutin yg menggenerate serial asli
:0040F238	ADD	ESP, 08
:0040F23B	MOV	EBP, EAX
:0040F23D	PUSH	EBX				;organisasi
:0040F23E	PUSH	ESI				;nama kita
:0040F23F	CALL	00415170			;rutin yg menggenerate serial asli
:0040F244	ADD	ESP, 08
:0040F247	CMP	EAX, EBP			;bandingkan serial asli dengan palsu
:0040F249	JZ	0040F269			;eax = serial asli dalam hexa

nah kemudian kita coba masuk ke rutin CALL 00415170 maka kamu akan menemui rutin ini :

:00415170	MOV	EAX,[ESP+04]			;nama kita
:00415174	PUSH	ESI
:00415175	MOV	ESI,[00423954]			;konstanta DB95DB95h
:0041517B	PUSH	EAX
:0041517C	OR	ESI, 00000378			;or-kan konstanta di atas
:00415182	CALL	00416320			;rutin pengolah nama
:00415187	ADD	ESP, 04
:0041518A	ADD	ESI, EAX
:0041518C	MOV	EAX, [ESP+0C]
:00415190	PUSH	EAX
:00415191	CALL	00416320			;rutin pengolah freelance
:00415196	ADD	ESP, 04
:00415199 	ADD	EAX, ESI			;eax = serial asli dalam hexa
:0041519B	POP	ESI
:0041519C	RET

Dari rutin di atas ada dua CALL 00416320 di mana yang pertama mengolah nama kita dan di simpan di eax, lalu ditambahkan dengan konstanta yang tersimpan di esi dan disimpan hasilnya di esi. Rutin call yang kedua mengolah organisasi dan hasilnya di simpan di eax, lalu nilai yang ada di esi tadi ditambahkan ke eax dan itulah serial aslinya dalam hexadesimal. Sekarang kita lihat rumusnya dalam rutin CALL 00416320 dan kamu akan menemui rutin seperti ini :

:00416320 	PUSH	EBX
:00416321 	PUSH 	ESI
:00416322 	MOV 	ESI,[ESP+0C]
:00416326 	PUSH 	EDI
:00416327 	PUSH	EBP
:00416328 	XOR	EDI, EDI
:0041632A 	PUSH	ESI
:0041632B 	CALL	[KERNEL32!lstrlen]		;eax = panjang nama atau organisasi
:00416331 	TEST	ESI, ESI
:00416333 	JZ	00416367
:00416335		TEST	EAX, EAX
:00416337 	JZ	00416367
:00416339 	MOV	ECX, 00000000			;nolkan ecx
:0041633E 	JLE	00416367			;rumus dimulai
:00416340 	MOVSX	EBX, BYTE PTR [ECX+EAX+00425C78];konstanta string pertama
:00416348 	MOVSX	EBP, BYTE PTR [ECX+ESI]		;karakter nama atau organisasi
:0041634C		LEA	EDX, [ECX+01]			
:0041634F 	IMUL	EBX, EBP
:00416352 	MOVSX	ECX, BYTE PTR [ECX+00425CB0]	;konstanta string kedua
:00416359 	IMUL	EBX, ECX
:0041635C 	IMUL	EBX, EDX
:0041635F 	ADD	EDI, EBX
:00416361 	MOV	ECX, EDX
:00416363 	CMP	EAX, EDX			;apakah edx = panjang nama atau organisasi
:00416365 	JG	00416340			;lompat kalau ya dan rumus selesai
:00416367 	MOV	ECX, EDX
:00416369 	POP 	EBP
:0041636A 	POP	EDI
:0041636B 	POP	ESI
:0041636C 	POP	EBX
:0041636D 	RET

Nah di atas merupakan rutin pembentuk serial asli dan ada dua konstanta string yang pada offset 00425C78 dan 00425CB0 masing-masing konstanta berisi 54 karakter.

K R A K

Keygenerator program ini silahkan kamu buat, tidak sulit kok dan kalau berhasil atau menemui kesulitan silahkan email saya disertai listing program keygeneratornya atau masalah kamu dalam membuat keygenz tersebut.

Ada cara lain untuk meregistrasi program ini saat kita mendebug bisa dilakukan dengan cara seperti ini : ketika kamu tekan tombol ok dan mucul layar softice saat mau mengkrak program ini, lalu tekan tombol F12 sebanyak 3 kali dan kamu tekan F10 sampai ke offset 0040F22F dan ketik 'a' dan tekan enter, lalu ketik JZ 0040F23D dan rutin pada offset tersebut yang tadinya JNZ 0040F23D akan berubah. Lalu tekan CTRL-D untuk keluar dari layar softice dan kamu sudah teregristrasi. Mudah bukan!

Catatan

Versi sebelumnya pembuat program ini membuat proteksi jenis hard code, dan rupanya mereka sekarang mulai menyadari pentingnya proteksi yang lebih baik. Tetapi rutin pembentuk serial numbernya masih dapat dilihat dengan mudah.

BlackZ

© Juli1999