A Day In The Life 1.5

http://www.cartoonlogic.com/aditl/

Wdasm 8.9

oleh

BlackZ

 

Pengenalan Program

A Day in the Life, salah satu software diari multimedia yang dapat merekam data personal anda. Anda dapat menulis segala pikiran anda ke dalam diari ini, mendukung penggunaan gambar maupun suara. Setiap pengguna dapat men-setting konfigurasi-nya sendiri dan untuk perlindungan anda dapat menggunakan proteksi password yang dapat mengunci data anda.

Tutorial ini melakukan pencarian S/N yang tepat agar 'nag message' tidak muncul pada saat memulai program.

Essay

Sebelum memulai kita tes dulu bagaimana tingkah laku program ini dalam pengisian 'register code' nya. Jalankan program A Day in The Life 1.5 lalu pilih menu Help dan klik menu Register... dan anda akan di minta mengisi nama dan kode registrasi. Coba dulu dengan :

	Name     			: BlackZ
	Registration Code		: 123456

akan muncul pesan error yang bertuliskan "Invalid registration code!" ingat pesan itu.

Sekarang kita jalankan Wdasm, lalu pilih file ADITL.EXE untuk di disassemble. Lalu kita cari kata-kata pesan error tadi, maka anda akan mendapatkannya pada rutin bagian ini :

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0049C736(C), :0049C758(C)|
:0049C768 6A00		push	00000000
:0049C76A 668B0DECC74900	mov 	cx, word ptr [0049C7EC]
:0049C771 B201		mov 	dl, 01

* Possible StringData Ref from Code Obj ->"Invalid registration code!"
|
:0049C773 B8F8C74900 	mov 	eax, 0049C7F8
:0049C778 E8631FFAFF 	call 	0043E6E0
:0049C77D 8B45FC 		mov 	eax, dword ptr [ebp-04]
:0049C780 8B8004020000 	mov 	eax, dword ptr [eax+00000204]
:0049C786 8B10 		mov 	edx, dword ptr [eax]
:0049C788 FF9294000000 	call 	dword ptr [edx+00000094]
:0049C78E 8B45FC		mov 	eax, dword ptr [ebp-04]
:0049C791 8B8008020000 	mov 	eax, dword ptr [eax+00000208]
:0049C797 8B10 		mov 	edx, dword ptr [eax]
:0049C799 FF9294000000 	call 	dword ptr [edx+00000094]

kita lihat bahwa ada dua alamat yang akan memanggil rutin ini yaitu 0049C736 dan 0049C758... nah kita menuju kedua alamat itu dan ada pada rutin ini :

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049C708(C)
|
:0049C70D 8D55F4 	lea 	edx, dword ptr [ebp-0C]

* Possible StringData Ref from Code Obj ->"ClaDiTL"
|
:0049C710 B8E4C74900 	mov 	eax, 0049C7E4
:0049C715 E84A78F6FF 	call 	00403F64
:0049C71A 8D55EC 		lea 	edx, dword ptr [ebp-14]
:0049C71D 8B45FC 		mov 	eax, dword ptr [ebp-04]
:0049C720 8B8008020000 	mov 	eax, dword ptr [eax+00000208]
:0049C726 E80934F8FF 	call 	0041FB34
:0049C72B 8B55EC 		mov 	edx, dword ptr [ebp-14]	; serial kita (palsu)
:0049C72E 8B45F4 		mov 	eax, dword ptr [ebp-0C]	; serial asli 
:0049C731 E8B276F6FF 	call 	00403DE8 			; pembanding serial asli palsu. 
:0049C736 7530 		jne 	0049C768 			; lompat kalau tidak sama
:0049C738 8D55EC 		lea 	edx, dword ptr [ebp-14]
:0049C73B 8B45FC 		mov 	eax, dword ptr [ebp-04]
:0049C73E 8B8008020000 	mov 	eax, dword ptr [eax+00000208]
:0049C744 E8EB33F8FF 	call 	0041FB34
:0049C749 8B55EC 		mov 	edx, dword ptr [ebp-14]

* Possible StringData Ref from Code Obj ->"ClaDiTL"
|
:0049C74C B8E4C74900 	mov 	eax, 0049C7E4
:0049C751 E86A78F6FF 	call 	00403FC0
:0049C756 85C0 		test 	eax, eax
:0049C758 7E0E 		jle 	0049C768 
:0049C75A A1D0964A00 	mov 	eax, dword ptr [004A96D0]
:0049C75F 8B00 		mov 	eax, dword ptr [eax]
:0049C761 E8929C0000 	call 	004A63F8
:0049C766 EB37 		jmp 	0049C79F

kita trace sampai rutin call 00403DE8, lalu lihat isi register edx dan eax, ternyata register edx menyimpan serial kita dan register eax berisi susunan string. Kalau kita lihat pada rutin di atas terdapat strin aneh "ClaDiTL", dan jangan terkecoh karena bila kita masukkan string itu registrasi belum berhasil. Nah kita coba masuk ke rutin call 00403DE8 (tekan F8), maka kita akan dapatkan rutin seperti ini :

:00403DE8 53 		push 	ebx
:00403DE9 56 		push 	esi
:00403DEA 57 		push 	edi
:00403DEB 89C6 		mov 	esi, eax			;serial asli
:00403DED 89D7 		mov 	edi, edx 			;serial kita
:00403DEF 39D0 		cmp 	eax, edx 			;bandingkan serial asli dan serial kita
:00403DF1 0F848F000000 	je 	00403E86
:00403DF7 85F6 		test 	esi, esi
:00403DF9 7468 		je 	00403E63
:00403DFB 85FF 		test 	edi, edi
:00403DFD 746B 		je 	00403E6A
:00403DFF 8B46FC 		mov 	eax, dword ptr [esi-04]
:00403E02 8B57FC 		mov 	edx, dword ptr [edi-04]
:00403E05 29D0 		sub 	eax, edx
:00403E07 7702 		ja 	00403E0B
:00403E09 01C2 		add 	edx, eax
yah dengan melihat isi register eax dan edx kita sudah mendapatkan serial number yang asli, selesai !!!

K R A K

Program ini hanya memliki satu serial number dan tidak memperdulikan nama yang dimasukkan. Nah ternyata string aneh yang kita lihat pada rutin di atas yaitu "ClaDiTL" merupakan bagian serial number keseluruhan. Rupanya program memiliki dua string B-245263470B dan ClaDiTL yang kemudian digabungkan. Apa maksudnya ya ? mau mengecoh ?

Ini yang didapatkan dari proses pencarian di atas :

Name 			: <terserah>
Registration Code		: B-245ClaDiTL263470B

Catatan

Nggak ada nih !

BlackZ

© Juni1999