4
Membuat Key-Generator

.
Key generator adalah program crack yang dibuat khusus untuk mengkalkulasi registration code, dari misalnya, nama kita gitchuuu !

target :
Dekstop Themes 1.78 (http://www.lss.com.au)

Tools :
SoftIce 3.x
Borland Turbo Assembly (Jika mau bikin key generator).


Desktop Themes 1.78 adalah program keren yang gedenya ngak nyampe 500 kb untuk install themes themes favorit kamu. Buat apa coba nginstall Microsoft Plus, yang gedenya bermega mega, cuman buat masang themes. Tapi ngak cuman itu. Program ini pokoknya bener bener kembaran dari ms Plus! cuman ditulis dengan "bright" programmer, jadi jauh lebih kecil ukurannya :)

Nah, kalau kamu jalankan programnya, coba klik di Edit Themes, Ada registration Dialog disana. Program akan jalan, bila kita klik Ok. Registered User ngak akan dapet dialog kaya gini, walau begitu program ini tetap akan berjalan full, kecuali dialog boxnya itu yang sedikit mengganggu.

Ok, pasang breakpoint di tempat biasanya program ngambil serial. "BPX GetDLGitemTexTa" dan "BPX getWindowTexTa". Isikan nama "Free User" , tanpa kutip. Isikan "123454321" untuk serial number. Ok, sekarang boleh pencet enter, kamu kembali ke SI. Rupanya GetDlgItemtexta, yang beruntung kali ini. Tekan F5 karena sekarang program baru membaca user name, lalu tekan F12 untuk kembali ke badan program. Kamu akan mendarat disini :

:00409EF2 FFD6 call esi "Call User32|Getdlgitemtexta"

:00409EF4 6814574200 push 00425714 "kamu disini, coy !"
:00409EF9 8D8DC0FDFFFF lea ecx, dword ptr [ebp+FFFFFDC0]
:00409EFF E84292FFFF call 00403146 "ngak penting"
:00409F04 807DC400 cmp byte ptr [ebp-3C], 00 "Periksa apa udah dimasukin user name ?"
:00409F08 7414 je 00409F1E "Go to Hell, kalau belum"
:00409F0A 8D45C4 lea eax, dword ptr [ebp-3C] "eax = offset user name, kalau kamu ketik D EAX, setelah trace disini, akan terlihat username kamu"
:00409F0D 8D8DC0FDFFFF lea ecx, dword ptr [ebp+FFFFFDC0]
:00409F13 50 push eax

:00409F14 680C574200 push 0042570C
:00409F19 E81397FFFF call 00403631 "Call yang ngak penting"

:00409F1E 807DEC00 cmp byte ptr [ebp-14], 00 "Periksa udah dimasukin reg key, belon ?"
:00409F22 7414 je 00409F38 "lanjutkan kalau udah"
:00409F24 8D45EC lea eax, dword ptr [ebp-14] "eax = offset reg key, teken d abis trace disini, akan terlihat reg key kamu"
:00409F27 8D8DC0FDFFFF lea ecx, dword ptr [ebp+FFFFFDC0]
:00409F2D 50 push eax

:00409F2E 6804574200 push 00425704
:00409F33 E8F996FFFF call 00403631 "ngak penting, coy !"

:00409F38 57 push edi
:00409F39 E86CA9FFFF call 004048AA "very Important Call !"
:00409F3E 85C0 test eax, eax "the famous test"
:00409F40 59 pop ecx
:00409F41 0F84B2000000 je 00409FF9 "loncat jika registrasi salah"
:00409F47 6A00 push 00000000

:00409F49 68C0504200 push 004250C0

:00409F4E 68AC6B4200 push 00426BAC
:00409F53 53 push ebx

Perhatikan Call pertama, dan kedua. Call tsb gua tandain ngak penting ! Kenapa gua tahu ? Begini, ini adalah prinsip assembly, sebelum memanggil(call) suatu fungsi data harus dipush terlebih dahulu ke dalam stack. Dengan memberikan perintah "d ..." sebelum call, gua tahu bahwa data yang dipush, bukanlah data berharga seperti user name dan key kita :). Tapi kalau kamu belum yakin, kamu bisa trace satu satu, seperti gua. Call tsb sepertinya mempersiapkan di registry untuk mencatat nama dan reg code, jika benar.

