0
Tricky Serial Number

.
Software ini digunakan untuk mengsubmit Homepage kamu ke lebih dari 2000 search engine, suatu tools yang IMHO sangat berguna.
Ini aku kutip dari Helpnya :

Overview

The Internet is growing at an exponential rate, and with hundreds of millions of web pages on it the internet today, it is
very easy for your site to get lost. To navigate this mass of information, search engines are used as a tool to help
users find what they are looking for. Most Search engines will index your site for free, but they must know about it. To
do this, you need to submit your site address (URL) to each one.


There are thousands of Search engines and link directories on the internet today, and to submit your URL to each one
manually would take months of your time. SubmitWolf can accomplish this same task in minutes.

SubmitWolf is an automated submission wizard for the promotion of Web Sites on the Internet. It can list an URL with
hundreds of Search Engines and Link directories within minutes.


About this protection system

Protection Program Ini, sepintas terlihat sangat mudah, tetapi kalau tidak hati hati kamu dapat terjebak didalamnya. Seperti gue yang sempat terjebak, sebelum diberitahu oleh kakarot mengenai jebakannya.

Program ini kalau dikasih serial yang "cacad" akan jalan mulus, tetapi mengeluarkan message : Do you think it's wise using pirated blah blah blah ....

Serial yang perfek tidak akan mengeluarkan pesan demikian.

Jalankan Submit Wolf, pilih option register, ketikkan sembarang nama, dengan sembarang serial, gua pake serial "123454323". Pasang BPX di Hmemcpy, dan klik OK, teken F5, untuk membiarkan program membaca Serial, dan tekan F12 beberapa kali sampai kamu masuk ke badan program, di compie gua gua musti teken F12 sekitar 9 kali.

Kamu akan sampai disini :

:00415E35 8D94248C000000 LEA EDX,[ESP+0000008C] -->> User Name
:00415E3C 52 PUSH EDX
:00415E3D E8BE30FFFF CALL 00408F00
:00415E42 83C404 ADD ESP,04
:00415E45 8D44240C LEA EAX,[ESP+0C] -->> Serial
:00415E49 50 PUSH EAX
:00415E4A E8B130FFFF CALL 00408F00
:00415E4F 83C404 ADD ESP,04
:00415E52 8D4C240C LEA ECX,[ESP+0C]
:00415E56 8D94248C000000 LEA EDX,[ESP+0000008C]
:00415E5D 51 PUSH ECX
:00415E5E 52 PUSH EDX
:00415E5F E8FC3E0100 CALL 00429D60 -->> Sweet Function
:00415E64 83C408 ADD ESP,08
:00415E67 85C0 TEST EAX,EAX
:00415E69 7562 JNZ 00415ECD -->> Sweet Jump
:00415E6B 8D44240C LEA EAX,[ESP+0C]
:00415E6F 8D8C248C000000 LEA ECX,[ESP+0000008C]

Masuk (F8) di 00415E5F :

:00429D60 83EC30 SUB ESP,30
:00429D63 55 PUSH EBP
:00429D64 56 PUSH ESI
:00429D65 57 PUSH EDI
:00429D66 8B7C2444 MOV EDI,[ESP+44]
:00429D6A 85FF TEST EDI,EDI
:00429D6C 0F84A3010000 JZ 00429F15
:00429D72 8B6C2440 MOV EBP,[ESP+40]
:00429D76 85ED TEST EBP,EBP
:00429D78 0F8497010000 JZ 00429F15
:00429D7E 8A07 MOV AL,[EDI]
:00429D80 3C50 CMP AL,50 -->> 1st Serial = 50h = "P"
:00429D82 0F8583010000 JNZ 00429F0B -->> Bad Cracker
:00429D88 807F0134 CMP BYTE PTR [EDI+01],34 -->> 2nd Serial = 34h = "4"
:00429D8C 750C JNZ 00429D9A -->> Jika tidak sama lompat ! (Ini bukan bad cracker routine) !!
:00429D8E C7053CFC430000000000MOV DWORD PTR [0043FC3C],00000000
:00429D98 EB1C JMP 00429DB6 -->> Jika 1st&2nd Serial = P4 lompat
:00429D9A 3C50 CMP AL,50 -->> 1st Serial = 50h = "P"
:00429D9C 0F8569010000 JNZ 00429F0B -->> Bad cracker
:00429DA2 807F0145 CMP BYTE PTR [EDI+01],45 -->> 2nd Serial = 45h = "E"
:00429DA6 0F855F010000 JNZ 00429F0B -->> Bad cracker
:00429DAC C7053CFC430001000000MOV DWORD PTR [0043FC3C],00000001

