Load chương trình bằng OllyDbg. RightClick chọn Search for >All referenced text string, tìm chuỗi "Register False!" và DblClick lên nó chúng ta sẽ trở lại cửa sổ chính của Olly tại đây: Code: 00488FE1 |. 8BC6 MOV EAX,ESI 00488FE3 |. E8 6CDFFBFF CALL FileReco.00446F54 00488FE8 |. EB 22 JMP SHORT FileReco.0048900C 00488FEA |> B9 74914800 MOV ECX,FileReco.00489174 ; ASCII "False" 00488FEF |. BA CC904800 MOV EDX,FileReco.004890CC ; ASCII "IsRegister" 00488FF4 |. 8BC7 MOV EAX,EDI 00488FF6 |. E8 E94AFEFF CALL FileReco.0046DAE4 00488FFB |. B8 84914800 MOV EAX,FileReco.00489184 ; ASCII "Register False!" >here 00489000 |. E8 8B94FCFF CALL FileReco.00452490 Chúng ta thấy phía trên dòng thông báo lỗi này có lệnh JMP nhảy qua nag. Hừm, vậy thì những dòng nằm dưới lệnh JMP nhất định phải có một lệnh nhảy từ đâu đó nhảy đến. Click chuột vào dòng lệnh dưới lệnh JMP tại 00488FEA và chúng ta thấy Olly báo "Jump from ". Nói chung là lệnh nhảy này vẫn nằm trong đoạn code ngắn này nên kệ nó. Kéo lên đầu đoạn này và setbreakpoint tại đó: Code: 00488E32 00 DB 00 00488E33 00 DB 00 00488E34 /. 55 PUSH EBP >breakpoint here 00488E35 |. 8BEC MOV EBP,ESP 00488E37 |. 81C4 E4FDFFFF ADD ESP,-21C 00488E3D |. 53 PUSH EBX 00488E3E |. 56 PUSH ESI 00488E3F |. 57 PUSH EDI Xong nhấn F9 để run, vào Option >Register và tiến hành nhập Name và Key mà bạn thích. Ở đây tôi nhập Name: Ha Viet Hung; Key: 506. Nhấn Register để đăng ký. Olly sẽ ice tại điểm đặt breakpoint. Dùng F8 trace cho đến khi gặp lệnh so sánh đầu tiên: Code: 00488E83 |. E8 80F7F7FF CALL FileReco.00408608 00488E88 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 > Entered name? 00488E8C 75 0F JNZ SHORT FileReco.00488E9D 00488E8E |. B8 60904800 MOV EAX,FileReco.00489060 ; ASCII "Name can not been empty!" 00488E93 |. E8 F895FCFF CALL FileReco.00452490 00488E98 |. E9 6F010000 JMP FileReco.0048900C Tại địa chỉ 00488E88 sẽ kiểm tra xem đã Enter Name hay chưa. Nếu chưa thì bắn nag báo lỗi empty name. Vì đã điền tên nên sẽ nhảy đến: Code: 00488E9D |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00488EA0 |. E8 7BAFF7FF CALL FileReco.00403E20 00488EA5 |. 83F8 0C CMP EAX,0C 00488EA8 |. 7E 16 JLE SHORT FileReco.00488EC0 00488EAA |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00488EAD |. 50 PUSH EAX Ở đây có một lệnh so sánh và một lệnh nhảy nữa nhưng vì nó nhảy quá ngắn nên chúng ta không cần quan tâm. Bây giờ các bạn chỉ cần F8 cho đến khi chúng ta gặp RealKey mà thôi. Chúng ta sẽ gặp RealKey tại 00488F0D: Code: 00488EFA |. E8 7DAEFFFF CALL FileReco.00483D7C 00488EFF |. 8D95 ECFEFFFF LEA EDX,DWORD PTR SS:[EBP-114] 00488F05 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 00488F08 |. E8 B7AEF7FF CALL FileReco.00403DC4 00488F0D |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] >Đẩy RealKey vào EAX 00488F10 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] > Đẩy MyKey vào EDX 00488F13 |. E8 18B0F7FF CALL FileReco.00403F30 >So sánh Nhìn vào cửa sổ Register các bạn sẽ thấy EAX đang chứa chuỗi RealKey: 1F5EB9B84DAD6E7C963863B614820906F79BCD93319222D430 2B92 Nếu để ý các bạn sẽ thấy trong quá trình trace trước khi đến lệnh 00488F0D chương trình cũng đã đẩy 1 chuỗi ký tự vào EDX tại 00488EFF. Thực ra nó chỉ khác chuỗi RealKey của chúng ta có chút xíu mà thôi nhưng chúng ta sẽ không chọn nó. Vì sao? Vì trường hợp dưới còn có sự kiện đẩy Key đểu của chúng ta vào. Và ngay sau đó sẽ gọi hàm đối chiếu hai chuỗi thật và đểu. Các bạn có thể nhấn F7 để vào hàm và chúng ta sẽ thấy chương trình so sánh EAX (chứa RealKey) và EDX (chứa Keyđểu): Code: 00403F30 /$ 53 PUSH EBX 00403F31 |. 56 PUSH ESI 00403F32 |. 57 PUSH EDI 00403F33 |. 89C6 MOV ESI,EAX 00403F35 |. 89D7 MOV EDI,EDX 00403F37 |. 39D0 CMP EAX,EDX >Có bằng không? 00403F39 |. 0F84 8F000000 JE FileReco.00403FCE 00403F3F |. 85F6 TEST ESI,ESI OK, vậy là chúng ta đã tìm được RealKey. Thử đăng ký xem nó nói gì. "Thank you for Register FileRecoveryAngel!" Khà khà, nó đã ngoan ngoãn nghe lời chúng ta rồi đó. Ở đây chỉ cần patch vài byte là chúng ta sẽ có một Internal KeyGen, để thay vì khi chúng ta Click Register thì nó không bắn dòng thông báo lỗi mà sẽ bắn chuỗi RealKey cho chúng ta thấy. hehe. Các bạn có thể tìm đọc loạt tuts về Olly trong đó có tut về Internal KeyGen. Name: Ha Viet Hung Key: 1F5EB9B84DAD6E7C963863B614820906F79BCD93319222D430 2B92 Name: hvh0904 Key: C35871A66AAD6E7C96C4B11026BD0906F79B Written by Ha Viet Hung (hvh0904) ::[Serial fishing and keygen building]:: CD to Mp3 Maker v1.15 :[CD to MP3 Maker 1.15]: ::[Serial fishing and keygen building]:: Reverse Engineering Association SoftWare Homepage : http://www.share2.com/cdtomp3/download.htm Production : FengYang Yu (www.yeware.com) SoftWare : CD to MP3 Maker v1.15 Copyright by : Copyright © www.yeware.com. All Rights Reserved. Type : Name / Serial Packed : None Language : Microsoft Visual C++ 5.0 Crack Tool : OllyDbg 1.10, PEiD 0.93, kWdsm 10 Unpack : None Request : Correct Serial / Keygen Author : ThunderPwr (ARTEAM) Translator : kienmanowar (REA-cRaCkErTeAm) Quote: CD to MP3 Maker v1.15 CD to MP3 Maker extracts digital music from audio CDs and encodes them into MP3s,ogg,vqf, which enables you to make perfect copies of the original sound tracks as smaller sized MP3.CD to MP3 Maker can encode WAV to MP3 and decode MP3 to WAV . I – Information : - Thực ra chương trình này crack không khó, nhưng nó có những điểm khiến tôi muốn dịch và viết lại tut này : ü Đây là một chương trình CD Ripper (có hàng trăng chương trình loại này), nó có thể trích xuất các file từ audio CD, musical tracks và chuyển đổi sang định dạng MP3 hay các định dạng âm thanh khác. Tác giả của chương trình này không sử dụng một chương trình Packer nào để Pack chương trình và không có bất kì một dạng CRC check nào do đó chương trình này là ứng cử viên rất hay để thực hành phương pháp Serial Fishing và cuối cùng là tạo một Keygenarator cho nó. ü Điểm thứ hai là tác giả của bài viết này sử dụng VB 6.0 (Visual Basic 6.0) để tạo Keygen cho chương trình này. Tôi đã có thời gian tiếp xúc với VB nhưng hầu hết chỉ là coding các chương trình về database mà chưa bao giờ dùng nó để coding Keygen cả. Do đó trong suốt bài viết này từ đầu đến cuối, tôi sẽ dẫn dắt các bạn từng bước một làm thế nào để tìm ra Right Serial và làm thế nào để tạo một chương trình Keygen cho chương trình này. - Đó là hai lí do chủ yếu khiến tôi dịch và viết lại bài viết này. Tôi muốn chứng minh cho các bạn thấy rằng nếu chúng ta nắm vững một ngôn ngữ lập trình nào đó thì ta hoàn toàn có thể dùng nó để coding Keygen. Những gì chúng ta phải làm tiếp theo đây là tìm ra Right Serial của chương trình trên mà không phải sử dụng đến kĩ thuật Patching và phần cuối là phần việc rất thú vị - Code Keygen : ). II – Serial Fishing : - Một thao tác đã trở thành quá quen thuộc khi chúng ta muốn crack bất kì một chương trình nào, đó là sau khi quá trình cài đặt chương trình kết thúc chúng ta phải tiến hành kiểm tra xem chương trình mà chúng ta muốn crack có bị Encrypted/ Packed gì không hay là ở dạng thuẩn túy. Để thực hiện được điều này chúng ta sử dụng chương trình nổi tiếng là PEiD v0.93 để detect . Kết quả là chúng ta có được như sau : - Tiếp theo chúng ta detect tiếp để kiểm tra xem chương trình có sử dụng Crypto nào không. Sử dụng Plugin của PEiD là Krypto ANALyzer v2.82 ta có kết quả như sau : - Load chương trình vào trong Olly , nhấn F9 để Run . Quan sát và thấy như sau : - Ta để ý thấy rằng trên thanh tiêu đề của chương trình có một dòng text : “This is a trial version”.Điều này có nghĩa là chương trình này hiện đang hoạt động tại trial mode(sẽ hạn chế một số tính năng của chương trình) do đó mục tiêu của chúng ta là làm sao dòng chữ này biến mất và ta có thể sử dụng hết các . Code: 00 403 F 30 /$ 53 PUSH EBX 00 403 F 31 |. 56 PUSH ESI 00 403 F32 |. 57 PUSH EDI 00 403 F33 |. 89C6 MOV ESI,EAX 00 403 F35 |. 89D7 MOV EDI,EDX 00 403 F37 |. 39D0 CMP EAX,EDX >Có bằng không? 00 403 F39. EAX,FileReco .00 48 906 0 ; ASCII "Name can not been empty!" 00 488E93 |. E8 F895FCFF CALL FileReco .00 4524 90 00 488E98 |. E9 6F 01 0 00 0 JMP FileReco .00 48 900 C Tại địa chỉ 00 488E88 sẽ kiểm. Code: 00 488E83 |. E8 80F7F7FF CALL FileReco .00 408 608 00 488E88 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4] ,0 > Entered name? 00 488E8C 75 0F JNZ SHORT FileReco .00 488E9D 00 488E8E |. B8 609 04 800 MOV