5. Register DL menyimpan kalkulasi karakter yang benar, sedangkan register BL menyimpan kalkulasi karakter yang kita masukkan. Jika perbandingan antara
register DL dan DL adalah sama, maka lanjutkan mengkalkulasi karakter selanjutnya dengan menuju ke VA 401313. Tetapi jika tidak sama, maka akan jump ke
badboy.
6. Mulai dari VA 40133B, kita akan menginject beberapa code dengan melakukan dump register DL ke suatu "Code Cave".
Code:
Dari tutorial Drew Benton, pengertian Code Cave adalah a redirection of program execution to another location and then returning back to the area where
program execution had previously left
artiin sendiri yak, saya cuman Ctrl-V, pan saya gk jago basa enggres.
Code Cave ditandai dengan DB 00 jadi nanti kita akan mencari alamat yang tidak dipakai untuk kita inject beberapa code.
7. Balik lagi, set breakpoint(F2) pada VA 40133B trus klik kanan, Bookmark > Insert Bookmark 0
8. Scroll ke bawah, cari sampai dengan ketemu DB 00 dan kita tentukan VA 401444(bisa dipilih alamat lain) untuk kita inject, jadi klik kanan, Bookmark >
Insert Bookmark 1
9. Balik lagi ke bookmark 0 dengan klik Alt+0, dobel klik di CMP DL, BL untuk assemble code, masukkan :
Code:
JMP 401444
10. Command di atas akan mengover write beberapa command di bawahnya, karena jmp memerlukan 5 byte sedangkan CMP DL, BL hanya "memakan" 2 byte, but no
problem.. .hajar aja blehhhh. Klik Alt+1 untuk menuju bookmark 1 yang udah kita bikin tadi atau di VA 401444
11. Dobel klik lagi dan masukkan command:
Code:
MOV BYTE PTR DS:[ECX+403250],DL
JMP 401313
Artinya, kita akan dump nilai register DL ke dalam alamat pointer 403250. Dipilih alamat 403250 karena disitu merupakan alamat kosong yang kita bisa pake
buat dump data, LO juga bisa pake alamat yang laen koq...
Caranya, klik "M" di toolbar dan disitu ada section .data jadi kita bisa pake range mulai 403000.
Dan ditambahkan dengan nilai ECX karena setiap ECX bertambah, maka nilai register DL akan ditulis di samping nilai DL yang ditulis sebelumnya sehingga tidak
meng-overwrite nilai DL sebelumnya.
Mengapa menggunakan register ECX? karena register tersebut digunakan sebagai register increment kalkulasi serial di atas.
Selanjutnya akan kita paksa alur program untuk balik lagi ke ke alur yang benar dengan menulis JMP 401313, dan akan berakhir sampai 10 x.
12. Gak ribet kan? Sekarang jalankan program dengan klik F9, masukkan nama misalnya orakanggo (harus lebih dari 5 karakter dan yg paling penting nih...biyar
inget ama gw terus wkwkwkwk....) trus masukkan serial misalnya 1234567890(harus 10 karakter) trus klik Try dan otomatis balik lagi ke Olly dan berhenti pada
VA 40133B sebelum menuju injection code yang udah kita bikin tadi.
13. Klik F8 untuk trace ke code berikutnya maka kita akan menuju VA 401444, untuk membuktikan bahwa register DL dapat kita dump, klik kanan pada VA tadi dan
pilih Follow in Dump > Address Constant, klik F8 lagi, maka karakter "K" akan muncul pada dump window di VA 403251, lho koq bukan di VA 403250? karena saat
itu, ECX bernilai 1. Ya to?Ya to?
14. Klik F8 sekali lagi maka akan balik ke 401313 untuk melanjutkan kalkulasi serial selanjutnya.
15. Next, Klik F9 sebanyak 9 kali, sampai dump window akan menampilkan karakter KBIEBFECX, klik F8 3 kali untuk menampilkan sekali lagi hasil perhitungan
serial sehingga komplet 10 karakter menjadi KBIEBFECXA.
16. Yang terakhir adalah bagaimana cara menampilkan hasilnya? cari ndiri ahhh
Ya wes tak kasi tau carane...
caranya adalah bisa melalui message box atau mengganti isi text input serial.
17. Kita akan coba cara yang kedua dengan menginject sekali lagi dengan mengganti API MessageBoxA di VA 4013A6 menjadi SetDlgItemTextA.
Sebenernya bisa aja sih pake API MessageBoxA yang hanya mengganti PUSH 403251 di VA 4013AD tapi kan biyar lebih mirip keygen, kita coba yang lebih advanced
lagi.
Ada yang tau kenapa kita pake API MessageBoxA yang goodboy? bukan yang badboy? harus jawab yaaa....
18. Dari Win32 API Reference Guide, kita dapatkan referensi:
Code:
BOOL SetDlgItemText(
HWND hDlg, // handle of dialog box
int nIDDlgItem, // identifier of control
LPCTSTR lpString // text to set
);
yang perlu diingat, dalam assembler, command ditulis terbalik sehingga parameter yang pertama kita masukin dari belakang dulu, kek hombreng dong?
rrrrrrrrrrrrggghhhh.
Atau cara yang lebih mudah, kita bisa meng-copy parameter API yang sudah ada. Caranya adalah Klik kanan pada CPU window, Search for > All intermodular calls
dan pilih SetDlgItemTextA yang bawah (karena ada 2) palagi yg bawah kan lebih wenak....
19. Scroll up dikit, pada VA 40119B drag selection sampe VA 4011A5, klik kanan, Copy > To clipboard dan paste pada notepad maka akan kita dapatkan:
Code:
0040119B |. 68 0B304000 PUSH d2k2_cra.0040300B ; /Text = "Enter Serial"
004011A0 |. 6A 04 PUSH 4 ; |ControlID = 4
004011A2 |. FF75 08 PUSH [ARG.1] ; |hWnd
004011A5 |. E8 6E020000 CALL
20. Balik lagi, klik Alt+0 dan ke goto VA 4013A6.
21. Edit mulai VA 4013A6 satu per satu sama persis dengan code di atas tapi inget, khusus di VA 40119B adalah PUSH 403251 bukan PUSH 40300B
Code:
PUSH 403251
PUSH 4
PUSH [ARG.1]
CALL 401418
tau kan maxutnya? sehingga hasilnya seperti di bawah:
Code:
004013A6 68 51324000 PUSH d2k2_cra.00403251 ; ASCII "KBIEBFECXA"
004013AB 6A 04 PUSH 4
004013AD FF75 08 PUSH DWORD PTR SS:[EBP+8]
004013B0 E8 63000000 CALL
22. That's All, maka semua isi register DL yang kita dump sebelumnya akan ditampilkan pada input box serial.
23. Save hasil patch dengan klik kanan, Copy to executable>All modifications pilih Copy All. Dan klik kanan, pilih save file.
24. Close Olly, Jalankan file hasil patch tadi, masukkan name : orakanggo dan serial harus diinputkan dulu 10 karakter sembarang dan otomatis file diablo
keygemne tersebut menjadi keygen tanpa perlu pake VB lagi hehe...
25. Untuk test, jalankan file asli dan paste hasil serial ke file yang asli.
Hi prends...
Iseng2 aja di kampus lg gada kerjaan jadi saya berusaha nyempetin bikin tutorial dikit yang mudah2an berguna dan lagi2 buat heboh......
Self keygen relatif lebih mudah daripada membuat keygen karena kita tidak harus mengerti algoritma secara keseluruhan tetapi hanya memanfaatkan algoritma
yang sudah ada dan tinggal menampilkan hasilnya.
Ok kita mulai aja yah...
1. Oh iya... kita harus tahu rule sebelumnya yaitu :
a. Nama yang dimasukkan minimal 5 karakter dan maksimal 32 karakter walaupun yang dikalkulasi hanya 10 karakter pertama
b. Serial yang dimasukkan harus 10 karakter
2. Plugin yang berguna adalah Bookmark, download di http://indoupload.net/files/10920/BOOKMARK.DLL dan taro di folder plugins dan start olly
Just review, step2 awal masih sama dengan tutorial Membuat Keygen untuk Beginner dan sampai pada step 15 berhenti dulu yak.
3. Kita bisa mengabaikan kalkulasi nama dan langsung menuju VA 40130D yang tidak laen adalah kalkulasi serial. Kalkulasi serial dibandingkan per karakter,
jika karakter tidak sesuai maka akan langsung jump ke badboy.
Code:
0040130D 8D05 B4314000 LEA EAX,DWORD PTR DS:[4031B4]
00401313 |> 8A1C01 MOV BL,BYTE PTR DS:[ECX+EAX]
00401316 |. 8A91 3C314000 MOV DL,BYTE PTR DS:[ECX+40313C]
0040131C |. 80FB 00 CMP BL,0
0040131F |. 0F84 81000000 JE d2k2_cra.004013A6
00401325 |. 80C2 05 ADD DL,5
00401328 |. 80FA 5A CMP DL,5A
0040132B |. 7F 14 JG SHORT d2k2_cra.00401341
0040132D |> 80F2 0C XOR DL,0C
00401330 |. 80FA 41 CMP DL,41
00401333 |. 7C 11 JL SHORT d2k2_cra.00401346
00401335 |. 80FA 5A CMP DL,5A
00401338 |. 7F 12 JG SHORT d2k2_cra.0040134C
0040133A |> 41 INC ECX
0040133B 38DA CMP DL,BL
0040133D ^ 74 D4 JE SHORT d2k2_cra.00401313
0040133F EB 11 JMP SHORT d2k2_cra.00401352
00401341 80EA 0D SUB DL,0D
00401344 |.^ EB E7 JMP SHORT d2k2_cra.0040132D
00401346 |> B2 4B MOV DL,4B
00401348 |. 02D1 ADD DL,CL
0040134A |.^ EB EE JMP SHORT d2k2_cra.0040133A
0040134C |> B2 4B MOV DL,4B
0040134E |. 2AD1 SUB DL,CL
00401350 |.^ EB E8 JMP SHORT d2k2_cra.0040133A
4. Dari algo di atas, decission untuk menuju badboy atau melanjutkan kalkulasi serial ada pada VA 40133B.
Code:
0040133B 38DA CMP DL,BL
0040133D ^ 74 D4 JE SHORT d2k2_cra.00401313
0040133F EB 11 JMP SHORT d2k2_cra.00401352
Tutorial Keygen Dasar
Diposting oleh parda_90 Minggu, 07 Juni 2009 di 00.01
Label: Mixed
Langganan:
Posting Komentar (Atom)
0 komentar:
Posting Komentar