Disini Jelas, bahwa Serial Asli 2 karakter pertamanya haruslah P4 / PE ...

Ganti Serial 123454323 tadi dengan P4123454323, trace lagi :

:00429DB6 83C9FF OR ECX,-01
:00429DB9 33C0 XOR EAX,EAX
:00429DBB F2AE REPNZ SCASB
:00429DBD F7D1 NOT ECX
:00429DBF 2BF9 SUB EDI,ECX
:00429DC1 8D542414 LEA EDX,[ESP+14]
:00429DC5 8BC1 MOV EAX,ECX
:00429DC7 8BF7 MOV ESI,EDI
:00429DC9 8BFA MOV EDI,EDX
:00429DCB 6A2D PUSH 2D -->> Push 2Dh = "-"
:00429DCD C1E902 SHR ECX,02
:00429DD0 F3A5 REPZ MOVSD
:00429DD2 8BC8 MOV ECX,EAX
:00429DD4 83E103 AND ECX,03
:00429DD7 F3A4 REPZ MOVSB
:00429DD9 8D4C2418 LEA ECX,[ESP+18] -->> Serial
:00429DDD 51 PUSH ECX
:00429DDE E86D290000 CALL 0042C750
:00429DE3 8BF8 MOV EDI,EAX
:00429DE5 83C408 ADD ESP,08
:00429DE8 85FF TEST EDI,EDI
:00429DEA 0F8425010000 JZ 00429F15

Rutin diatas bertujuan untuk mengecek adanya "-" dalam serial, jika tidak ada lompat (bad cracker). Gimana gua bisa tahu ? Pertama 2D di push, ini rutin yang cukup umum, kedua karena gua pernah trace kedalam Call tersebut ... :)

Ubah Serial kita menjadi P4-123454323

Lalu trace lagi ...


