cara membuat keygen

Tutorial kali ini menggunakan diablo Keygenme 01 dan kita akan membuat diablo keygenme menjadi sebuah keygen dari aplikasi keygenme itu sendiri atau

biasa dinamakan self keygen.
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

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 ; \SetDlgItemTextA

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.

No comments:

Post a Comment