Perhatikan Call pada offset 00409f39 ! Call ini adalah Call yang sangat penting, dia akan memberikan nilai pada EAX(Accumulator Register) = 0, jika kondisi salah (password tidak cocok dengan username, dengan kata lain password salah !), dan akan memberikan Eax = 1 jika benar. Perhatikan Test sesudahnya, test adalah meng"AND" kan suatu variabel, atau register, atau apa saja, tanpa merubah nilai dari masing masing variabel/ data/ register tsb. Lihat sesudah POP ecx, ada lompat bersyarat, ini akan lompat jika reg code salah.

Kamu sudah bisa mempatch pada lompat bersyarat tsb, (mungkin dengan merubahnya menjadi nop ?, entahlah banyak cara tapi gua belum coba). Tapi kita disini mo' belajar kan ? Kita akan me"rasa"kan code code assembly ini lebih dalam. Trace ke dalam Call di offset 00409F39 tsb ! Caranya, jika selama ini anda menekan F10 (trace), maka sekarang ketika pointer sedang berada di offset 00409F39 tsb, tekan F8, untuk masuk kedalam Call tsb, kamu akan berada disini :

:004048AA 55 push ebp
:004048AB 8BEC mov ebp, esp
:004048AD 81EC48020000 sub esp, 00000248
:004048B3 8B4508 mov eax, dword ptr [ebp+08]
:004048B6 53 push ebx
:004048B7 56 push esi
:004048B8 57 push edi
:004048B9 80A04C09000000 and byte ptr [eax+0000094C], 00
:004048C0 8DB04C090000 lea esi, dword ptr [eax+0000094C]

Sampai sini program akan mempersiapkan penulisan key pada registry.

:004048C6 6814574200 push 00425714
:004048CB 8D8DB8FDFFFF lea ecx, dword ptr [ebp+FFFFFDB8]
:004048D1 C745B802000080 mov [ebp-48], 80000002
:004048D8 C745FC28000000 mov [ebp-04], 00000028
:004048DF C745F814000000 mov [ebp-08], 00000014
:004048E6 33FF xor edi, edi
:004048E8 E859E8FFFF call 00403146
:004048ED 8D45FC lea eax, dword ptr [ebp-04]
:004048F0 8D8DB8FDFFFF lea ecx, dword ptr [ebp+FFFFFDB8]
:004048F6 50 push eax
:004048F7 8D45D0 lea eax, dword ptr [ebp-30]
:004048FA 50 push eax

Persiapkan penulisan Regname, pada registry :

:004048FB 680C574200 push 0042570C
:00404900 E8B0EDFFFF call 004036B5
:00404905 85C0 test eax, eax "Sudah dimasukkan regName ?"
:00404907 0F84A5000000 je 004049B2 " Go 2 Hell, jika belum !"
:0040490D 8D45F8 lea eax, dword ptr [ebp-08]
:00404910 8D8DB8FDFFFF lea ecx, dword ptr [ebp+FFFFFDB8]
:00404916 50 push eax
:00404917 8D45BC lea eax, dword ptr [ebp-44]
:0040491A 50 push eax

Persiapkan pernulisan regcode pada registry :
|
:0040491B 6804574200 push 00425704
:00404920 E890EDFFFF call 004036B5
:00404925 85C0 test eax, eax " Apa udah dimasukkan regcode ?"
:00404927 0F8485000000 je 004049B2 "cabut jika belum !"
:0040492D 8D45D0 lea eax, dword ptr [ebp-30]

Lihat apakah user name = "RHooD" , tanpa kutip :