:00429DF0 C60700 MOV BYTE PTR [EDI],00 -->> 00 (NULL)kan "-" dlm serial
:00429DF3 8B15D4C54300 MOV EDX,[0043C5D4] -->> EDX = Constanta
:00429DF9 A0D8C54300 MOV AL,[0043C5D8] -->> AL = 0
:00429DFE 6A04 PUSH 04
:00429E00 8D4C2410 LEA ECX,[ESP+10]
:00429E04 55 PUSH EBP
:00429E05 51 PUSH ECX
:00429E06 89542418 MOV [ESP+18],EDX
:00429E0A 8844241C MOV [ESP+1C],AL
:00429E0E E8CD3A0000 CALL 0042D8E0 -->> membawa 4 karakter pertama dari User
:00429E13 8A542420 MOV DL,[ESP+20] -->> DL = karakter pertama dari Serial
:00429E17 83C40C ADD ESP,0C -->> Stack Balancing
:00429E1A 84D2 TEST DL,DL
:00429E1C 7421 JZ 00429E3F
:00429E1E 8D742414 LEA ESI,[ESP+14] -->> ESI = Serial
:00429E22 33C9 XOR ECX,ECX -->> Counter
:00429E24 80C203 ADD DL,03 -->> DL = DL + 3
:00429E27 8A440C0C MOV AL,[ECX+ESP+0C] -->> AL = Karakter pertama dari User
:00429E2B F6EA IMUL DL -->> EAX = EAX * DL
:00429E2D 88440C0C MOV [ECX+ESP+0C],AL -->> ganti 1st karakter dari User dengan lowbyte dari EAX (AL)
:00429E31 41 INC ECX -->> inc(ECX)
:00429E32 83F904 CMP ECX,04 -->> ECX = 4 ?
:00429E35 7CF0 JL 00429F27 -->> Belum ? Loop
:00429E37 8A5601 MOV DL,[ESI+01] -->> DL = 2nd karakter dari Serial
:00429E3A 46 INC ESI
:00429E3B 84D2 TEST DL,DL
:00429E3D 75E3 JNZ 00429F22 -->> Jika belum NULL, Loop dari 00429F22
:00429E3F 8A4D00 MOV CL,[EBP+00] -->> 1st karakter dari username
:00429E42 84C9 TEST CL,CL
:00429E44 7419 JZ 00429E5F
:00429E46 8BD5 MOV EDX,EBP -->> username
:00429E48 33C0 XOR EAX,EAX -->> Counter
:00429E4A 80C103 ADD CL,03 -->> CL = CL + 3
:00429E4D 304C040C XOR [EAX+ESP+0C],CL -->> XOR Encrypted 4 karakter pertama dari user dengan CL
:00429E51 40 INC EAX -->> Counter + 1
:00429E52 83F804 CMP EAX,04 -->> EAX = 4 ? Belum Loop
:00429E55 7CF6 JL 00429F4D
:00429E57 8A4A01 MOV CL,[EDX+01] -->> CL = 2nd karakter dari UserName
:00429E5A 42 INC EDX
:00429E5B 84C9 TEST CL,CL -->> NULL ?
:00429E5D 75E9 JNZ 00429F48 -->> Belum ? Loop !
:00429E5F 8B54240C MOV EDX,[ESP+0C] -->> EDX = indirect ke heavily 4 karakter dari UserName
:00429E63 85D2 TEST EDX,EDX -->> EDX = NULL
:00429E65 7D04 JGE 00429E6B -->> Engga ? Lompat !!!
:00429E67 F7DA NEG EDX
:00429E69 85D2 TEST EDX,EDX
:00429E6B 7505 JNZ 00429E72
:00429E6D BA01000000 MOV EDX,00000001
:00429E72 81FA0F270000 CMP EDX,0000270F -->> EDX = 270f ?
:00429E78 7D0D JGE 00429E87 -->> Lompat
:00429E7A 8D1492 LEA EDX,[EDX*4+EDX]
:00429E7D D1E2 SHL EDX,1
:00429E7F 81FA0F270000 CMP EDX,0000270F
:00429E85 7CF3 JL 00429F7A
:00429E87 81FA3F420F00 CMP EDX,000F423F
:00429E8D 7E19 JLE 00429EA8
:00429E8F B867666666 MOV EAX,66666667 -->> EAX = Constanta
:00429E94 F7EA IMUL EDX
:00429E96 C1FA02 SAR EDX,02
:00429E99 8BC2 MOV EAX,EDX
:00429E9B C1E81F SHR EAX,1F
:00429E9E 03D0 ADD EDX,EAX
:00429EA0 81FA3F420F00 CMP EDX,000F423F
:00429EA6 7FE7 JG 00429F8F -->> Loop sampai EDX < F423F
:00429EA8 52 PUSH EDX
:00429EA9 68D0C54300 PUSH 0043C5D0
:00429EAE 8D4C2430 LEA ECX,[ESP+30]
:00429EB2 6A14 PUSH 14
:00429EB4 51 PUSH ECX
:00429EB5 E856290000 CALL 0042C810 -->> integertostring (EDX) -->> Serial Asli setelah "-"
:00429EBA 83C410 ADD ESP,10
:00429EBD 8D7701 LEA ESI,[EDI+01] -->> Serial Palsu
:00429EC0 8D442428 LEA EAX,[ESP+28] -->> Serial Asli
:00429EC4 8A10 MOV DL,[EAX] '
:00429EC6 8ACA MOV CL,DL ' Bandingkan !!!
:00429EC8 3A16 CMP DL,[ESI] '
:00429ECA 752A JNZ 00429EF6
:00429ECC 84C9 TEST CL,CL
:00429ECE 7414 JZ 00429EE4
:00429ED0 8A5001 MOV DL,[EAX+01]
:00429ED3 8ACA MOV CL,DL
:00429ED5 3A5601 CMP DL,[ESI+01]
:00429ED8 751C JNZ 00429EF6
:00429EDA 83C002 ADD EAX,02
:00429EDD 83C602 ADD ESI,02
:00429EE0 84C9 TEST CL,CL
:00429EE2 75E0 JNZ 00429FC4
:00429EE4 33C0 XOR EAX,EAX
:00429EE6 33C9 XOR ECX,ECX
:00429EE8 85C0 TEST EAX,EAX
:00429EEA 0F94C1 SETZ CL
:00429EED 8BC1 MOV EAX,ECX
:00429EEF 5F POP EDI
:00429EF0 5E POP ESI
:00429EF1 5D POP EBP
:00429EF2 83C430 ADD ESP,30
:00429EF5 C3 RET

