FileSplit 2.1 |
Softice 3.24 |
oleh
BlackZ
Pengenalan Program |
Ini yang saya kutip dari menu helpnya :
FileSplit is a
utility to split large files into smaller files so that they can
be easily copied to floppy disks or transferred via e-mail. Files
can be splitting directly from Windows Explorer by right clicking
on any file and selecting Split File.
Features:
· Easy to use interface and fast 32-bit file splitting.
· Batch file generation for users who dont own
FileSplit.
· Preserves all file information including file time, date, and
attributes.
· Calculates CRC signature to detect file corruption when
merging files.
· Can split multiple files in one operation.
· Files split with FileSplit are compatible with
Splitty and MasterSplitter
Tutorial ini melakukan pencarian S/N yang tepat sesuai dengan nama yang dimasukkan di dalam kotak registrasi. Software ini merupakan program yang berfungsi penuh. Jika kita meregristasikan program ini dengan serial yang benar maka nama kita akan muncul di dalam kotak dialog 'About'.
Essay |
Jalankan program FileSplit 2.1
lalu klik menu 'About' lalu pilih menu 'Enter Registration Code' dan kamu 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 getdlgitemtexta'. Keluar lagi dari
softice (Ctrl-D) dan klik tombol OK dan kita akan masuk lagi ke
layar softice. Tekan F12 sebanyak 2 kali dan anda akan sampai ke
rutin seperti ini :
:00404F05 CALL ESI :00404F07 LEA EAX, [ESP+14] :00404F0B LEA ECX, [ESP+18] :00404F0F PUSH EAX :00404F10 LEA EDX, [ESP+20] :00404F14 PUSH ECX :00404F15 PUSH EDX :00404F16 LEA EAX, [ESP+00000130] ;serial kita :00404F1D PUSH 00417AE4 :00404F22 PUSH EAX :00404F23 CALL 00409C80 ;rutin memeriksa jumlah serial kita :00404F28 ADD ESP, 14 :00404F2B CMP EAX, 03 ;apakah serial kita ada 3 ? :00404F2E JZ 00404F34 ;lompat kalau ya dan serial kita di proses :00404F30 XOR EAX, EAX :00404F32 JMP 00404F91 :00404F34 MOV ECX, [ESP+1C] ;ecx = serial ke-1 dalam hexa :00404F38 XOR EDI, EDI ;nol-kan edi :00404F3A XOR EDX, EDX ;nol-kan edx :00404F3C LEA EAX, [ECX+00000FAC] ;eax = serial ke-1 + FACh :00404F42 MOV CL, [ESP+24] ;[esp+24] = nama kita :00404F46 TEST CL, CL ;apakah karakter nama sudah habis ? :00404F48 JZ 00404F7B ;lompat jika ya. :00404F4A MOV ESI, [ESP+18] ;serial ke-2 :00404F4E MOV EBP, EAX ;ebp = eax... rumus dimulai di sini :00404F50 AND EBP, 00004000 :00404F56 CMP BP, 4000 :00404F5B JZ 00404F61 :00404F5D ADD EAX, EAX :00404F5F JMP 00404F6A :00404F61 AND EAX, 00003FFF :00404F66 SHL EAX, 1 :00404F68 OR AL, 1 :00404F6A MOVSX CX, CL :00404F6E XOR EAX, ESI :00404F70 XOR EAX, ECX ;rumus berakhir di sini :00404F72 MOV CL, [EDX+ESP+25] ;cl = kode ascii karakter nama kita :00404F76 INC EDX ;edx di tambah 1 :00404F77 TEST CL, CL ;apakah karakter nama sudah selesai :00404F79 JNZ 00404F4E ;lompat jika masih ada :00404F7B MOV ECX, [ESP+14] ;serial ke-3 kita :00404F7F MOVSX EAX, AX ;serial ke-3 asli :00404F82 CMP EAX, ECX ;bandingkan serial ke-3 kita dengan yg asli :00404F84 JNZ 00404F8F ;lompat jika salah
Hmmm... kalo kamu bisa membaca rutin-rutin ini
dapat disimpulkan bahwa serial ke-1 dan ke-2 bisa berisi apa saja
sedangkan serial ke-3 merupakan hasil pengolahan nama, serial
ke-1 dan ke-2. Nah kalau kamu mengisi nama dan serial number
seperti yang saya contohkan di awal maka nilai dari eax pada
offset 00404F2B adalah 1. Nah kalau kita masuk ke rutin yang
memanggil call pada offset 00404F23 yaitu CALL 00409C80 maka
kamu akan menemukan rutin yang mengecek bahwa serial number harus
3 buah yang dipisahkan dengan karakter '-'. mari kita
masuk ke CALL 00409C80 dan
kamu akan melihat rutin seperti ini :
:00409C7F CC INT 3 :00409C80 SUB ESP, 20 :00409C83 PUSH EDI :00409C84 MOV EDI, [ESP+28] :00409C88 OR ECX, -01 :00409C8B XOR EAX, EAX :00409C8D MOV [ESP+0C], EDI :00409C91 MOV [ESP+04], EDI :00409C95 REPNZ SCASB :00409C97 NOT ECX :00409C99 DEC ECX :00409C9A LEA EAX, [ESP+30] :00409C9E MOV [ESP+08], ECX :00409CA2 MOV ECX, [ESP+2C] ;coba kamu ketik d ecx :00409CA6 PUSH EAX :00409CA7 LEA EDX, [ESP+08] :00409CAB PUSH ECX :00409CAC PUSH EDX :00409CAD MOV DWORD PTR [ESP+1C], 00000049 :00409CB5 CALL 0040B840 ;disini dicek apakah ada 3 serial ? :00409CBA ADD ESP, 0C :00409CBD POP EDI :00409CBE ADD ESP, 20 :00409CC1 RET
Nah coba kamu d ecx saat kamu sudah mentrace sampai ke offset 00409CA6. Kamu akan melihat seperti ini :
:00417AE4 25 64 2D 25 64 2D 25 64-00 00 00 00 43 6F 64 65 %d-%d-%d....Code
Nah... kamu lihat ada string %d-%d-%d. Itu berarti ada tiga serial dengan format serial1-serial2-serial3 dan dipisahkan oleh karakter '-'. Karena itu saya keluar dari softice dan mengulang isian serial number saya seperti dibawah ini dan saya trace ulang program ini sampai saya berhasil mendapatkan rumus key generatornya :
Name : BlackZ Registration Code : 1234-12345-123456
Nah dibawah ini key generatornya dalam pascal. Seperti biasa kalau kamu bisa membuatnya dalam bahasa pemrograman yang lain, tolong donk kirim ke saya. Thanks.
K R A K |
Program ini menggunakan 3 serial number yang dipisahkan dengan karakter '-', nah disini dua serial pertama bisa apa saja. Untuk keygen yang saya buat saya tetapkan serial pertama = 12345 dan serial kedua = 67890, jadi formatnya seperti ini 12345-67890-xxxxx. Nah dalam program ini serial pertama dan serial kedua dikalkulasi dengan kode ascii user name yang kita masukkan. Kemudian hasilnya adalah serial number kteiga. Untuk nama "BlackZ" serial yang saya dapatkan adalah 12345-67890-8119.
Uses Crt;
Var nama : string[100];
eax,ebx,ecx,edx,edi,esi,ebp : longint;
i,j,exa,al,al1,al3,al2,al4,bil : longint;
serial1, serial2,serial3 : longint;
hex : string;
Begin
clrscr;
writeln;writeln;writeln;writeln;
writeln(' Program perhitungan serial number');
writeln(' **** FileSplit 2.1 ****');
writeln;writeln;writeln;
write (' Masukkan nama anda : ');read(nama);
edi := 0;
edx := 0;
serial1 := 12345;
serial2 := 67890;
eax := serial1;
esi := serial2;
eax := eax + $FAC;
for i := 1 to length(nama) do
begin
ebp := eax;
ebp := ebp and $4000;
if ebp = $4000 then
begin
eax := eax and $3FFF;
eax := eax shl 1;
exa := eax;
bil := eax div 16;
al1 := eax mod 16;
al2 := bil mod 16;
al2 := al2 * 16;
al := al1 + al2;
eax := exa - al;
al := al or 1;
eax := eax + al;
end
else
eax := eax + eax;
eax := eax xor esi;
eax := eax xor ord(nama[i]);
{dibawah ini rutin yang dalam assembly sama dengan mov eax,ax}
al1 := eax mod 16;
eax := eax div 16;
al2 := eax mod 16;
eax := eax div 16;
al3 := eax mod 16;
eax := eax div 16;
al4 := eax mod 16;
eax := al1 + (al2*16) + (al3*256) + (al4*256*16);
{eax pada rutin terakhir merupakan hasil dari instruski mov eax,ax}
end;
write(' Kode Registrasi Anda : ',serial1,'-',serial2,'-',eax);
writeln;writeln;writeln;
write(' *** BlackZ@Copyright-Juli 1999 ***');
readkey;
End.
Catatan |
Nggak susah kan ?
© Juli1999