:00404930 68FC564200 push 004256FC
:00404935 50 push eax
:00404936 E855E60100 call 00422F90 " Apakah user name = "RHooD" ?"
:0040493B 59 pop ecx
:0040493C 85C0 test eax, eax " jika ya lompat !"
:0040493E 59 pop ecx
:0040493F 7471 je 004049B2
:00404941 8D45D0 lea eax, dword ptr [ebp-30]

Periksa apakah user name = "romeo", tanpa kutip :

:00404944 68F4564200 push 004256F4
:00404949 50 push eax
:0040494A E841E60100 call 00422F90 " periksa apakah user name = "romeo" ? "
:0040494F 59 pop ecx
:00404950 85C0 test eax, eax " Ok, lompat kalau benar !"
:00404952 59 pop ecx
:00404953 745D je 004049B2
:00404955 8D45D0 lea eax, dword ptr [ebp-30]

Periksa apakah user name adalah "fACTOR '98" :

:00404958 68E8564200 push 004256E8
:0040495D 50 push eax
:0040495E E82DE60100 call 00422F90 " Apa username = fa... ?"
:00404963 59 pop ecx
:00404964 85C0 test eax, eax
:00404966 59 pop ecx
:00404967 7449 je 004049B2 " jika ya lompat !"
:00404969 8B4DFC mov ecx, dword ptr [ebp-04]
:0040496C 33C0 xor eax, eax "Perhatikan ini, eax = 0"
:0040496E 49 dec ecx "ecx = panjang user name, dalam hal ini 9 !"
:0040496F 85C9 test ecx, ecx
:00404971 7617 jbe 0040498A

Ok, lihat diatas, program akan memeriksa apakah sudah dimasukkan username, regcode, dan diperiksa jika username = nama nama cracker terkenal diatas (menarik ya ?), jika ya maka program tidak perlu lagi mencari kode, tapi kamu langsung ditendang keluar !

Sekarang perhatikan baik baik !!! Ini adalah jantung pertahanan program ini, pusatkan konsentrasi !!! :

:00404973 0FBE5405D0 movsx edx, byte ptr [ebp+eax-30]
"edx = kode ascii dari huruf depan nama kita, dalam hal ini adalah F "
"Jika kamu memberikan perintah, setelah offset ini ditrace, "? edx", tanpa kutip seperti biasa, maka akan keluar kode ascii dalam hexa, lalu kode ascii dalam decimal, lalu hurufnya "

:00404978 8BD8 mov ebx, eax "ebx = eax , perhatikan pada offset 00404969 !, Eax akan digunakan sebagai counter !"
:0040497A 83E301 and ebx, 00000001 "AND EBX dengan 1"
:0040497D 43 inc ebx " ebx = ebx+1"
:0040497E 0FAFD3 imul edx, ebx "edx=edx*ebx"
:00404981 03D0 add edx, eax "edx=eax + edx"
:00404983 03FA add edi, edx "edi=edi+edx"
:00404985 40 inc eax "eax=eax+1"
:00404986 3BC1 cmp eax, ecx " eax = 9 (panjang regname) ?"
:00404988 72E9 jb 00404973 " Jika belum lompat kembali ke 00404973"

perhatikan baik baik looping diatas, setelah eax = 9, maka edi akan berisi suatu nilai dalam hexa, yang didapat dari hasil olahan regname kita !


:0040498A 81F704446482 xor edi, 82644404 "eXlusif Or Edi, dengan 82644404"

Hasil dari EDI di XOR dengan konstanta(nilai tetap), yakni 82644404h

:00404990 7D02 jge 00404994
:00404992 F7DF neg edi "negatifkan nilai tsb"


:00404994 8D45BC lea eax, dword ptr [ebp-44] "eax = regcode"

:00404997 50 push eax " dorong eax ke stack"

:00404998 E8D34A0100 call 00419470 "Call ini akan merubah regcode kita dari string data, ke numerik data !"

Perhatikan baik baik ! RegCode kita yakni 123454321, dimasukkan dengan tipe data string kan ? Nah, sedangkan kita tahu bahwa hasil edi, yakni manipulasi dari regname kita, adalah data numerik. Tidak mungkin membandingkan numerik dengan string, karena itu regcode kita dirubah dulu menjadi data numerik. Darimana gua tahu kalau call tsb merubah string -> numerik ?, Ya, dengan ditrace tekan F8, ketika pointer sedang berada di offset Call tsb.