Dengan mudah kamu bisa dapatkan serialnya : ketikkan D EAX di 00429EC0 , kamu dapet sisa serial setelah "P4-"

Sekarang kamu harus restart Submit Wolf, kamu akan dapet messagebox : Kamu disuruh update listnya, ini normal. terus muncul lagi messageboxa, Do you think it's wise using pirated bla bla bla bla .... ? Hahh !!! Program kok bisa tahu kalau kita crack ? hmmm, tadinya gua udah mikir yang macem macem ... :) Nah, tutup lagi program SubmitWolf, lalu pasang BPX di Messageboxa , jalankan SW, kalau udah break ke SI, teken F12, terus begitu sampe kamu sampe di messageboxa nista tadi, lalu teken OK, kamu akan terlempar kembali ke SI :

:00410C4E 0FBE4802 MOVSX ECX,BYTE PTR [EAX+02]
:00410C52 8B1520CC4300 MOV EDX,[0043CC20]

:00410C58 8A044A MOV AL,[ECX*2+EDX]
:00410C5B 83E004 AND EAX,04
:00410C5E 85C0 TEST EAX,EAX
:00410C60 7513 JNZ 00410C75
:00410C62 6A30 PUSH 30
:00410C64 68BCF94300 PUSH 0043F9BC
:00410C69 68F8894300 PUSH 004389F8
:00410C6E 56 PUSH ESI
:00410C6F FF1520C54400 CALL [USER32!MessageBoxA] -->> Messageboxa terlarang :)
:00410C75 688A000000 PUSH 0000008A-->> Kita disini !!!
:00410C7A 6AFA PUSH FA


Lihat di atas Messageboxa ada Conditional Jump ? Hmmm, kalau EAX <> 0 maka program akan melewati messageboxa tadi, OK pasang BPX di 00410C4E

:00410C4E 0FBE4802 MOVSX ECX,BYTE PTR [EAX+02] -->> Ambil karakter ketiga dari Serial
:00410C52 8B1520CC4300 MOV EDX,[0043CC20] -->> Table

:00410C58 8A044A MOV AL,[ECX*2+EDX] -->> karakter 3rd * 2 + Table
:00410C5B 83E004 AND EAX,04 -->> And dengan 4
:00410C5E 85C0 TEST EAX,EAX -->> 0 ?
:00410C60 7513 JNZ 00410C75 -->> Ya, tidak lompat, maka tampilkan messageboxa

Di 00410C52 ketikkan D EDX :

