Advance Dialer 2.1 |
Softice 3.24 |
oleh
BlackZ
Pengenalan Program |
Advanced Dialer adalah salah satu alat dial-up networking yang mampu men-dial beberapa line telpon, otomatisasi koneksi internet, pencatatan pemakaian internet dan aplikasi lainnya. Dengan software ini koneksi internet akan lebih mudah dengan kemampuannya yang mampu mencatat jam pemakaian yang juga dapat di-lihat melalui grafik. Juga dilengkapi dengan kemampuan ping yang dapat mem-ping ISP anda sehingga mengurangi koneksi yang putus.
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 cukup mudah, dimana hasil perhitungan dalam heksadesimal merupakan serial numbernya.
Essay |
Jalankan program Advance Dialer
2.1 dan klik ganda ikon program ini di tray menu lalu pilih menu
Regiser - Register Key dan anda akan di minta mengisi nama dan
kode registrasi. Coba tulis dulu dengan :
Name : BlackZ
Registration Code : 123456
Sekarang kita jalankan softice (Ctrl-D) lalu ketik 'bpx
hmemcpy'. Keluar lagi dari softice dan klik tombol OK dan kita
akan masuk lagi ke layar softice. Tekan F12 sebanyak 12 kali dan
anda akan mendapatkanrutin seperti ini :
:004B81F6 CALL 004325F0 :004B81FB MOV EAX, [EBP-0214] ;nama kita :004B8201 LEA EDX, [EBP-0210] :004B8207 CALL 0046C298 ;masuk ke sini :004B820C MOV EAX, [EBP-0210] ;serial asli
kamu bisa lagnsung melihat serial number asli hasil perhitungan nama yang kamu masukkan pada dialog box registrasi dengan menekan F10 terus sampai melewati alamat 004B820C lalu ketikan d eax maka kamu akan melihat serial asli pada isi register eax. Tapi kita kan mau membuat key generator, jadi kita lanjut saja. Nah kita masuk ke rutin CALL 0046C298 (F8) dan tekan F10 sebanyak 15 kali maka kamu akan melihat rutin seperti ini :
:0046C2C5 LEA EAX, [EBP-08] :0046C2C8 MOV EDX, 0046C374 ;berisi string "Adv Dialer v. 1.1." :0046C2CD CALL 00403E84 ;hitung panjang string :0046C2D2 MOV EAX, [EBP-08] ;nama kita digabung dengan string di atas :0046C2D5 CALL 00403E7C ;hitung panjang string gabungan :0046C2DA PUSH EAX :0046C2DB LEA EAX, [EBP-08] :0046C2DE CALL 0040404C ;masuk ke sini :0046C2E3 POP EDX :0046C2E4 CALL 004522D8 ;rutin mengenerate serial :0046C2E9 MOV [EBP-04], EAX ;nilai eax = serial asli yang belum tersusun :0046C2EC LEA EAX, [EBP-10] :0046C2EF CALL 00403C00 :0046C2F4 MOV DWORD PTR [EBP-14], 00000001 :0046C2FB LEA EDX, [EBP-0118] :0046C301 MOV EAX, [EBP-14] :0046C304 MOV AL, [EAX+EBP-05] :0046C308 CALL 00451D0C :0046C30D LEA EDX, [EBP-0118] :0046C313 LEA EAX, [EBP-18] :0046C316 CALL 00403E20 :0046C31B LEA EAX, [EBP-10] :0046C31E MOV EDX, [EBP-18] :0046C321 CALL 00403E84 ;rutin penyusun serial asli :0046C326 INC DWORD PTR [EBP-14] :0046C329 CMP DWORD PTR [EBP-14], 05 :0046C32D JNZ 0046C2FB :0046C32F MOV EAX, [EBP-0C]
dari rutin diatas tampaknya kita harus masuk ke rutin CALL 004522D8 untuk
mendapatkan rumusnya. Hasil yang akan didapat akan berupa
angka-angka serial asli yang masih belum terusun. Okey kita masuk
ke rutin itu dan kita akan menemukan rutin seperti dibawah ini,
rutin ini merupakan rumus yang kita cari :
:004522D8 PUSH EBP :004522D9 MOV EBP, ESP :004522DB ADD ESP, -1C :004522DE MOV [EBP-12], DX ;panjang string gabungan :004522E2 MOV [EBP-10], EAX ;string gabungan :004522E5 MOV DWORD PTR [EBP-02], 0000 :004522EB MOV DWORD PTR [EBP-04], 0000 :004522F1 MOVZX EAX, WORD PTR [EBP-12] :004522F5 MOV [EBP-18], EAX :004522F8 MOV AX, [EBP-18] :004522FC TEST AX, AX :004522FF JBE 00452355 :00452301 MOV [EBP-1A], AX :00452305 MOV WORD PTR [EBP-06], 0001 :0045230B MOVZX EAX, WORD PTR [EBP-06] ;counter eax :0045230F MOV EDX, [EBP-10] ;string gabungan :00452312 MOV AL, [EAX+EDX-01] :00452316 MOV [EBP-7], AL :00452319 PUSH AX :0045231B PUSH BX :0045231D PUSH CX :0045231F PUSH DX :00452321 MOV DX, [EBP-02] ;dx = 0 :00452325 MOV BX, [EBP-04] ;bx = 0 :00452329 MOV CX, [EBP-06] ;cx = 1 :0045232D XOR AX, AX ;ax = 0 :00452330 MOV AL, [EBP-07] ;proses per karakter :00452333 XOR DX, AX ;dx = dx xor ax :00452336 MUL CL ;ax = al * cl :00452338 ADD BX, AL ;bx = bx + al :0045233B MOV [EBP-02], DX ;simpan dx :00452343 POP DX :00452345 POP CX :00452347 POP BX :00452349 POP AX :0045234B INC WORD PTR [EBP-06] ;naikkan counter :0045234F DEC WORD PTR [EBP-1A] :00452353 JNZ 0045230B ;ulangi proses u/ karakter selanjutnya :00452355 MOV AX, [EBP-04] ;4 angka serial asli yg belum tersusun :00452359 MOV [EBP-0C], AX :0045235D MOV AX, [EBP-02] ;4 lagi angka serial asli :00452361 MOV [EBP-0A], AX :00452365 MOV EAX, [EBP-0C] ;gabungkan menjadi 8 angka :00452368 MOV ESP, EBP :0045236A POP EBP :0045236B RET
Nah gabungan 8 angka pada register EAX di alamat 00452365 merupakan angka-angka serial asli yang belum tersusun. Tapi kita tidak memerlukan rutin penyusunnya, alasannya kamu baca di 'catatan' di bagian bawah.
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 8 angka. Untuk nama "BlackZ" serial yang saya dapatkan adalah 47510100.
Uses Crt;
Const namatetap = 'Adv Dialer v. 1.1.';
Var nama : string[100];
serial : array[0..8] of longint;
ax,bx,cx,dx,i : longint;
seri : array[0..8] of string;
l,m : integer;
Procedure konv_des_ke_hexa(var j,k : integer);
begin
for i := j downto k do
begin
serial[i] := serial[0] mod 16;
if serial[i]= 10 then seri[i] := 'A' else
if serial[i]= 11 then seri[i] := 'B' else
if serial[i]= 12 then seri[i] := 'C' else
if serial[i]= 13 then seri[i] := 'D' else
if serial[i]= 14 then seri[i] := 'E' else
if serial[i]= 15 then seri[i] := 'F' else
str(serial[i],seri[i]);
serial[0] := serial[0] div 16;
end;
end;
Begin
clrscr;
writeln;writeln;writeln;writeln;
writeln(' Program perhitungan serial number');
writeln(' **** Advance Dialer 2.1 ****');
writeln;writeln;writeln;
write (' Masukkan nama anda : ');read(nama);
for i := 1 to length(nama) do nama[i] := upcase(nama[i]);
nama := nama + namatetap;
dx := 0;
bx := 0;
cx := 1;
for i := 1 to length(nama) do
begin
ax := ord(nama[i]);
dx := dx xor ax;
ax := ax * cx;
bx := bx + ax;
inc (cx);
end;
serial[0] := bx;
l := 8; m := 5;
konv_des_ke_hexa(l,m);
seri[1] := seri[7];
seri[2] := seri[8];
seri[3] := seri[5];
seri[4] := seri[6];
if (dx <= 9) then
begin
for i := 5 to 8 do seri[i] := '0';
seri[6] := sisadx;
end;
if (dx<=255) and (dx>9) then
begin
for i := 5 to 8 do seri[i] := '0';
serial[0] := dx;
l := 6; m := 5;
konv_des_ke_hexa(l,m);
end;
write(' Serial : ');
for i := 1 to 8 do write(seri[i]);
writeln;writeln;writeln;
write(' *** blackZ@copyright-Juni 1999 ***');
readkey;
end.
Catatan |
Nama yang kita masukkan akan digabungkan dengan string 'Adv Dialer v. 1.1.' tetapi nama kita dalam huruf kapital. Jadi kalau nama saya dimasukkan akan menjadi 'BLAKCZAdv Dialer v. 1.1.' Program ini memproses string gabungan tersebut dihasilkan 4 angka dalam hexadesimal (misalkan urutannya KLMN) digabung dengan 4 angka nilai dx dalam hexadesimal (misalkan urutannya OPQR) sebagai sisa xor dari dx dan ax. Jadi total serial number adalah 8 angka. Nah urutan serial number yang benar adalah MNKLQROP. Hal yang penting adalah bahwa nilai O dan P adalah nol. Why ?
© Juni1999