Setelah Call ini dieksekusi, eax akan berisi NILAI REGNUM KITA dalam bentuk NUMERIK, tekan "? eax" maka akan terlihat di command line : "0123454321, dalam hex" lalu " 0123454321(decimal)", dan kode ascii.

:0040499D 3BF8 cmp edi, eax

Bandingkan edi, yang berisi hasil manipulasi program dari regname, dengan kode yang kita masukkan(dalam tipe numerik, sekarang) !

:0040499F 59 pop ecx
:004049A0 7510 jne 004049B2 "Kalau tidak sama, cabut dah !"
:004049A2 8D45D0 lea eax, dword ptr [ebp-30]
:004049A5 50 push eax
:004049A6 56 push esi


:004049A7 FF1514D54200 Call dword ptr [0042D514]


:004049AD 6A01 push 00000001
:004049AF 58 pop eax
:004049B0 EB02 jmp 004049B4 "lompat !"

Nah, dibawah ini adalah hasil lompatan dari berbagai syarat yang salah dari rutin program diatas, lihat XOR eax, eax. Ini akan mengnolkan eax, oooh pantes, kalau regnum salah eax= 0"

:004049B2 33C0 xor eax, eax

Dibawah ini, adalah hasil dari lompat "baik" diatas, eax tidak 0 karena baris xor eax,eax tidak pernah dieksekusi !

:004049B4 5F pop edi
:004049B5 5E pop esi
:004049B6 5B pop ebx
:004049B7 C9 leave
:004049B8 C3 ret "Kembali ke badan program !"

Nah, setelah ini lu pasti sudah mengerti bagaimana cara program memeriksa regnum kan ? jadi edi harus sama dengan eax, kita tinggal mengisikan regnum dengan nilai edi (? edi) dalam decimal. Gua harap elu juga udah bisa bikin key generator sekarang. Dan satu saran coba dengan user name lain ! :)

Ok, sekian dulu deh tutorial dari gua. Jika ada pertanyaan e-mail gua segera, gua dengan senang hati pasti ngejawab ! :)



Sebagai Bonus, ini gua tambahkan rutin keygeneratornya :

#include
#include
#include
main()
{
int i ;
unsigned long serial=0 ;
char username[25] ;
clrscr() ;
printf ("Key Generator DesktopThemes 1.xx by flag eRRatum\n") ;
printf ("Visit our Page at http:\\\\all.at\\ekh\n") ;
printf ("Please enter your username : ") ;
gets(username) ;
for (i=0;iserial^=0x82644404 ;
printf("This is your Code : %lu\n",(~serial+1)) ;
textcolor(LIGHTRED) ;
cprintf("Please Visit our page for more cracks.") ;
return (0) ;
}


Bookmark and Share



4 komentar :

Hari Eko mengatakan... [Reply to comment]

Trs Hasilnya seperti apa nih ? ty gan

tekom_pusrehab mengatakan... [Reply to comment]

ijin copas gan bwt nambah ilmu..
n ente semoga diberi keberkahan dg memberi ilmu ini..

Anonim mengatakan... [Reply to comment]

Wow, this article is good, my sister is analyzing these things, thus I am going to inform her.



Feel free to surf to my blog; options for dummies

Anonim mengatakan... [Reply to comment]

They know when to what microsoft program makees resumes
let you blow off frustratikn aand vent. One website that is phenomeenal if yyou just want to say,
'I'm great, you're great, we're just not great together, ' rather
than launching into a tirade on the position's shortcomings.
In it, Jesus urges his followers not to worry about tomorroww what you can't change today.
We want to be what microsoft program makes resumes a musician.

Take a look at my web site; why not look here

Posting Komentar

Silahkan tinggalkan komentar anda disini...

 
Ujie Caprone | © 2011 Blogger Template by Ujiecaprone.com