:d edx
0167:0043CC2A 20 00 20 00 20 00 20 00-20 00 20 00 20 00 20 00 . . . . . . . .
0167:0043CC3A 20 00 28 00 28 00 28 00-28 00 28 00 20 00 20 00 .(.(.(.(.(. . .
0167:0043CC4A 20 00 20 00 20 00 20 00-20 00 20 00 20 00 20 00 . . . . . . . .
0167:0043CC5A 20 00 20 00 20 00 20 00-20 00 20 00 20 00 20 00 . . . . . . . .
0167:0043CC6A 48 00 10 00 10 00 10 00-10 00 10 00 10 00 10 00 H...............
0167:0043CC7A 10 00 10 00 10 00 10 00-10 00 10 00 10 00 10 00 ................
0167:0043CC8A 84 00 84 00 84 00 84 00-84 00 84 00 84 00 84 00 ................
0167:0043CC9A 84 00 84 00 10 00 10 00-10 00 10 00 10 00 10 00 ................
0167:0043CCAA 10 00 81 00 81 00 81 00-81 00 81 00 81 00 01 00 ................
0167:0043CCBA 01 00 01 00 01 00 01 00-01 00 01 00 01 00 01 00 ................
0167:0043CCCA 01 00 01 00 01 00 01 00-01 00 01 00 01 00 01 00 ................
0167:0043CCDA 01 00 01 00 01 00 10 00-10 00 10 00 10 00 10 00 ................
0167:0043CCEA 10 00 82 00 82 00 82 00-82 00 82 00 82 00 02 00 ................
0167:0043CCFA 02 00 02 00 02 00 02 00-02 00 02 00 02 00 02 00 ................
0167:0043CD0A 02 00 02 00 02 00 02 00-02 00 02 00 02 00 02 00 ................
0167:0043CD1A 02 00 02 00 02 00 10 00-10 00 10 00 10 00 20 00 .............. .

Dengan sekilas melihat gua langsung tahu, kalau di karakter 3rd *2 + table harus menunjuk kepada bagian yang gua cetak tebal, untuk mengeceknya ketikkan di SI ? 84 & 4 = 4 -->> tidak 0

Bagaimana caranya supaya program menunjuk ke sini ? mudah 0043CC8A - 0043CC2A = 60h

60h/2 = 30h = ASCII 0 , sekarang perhatikan batas terakhir 84 : 0043cc9c-43cc2a = 72h/2 = 39h = ASCII "9"

Jelas disini, karakter ketiga haruslah angka 0 sampai 9, bagaimana mungkin, bukannya itu musti "-" ? Masih inget, kalau program hanya mendeteksi "-" dalam serial ? Maka hal tersebut ngak ngaruh, jadi format serial yang bener P40-XXXXX

Kamu musti trace ulang untuk mendapatkan XXXXX.

Program Cracked. Ini ada listing keyGenz yang dibuat oleh kakarot, very interesting IMHO , and fully commented too :) Learn it for your goodness ;) :

#include
#include

long buatkunci(char*);

main(){
unsigned long kunci;
int i;
char nama[30];

/* panjang string nama > 3 */
do{
printf("Registration Name: ");
gets(nama);
if(strlen(nama)>30) nama[30]=0;
}
while(strlen(nama)<4);

kunci=buatkunci(nama);
printf("\n");

/* 0x270f = 9999 desimal */
if(kunci>0x270f)
printf("Serial Number : P49-%lu \n\n", kunci);
else
printf("Serial Number : P49-00%lu \n\n", kunci);

return 0;}

long buatkunci(char* nama){
unsigned long i=0, j=0;
unsigned long tabel[4];
unsigned long kunci=0;

/* assumsi kita memakai s/n P40-xxxxxx */
/* kalikan 4 karakter pertama dari regname masing-masing dengan 'P'+3=53h lalu masing-
masing hasilnya dikalikan lagi dengan '4'+3=37h lalu masing-masing hasilnya dikalikan lagi
dengan '0'+3=33h*/
for(i=0; i<4; i++){
tabel[i]=(nama[i]*0x53*0x37*0x33)&0xff;}

/* masing-masing hurup pada regname lengkap ditambah 3 kemudian masing-masing di XOR
dengan hasil sebelumnya*/
for(i=0; i for(j=0; j<4; j++){
tabel[j]=((nama[i]+3)^tabel[j])&0xff;}}

/* hasilnya masukkan dalam register,
misal hasil dari kalkulasi sebelumnya 14h, 23h, 3fh, b6h, maka registernya akan bernilai
b63f2314h (ingat dibalik) */
j=1; kunci=0;
for(i=0; i<4; i++){
kunci+=(tabel[i]%0x10)*j+(tabel[i]/0x10)*(j*16);
j*=256;}

/* jika nilai register = 0 */
if (kunci==0){
kunci=1;
while(kunci<=0x270f){kunci=kunci*4+kunci; kunci<<=1;}
}

/* jika nilai register lebih besar dari 2147483648 (desimal) maka negatifkan*/
if (kunci>2147483648) kunci=4294967296-kunci;

/*ambil 6 angka pertama dari kiri*/
while (kunci>0xf423f){
kunci/=10;}
return kunci;}

Source: flag eRRatum & kakarot

Bookmark and Share



0 komentar :

Posting Komentar

Silahkan tinggalkan komentar anda disini...

 
Ujie Caprone | © 2011 Blogger Template by Ujiecaprone.com