Posted by: Zombie Oct 27 2003, 01:02 AM Yeah! Để hưởng ứng với HacNho part II “Cracker! Who are you” phần lấy correct Serials, Zombie post tiếp tuts cho chương trình này… Production: IPSearch 1.9 Copyright by: Paul Gerhart Homepage: http://www.worldlynx.net/pgerhart/ Protector: Name/Serials Packed: None Tools: OllyDbg 1.09d Done: Get Correct Serials Cracked by: Zombie DeathMan Comment: IPsearch lets you search the Internet's IP address space - give it a starting IP address and it sequentially searches for HTTP ports and reports summary HTML content. IPsearch can also do a complete Whois function and can convert domain names to IP addresses. Results can be saved and printed. Sử dụng thử thử chương trình bạn sẽ thấy gặp một số khó chịu khi chưa Reg: Menu Item yêu cầu Reg, hiện Nag khi Exit, limited functions… Hm…Với ngần ấy rắc rối này mà patch thì hơi mệt đa (vì phải tìm đến từng vị trí cần correct serials mà Patch). Thui…Đành chơi ra correct Serials vậy (còn Keygen thì….hm Chương trình này thuật tạo Keygen cũng no so hard You can try it ) Bắt đầu crack để tìm correct serials là việc tìm đến BadBoy. Ở đây là string “Name/Code mis-match. Try again.” Oki! Sử dụng OllyDbg để tìm đến String này. Bạn sẽ đến được BadBoy này tại Addr: 004057F7 004057F3 |> \6A 00 PUSH 0 >Dịch dấu nháy đến here bạn sẽ thấy OllyDbg chỉ đến lệnh nhảy trước đó (Jump from) ở Addr 00405760, 0040579B 004057F5 |. 6A 00 PUSH 0 004057F7 |. 68 8C834100 PUSH IPsearch.0041838C ; ASCII "Name / Code mis-match. Try again." Như vậy ở 2 Addr 00405760, 0040579B nếu nhảy sẽ > BadBoy. Vì thế chắc chắn trước đó phải có hàm tạo Keygen…Yeh! Hàm tạo Keygen ở 00405743. Vào trong hàm này bạn sẽ thấy nó được Call từ khá nhiều chỗ - -> Patch là mệt nghĩ. Tìm đến 00405786. 0040577E |. 52 PUSH EDX ; /s2 0040577F |. 8B85 7CFFFFFF MOV EAX,DWORD PTR SS:[EBP-84] ; | 00405785 |. 50 PUSH EAX ; |s1 00405786 |. FF15 B0454100 CALL DWORD PTR DS:[<&MSVCRT._mbscmp>] ; \_mbscmp Ở đây là hàm cmp với 2 đối số là 2 String cần so sánh. Rõ rồi. Chỉ cần set bp here là bạn sẽ có được CorrectSerials (Nhìn giá trị ở các đối số: 1 cái là your entered, còn cái kia là correct). Xong! Vậy bạn chỉ việc chạy lại chương trình và nhập lại đúng thôi. ********************************************************* Name: Zombie Serials: B4E6FEEF3C44F074782E8C5E36FEC2E9 Name: Zombie DeathMan Serials: 07E7EF148B80CA07ADB21D7AC9FE94E1 ********************************************************** PS: Trong quá trình trace code bạn sẽ thấy một chuỗi string ke ke Lưu ý nó nha Khá quan trong cho việc code keygen đó… Name/Code sau khi Oki sẽ được lưu trong Reg ở HKEY_LOCAL_MACHINE\SOFTWARE\Paul Gerhart Software\IPsearch\User Hic Zombie tìm ra được thuật code keygen của nó (dựa trên language ASM) nhưng code ngược lại bằng Visual Basic .NET không được Tức cành hông ! [/B] Posted by: deux Oct 28 2003, 01:10 PM Tìm real key hả cho tui tham gia với: [Marquee]CRACK FAMALY KEYLOGGER v2.53[/Marquee] Download at: www.SpyArsenal.com Cracker : deux Tool: softice for win, w32dasm Đây là một soft kiểm tra key không phức tạp nhưng lại rất dài dòng vậy nên nếu không tìm ra chô cần carck thì rất dễ nản , bây giờ hãy bắt đầu. Mở W32Dasm disasembler nó ra tìm cái nag invalid key trong Refs>String Data. Dbclick vào nó sẽ đưa bạn đến chỗ cái nag * Referenced by a (U)nconditional or ©onditional Jump at Address: |:004034D6© | :004034FF 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"FamilyKeyLogger" | :00403501 8B0D08514000 mov ecx, dword ptr [00405108] :00403507 51 push ecx chú ý tại 004034D6© nó cho biết có một lệnh nhảy có điều kiện đến cái nag, nhấn shift+F12 điền vào địa chỉ này OK bạn sẻ đến đây: :004034C9 FF1578104000 Call dword ptr [00401078] :004034CF E895E8FFFF call 00401D69 :004034D4 85C0 test eax, eax :004034D6 7427 je 004034FF nhảy đến nag nếu =0 :004034D8 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"FamilyKeyLogger" | :004034DA A108514000 mov eax, dword ptr [00405108] :004034DF 50 push eax * Possible StringData Ref from Data Obj ->"Thank you for registration!" | :004034E0 8B0D4C514000 mov ecx, dword ptr [0040514C] như vậy đều cần thiết là cái lệnh nhảy đó phải đứng im, tuy nhiên điều cần làm là tìm key chớ không phải patch, và nếu bạn patch thì cho dù co lên cái câu "Thank you for registration" bạn cũng vẫn bị đòi đăng ký ở lần sau, các soft bây giờ nó đểu lắm, patch nag là xưa rồi,Okie bạn hãy nhìn lên trước cái lệnh nhảy sẽ có lệnh call 00401D69, chính lệnh call này sẽ gọi một hàm , và hàm này quyết định xem số key của bạn đúng hay sai. Vậy hãy di chuyển đến đó và click vào nút Call , bạn sẽ đến một nơi nào đó trong chương trình , hãy kéo xuống một đoạn nữa đến chỗ sau: :00401E4B 8D95F8FDFFFF lea edx, dword ptr [ebp+FFFFFDF8] chuyển key bạn nhập vào edx :00401E51 52 push edx * Reference To: KERNEL32.lstrlenA, Ord:0308h hàm này cho chiều dài của chuỗi ban nhập | :00401E52 FF159C104000 Call dword ptr [0040109C] :00401E58 83F81D cmp eax, 0000001D so sánh số ký tự với 1D(hex)=29(Dec) :00401E5B 7407 je 00401E64 nhảy nếu bằng :00401E5D 33C0 xor eax, eax set cho eax=0 ( nguyên nhân dẫn đến cái nag) :00401E5F E942040000 jmp 004022A6 như vậy số ký tự bạn nhập vào phải bằng 29, tất nhiên nếu nhìn vào W32dasm thì không thể thấy chính xác các phép toán thực hiện như thế nào vì nó không thể hiện được giá trị của register hay address tại thời điểm chạy đến đoan mã này, nhưng bạn cần suy đoán để tìm ra thôi, ví dụ như tại sao nhìn vào lea edx, dword ptr [ebp+FFFFFDF8] lại biết là nó chuyển reg của mình nhập vào edx, cái này thì không ai có thể bày cho bạn được mà bạn phải crack nhiều , chịu khó quan sát và kinh nghiệm sẽ cho bạn biết chỗ cần tìm. Đối với người mới bắt đầu có thể xài soft-ice để kiểm chứng lại cái đoạn tôi nói ở trên, do crack này hơi dài tôi chỉ nói sơ trong SI như sau: set BP trong SI là getdlgitemtextA xong press F5 trở về lại màn hình đăng ký, nhấn OK bạn sẽ trở lại màn hình của SI, nhấn F12 để trở về vị trí vừa gọi hàm Getdlgitemtexta, trace down bằng F10 , thêm một luu ý nữa nếu gặp các hàm API thì cứ việc nhấn F10, bạn có thể biết nó là hàm API khi trước đó có phần Kernell32.dll hay User32., bởi vì bạn không cần biết nội dung của hàm đó, nếu muốn biết thì tốtnhất là tìm các tut về hàm API, còn nếu gặp các lệnh call đến các địa chỉ như Call 004xxxxxx thì các bạn làm ơn trace bằng F8 để vào xem cái hàm đó nó làm gì nếu không sẽ trace qua cái đoạn code cần tìm. Bạn trce bằng F10 đến khi gặp hàm [Kernel32!sleep], ngay bên dưới nó sẽ có một lệnh Call, trace bằng F8 vào lệnh call này bạn sẽ đến đoạn mã cần tìm tương ứng bên W32dasm. lưu ý đối với những người mới cài và sử dụng SI:để set breakpoint cho các hàm API trong Kernek32.dll và User32.dll cần phải mở Winice.dat bằng Notepad và bỏ dấu ";" trước các lệnh sau EXP=c:\windows\system\kernel32.dll EXP=c:\windows\system\user32.dll Rồi khởi động lại. Trở lại với W32Dasm, nói chung nhiệm vụ của bạn là phải làm sao cho nó đừng nhảy tới chỗ xor eax,eax mà lèo lái sao cho nó đến chỗ mov eax,00000001 thì soft sẽ đăng ký thành công, tất nhiên bạn có thể patch nhưng như vậy thì cũng phải sử cả chục cái lệnh nhảy chớ không ít đâu,bây giờ giả sử bạn đã nhập đủ 29 ký tự thì sẽ đến vị trí sau: :00401E64 0FBE85FCFDFFFF movsx eax, byte ptr [ebp+FFFFFDFC] :00401E6B 83C00A add eax, 0000000A cộng kt thứ 5 với A :00401E6E 83F837 cmp eax, 00000037 so sánh với 37 :00401E71 7E07 jle 00401E7A nhảy nếu nhỏ hơn :00401E73 33C0 xor eax, eax :00401E75 E92C040000 jmp 004022A6 Bạn hãy nhớ byte ptr[ebp+FFFFFDF8] là ký tự đầu tiên, nên byte ptr [ebp+FFFFFDFC] là ký tự thứ 5 Bạn thấy đó dưới cái jle nó lăm lăm cái xor eax,eax chui vào đó là tiêu luôn, vạy nên ký tự của bạn có mã ASCII hệ 16 sau khi cộng với 5 phải <= 37, (kí tự thứ 5<=2D) Bạn hãy dò đến các phần tiếp theo nó sẽ kiểm tra các ký tự thứ 10([ebp+FFFFFE01], ký tự thứ 15([ebp+FFFFFE06]) ký tự thứ 20 tất cả nó đều có điểm chung là phải nhỏ hơn hoặc bằng 2D hãy tìm đến vị trí tiếp theo: :00401ED2 0FBE95FCFDFFFF movsx edx, byte ptr [ebp+FFFFFDFC] ký tụ thứ 5 vào edx :00401ED9 0FBE8501FEFFFF movsx eax, byte ptr [ebp+FFFFFE01] ký tự thứ 10 vào eax :00401EE0 3BD0 cmp edx, eax ktthứ 5 phải bằng kt thứ 10 :00401EE2 7572 jne 00401F56 :00401EE4 0FBE8DFCFDFFFF movsx ecx, byte ptr [ebp+FFFFFDFC] ký tự thứ 5 vào ecx :00401EEB 0FBE9506FEFFFF movsx edx, byte ptr [ebp+FFFFFE06] ký tự thứ 20 edx :00401EF2 3BCA cmp ecx, edx KTthứ 5 phải = KTthứ 20 :00401EF4 7560 jne 00401F56 :00401EF6 0FBE85FCFDFFFF movsx eax, byte ptr [ebp+FFFFFDFC] ký tự thứ 5 :00401EFD 0FBE8D10FEFFFF movsx ecx, byte ptr [ebp+FFFFFE10] ký tự thứ 25 :00401F04 3BC1 cmp eax, ecx :00401F06 754E jne 00401F56 :00401F08 0FBE95FCFDFFFF movsx edx, byte ptr [ebp+FFFFFDFC] :00401F0F 83FA2D cmp edx, 0000002D ký tự thứ 5 phải bằng 2D :00401F12 7442 je 00401F56 như vậy bạn có thể hình dung sơ là số đăng ký sẽ như sau:XXXX-XXXX- XXXX-XXXX-XXXX tiếp theo hãy tìm hiểu chỗ này: :00401F56 0FBE85F8FDFFFF movsx eax, byte ptr [ebp+FFFFFDF8] ký tự thứ 1 :00401F5D 83F846 cmp eax, 00000046 so sánh với 46 :00401F60 7566 jne 00401FC8 :00401F62 0FBE8DF9FDFFFF movsx ecx, byte ptr [ebp+FFFFFDF9] :00401F69 83F945 cmp ecx, 00000045 :00401F6C 755A jne 00401FC8 :00401F6E 0FBE95FAFDFFFF movsx edx, byte ptr [ebp+FFFFFDFA] :00401F75 83FA46 cmp edx, 00000046 :00401F78 754E jne 00401FC8 :00401F7A 0FBE85FBFDFFFF movsx eax, byte ptr [ebp+FFFFFDFB] :00401F81 83F845 cmp eax, 00000045 :00401F84 7542 jne 00401FC8 cái thằng soft này quả là lắm chuyện tôi chỉ có thể nói vắn tắt thế này các ký tự từ 1 đến 4 , kt 1 phải khác 46 hoặc kt2 phải khác 45 hặc kt3 khác 46 Có nghĩa là phải làm cho 1 trong bốn lệnh nhảy trên nhảy nếu không sẽ đến cái chỗ xor eax,eax. Tiếp theo sau khi nhảy sẽ đến đây: :00401FC8 0FBE8DF8FDFFFF movsx ecx, byte ptr [ebp+FFFFFDF8] :00401FCF 0FBE95FAFDFFFF movsx edx, byte ptr [ebp+FFFFFDFA] :00401FD6 3BCA cmp ecx, edx :00401FD8 0F858A000000 jne 00402068 :00401FDE 0FBE85F9FDFFFF movsx eax, byte ptr [ebp+FFFFFDF9] :00401FE5 0FBE8DFBFDFFFF movsx ecx, byte ptr [ebp+FFFFFDFB] :00401FEC 3BC1 cmp eax, ecx :00401FEE 7578 jne 00402068 :00401FF0 0FBE9511FEFFFF movsx edx, byte ptr [ebp+FFFFFE11] :00401FF7 0FBE8513FEFFFF movsx eax, byte ptr [ebp+FFFFFE13] :00401FFE 3BD0 cmp edx, eax :00402000 7566 jne 00402068 :00402002 0FBE8D12FEFFFF movsx ecx, byte ptr [ebp+FFFFFE12] :00402009 0FBE9514FEFFFF movsx edx, byte ptr [ebp+FFFFFE14] . :00 401 E52 FF159C 104 000 Call dword ptr [00 4 01 0 9C] :00 401 E58 83F81D cmp eax, 00 000 01D so sánh số ký tự với 1D(hex)=29(Dec) :00 401 E5B 7 407 je 00 401 E64 nhảy nếu bằng :00 401 E5D 33C0 xor. [ebp+FFFFFE02] kt thứ 10 :00 40 213 9 83F954 cmp ecx, 00 000 054 :00 40 213 C 7 418 je 00 40 215 6 :00 40 213 E 0FBE9 507 FEFFFF movsx edx, byte ptr [ebp+FFFFFE07] kt thứ 15 :00 40 214 5 83FA54 cmp edx, 00 000 054. [ebp+FFFFFE03] :00 402 07B 83F853 cmp eax, 00 000 053 :00 402 07E 754E jne 00 402 0CE :00 402 0 80 0FBE8D04FEFFFF movsx ecx, byte ptr [ebp+FFFFFE04] kt thứ 12 :00 402 087 83F952 cmp ecx, 00 000 052 Đây