Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 246 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
246
Dung lượng
1,13 MB
Nội dung
Crack vài soft của www.zealot-soft.com Quote: Overview Amor SWF to Video Converter is a powerful utility that supports to convert Macromedia Flash SWF files to AVI or VCD / SVCD / DVD compatible MPEG files including movie clips, action scripts and audio in the Flash movies. Also join many Swf files in one large AVI or VCD / SVCD / DVD compatible MPEG file.Allow the human interaction on Flash content during conversion, no skip frames and support 32bits RGBA alpha channel video that can be directed imported by video authoring tool for composition. Soft: Amor SWF to Video Converter Homepage: http://www.zealot-soft.com/ Protection: ASPack 2.12 -> Alexey Solodovnikov Language: Borland Delphi 6.0 - 7.0 Tools: Peid 0.94; OllyDbg 1.10 ; ImpREC 1.6 Cracker: backstrix Giờ phong trào làm nhạc flash phát triển rộng rãi nhiều cái nhìn trông hay hay burn CD tặng bạn bè cũng good lắm. Muốn vậy lại phải convert swf > video. Search được cái Amor hay hay nhưng mà kiếm hoài hổng thấy crack của version mới toàn ver cũ không hà mà ver cũ thì biết kím đâu giờ chứ. Nếu không đăng ký ta chỉ được dùng trong 7 ngày thôi. Hơn nữa, nó thêm vào dòng chữ báo đây là bản dùng thử to đùng giữa file video sau khi convert. Thôi thì giở olly ra xem xét tí vậy. Bắt đầu nào PEiD đâu, ra nhờ tí nào. Úy giự t cả mình ASPack 2.12 -> Alexey Solodovnikov. Thấy AS lại tưởng aspr hehe may mà không phải. Thằng này thì nhanh gọn thôi. Load vô olly Nó hiện ra cái bảng hỏi xem các pác có thích nó analysis nó tiếp không -> click Yes Các pác sẽ ở đây Code: 00563001 > 60 PUSHAD 00563002 E8 03000000 CALL swftovid.0056300A 00563007 - E9 EB045D45 JMP 45B334F7 0056300C 55 PUSH EBP 0056300D C3 RETN Nhấn F7 trace into vào rồi chuột fải vào thanh ghi ESP và chọn Follow In Dump. Pác sẽ thấy trong dump window, địa chỉ các pác break là 0012FFA4. Bôi đen 4 bytes đầu rồi nhấn chuột fải chọn Breakpoint -> Hardware, On Access -> Dword Nhấn F9 cho run 1 fát ta break tại Code: 005633B0 /75 08 JNZ SHORT swftovid.005633BA; We're here 005633B2 |B8 01000000 MOV EAX,1 005633B7 |C2 0C00 RETN 0C Đến đây là quá trình giải mã đã xong, chỉ việc trace vài fát nữa là nó sẽ nhảy đến cúa OEP thui, F7 3 lần nó sẽ thoát khỏi quá trình giải mã soft trong memory và nhảy ngay đến OEP = lệnh RET. Bấm Ctrl+A để analysis đoạn code này, ta thấy OEP của ta là: 004D8F60 .55 PUSH EBP Khà khà ta đang ở OEP rồi, việc ta cần làm là dump nó ra 1 file trên đĩa cứng thui, chọn Plugins -> Ollydump -> Dump Debugged Process bỏ chọn Rebuild import & ghi nhớ giá trị ở ô Modify. Okie bấm dump lư u lại với tên pác thích em chọn là dump.exe cho dễ nhớ Giữ nguyên olly, run ImpREC mở bảng liệt kê process chọn file swf2video.exe. Nhập địa chỉ OEP vào ô OEP. Sau đó nhấn "IAT AutoSearch" . Nhấn "Get Imports". Có duy nhất 1 chú mà lại là invalid. Chuột phải Advanced command > Get API calls. Hix một lô valid:NO hiện ra nhức cả mắt. Nhấn Show invalid, chờ chút xíu. Okie giờ chuột phải chọn Cut thunk(s) Xong roài, nhấn Fix dump và chọn lấy file dump hồi nãy. Run thử file mới này, wow không crash vậy là unpack thành công. Scan lại bằng PEiD nó báo liền Borland Delphi 6.0 - 7.0 Xong unpack giờ xử nó được gòi Run thử soft xem nào một nag v ăng luôn ra This software can only tray 7 day. Please registration! Convert thử 1 file. Chài, một dòng chữ to oành ngay giữa file vừa convert. Thế thì chán chết. Thử reg xem nào. Nhập N\S úm ba la chíu bùm Trời đất ơi Thank you for registering Amor SWF to Video Converter,Please restart the program! Thế này thì không mon men theo string được rồi phải dựa vào các hàm API thôi Dựa vào cái câu Thank you for registering đểu giả này em đoán là nó lưu thông tin vào registry hoặc một file nào đó rồi check khi restart chương trình. Ta thấy FU & FS được nó lưu trong file .ini trong install dir. Hề, vậy là nó check file Biết thế đã, giờ load nó vào olly. Chuột phải > Search for > All intermodular calls. Chuột phải típ > Sort by > Destination để nhìn cho dễ. Giờ chạy đi ki ếm hàm GetPrivateProfileStringA. Sau khi kiếm được rồi, pác hãy RightClick tại 1 hàm bất kì và chọn Set breakpoint on every call to GetPrivateProfileStringA ta có tất cả 3 hàm thôi không nhiều nhặn gì. Xong nhấn F9 run soft nó break tại hàm đầu tiên, ngó nghiêng chả thấy gì quan trọng cả, F9 típ, cũng thía. Pác cứ F9 đến khi nào thấy mí cái này bên cửa sổ Register thì dừng lại ECX 004D8BC8 ASCII "Pass" hehe cái này hay đây. F8 trace over nào, chắc cái hàm kiểm tra serial của ta nó nằm quanh đây thôi. F8 một hồi, ta đến đoạn code sau Code: 004D905C |. A1 E4CA4D00 MOV EAX,DWORD PTR DS:[4DCAE4] 004D9061 |. 8338 00 CMP DWORD PTR DS:[EAX],0 004D9064 0F84 EE000000 JE dump_.004D9158 Hà, có vẻ khả nghi. Ta sẽ dừng lại tại đây xem xét một chút. Ta thử patch je > jne để xem nó thế nào nhé. Save lại thành file mới với tên 1.exe. Run thử file này oh nag không còn nữa form register đã bị disable. Và cái dòng chữ đáng ghét ở giữa file video cũng không còn. We have successfully patched the registration check! :d Creating an Inline Patch: Inline Patch được s/d khi ta muốn Patch một chương trình bị Pack mà không muốn Unpack nó. Chúng ta thay đổi program sao cho tại đoạn cuối của quá trình unpacking thay vào việc nhảy tới OEP thì nó nhảy tới đọan code chúng ta tạ o ra. Ta đưa đoạn code này vào một "code cave". Đoạn code mà ta thêm vào ở thời điểm này sẽ Patch những chỗ cần thiết khi mà program đạng được unpack. Sau khi program đã được Patch ta sẽ nhảy tới OEP và run như chưa có chuyện gì xảy ra cả :d. Cái cần làm bây giờ là tìm được một "nơi" trong program đã bị Pack để thêm đoạn code của ta vào. Nơi đó gọi là "code cave", nó là một vùng của bộ nhớ(memory) trong chương trình đang còn trố ng(empty). Việc tìm Code cave tưởng chừng có vẻ khó nhưng thực ra lại rất chi là izì. Trong các files exe thường thường đoạn mã bên trong một section không dùng hết toàn bộ section. Vậy thì điều đó cũng có nghĩa ta sẽ s/d những khoảng trống này để viết code của ta. Chúng ta sẽ đi lùng một code cave bên trong program này.(Nguyên văn của bác haule_nth trong loạt tut trans của ARTeam) Bắt đầu nào, load file swftovideo.exe vào olly. Hãy di chuyển scrollbar cho tới khi không nhìn thấy dòng chỉ thị nào nữa thì lúc đó dừng lại Khi các pác tiế p tục nhìn thấy những dòng ADD BYTE PTR DS:[EAX],AL có nghĩa là các pác đang tiến tới gần cuối của section. Lúc này tôi đã tìm thấy code cave của mình: Code: 00563564 CB RETF ; Far return 00563565 15 E8770000 ADC EAX,77E8 0056356A 0000 ADD BYTE PTR DS:[EAX],AL 0056356C 0000 ADD BYTE PTR DS:[EAX],AL 0056356E 0000 ADD BYTE PTR DS:[EAX],AL 00563570 0000 ADD BYTE PTR DS:[EAX],AL 00563572 0000 ADD BYTE PTR DS:[EAX],AL Các pác có thấy những dòng có 4 số 0000 dưới dòng chỉ thị cuối cùng ko? đó là nơi lý tưởng để tạo code cave của chúng ta. Hãy scroll xuống chút nữa wow "bạt ngàn" những dòng code như trên. Tôi bắt đầu viết code của tôi tại địa chỉ 0056359C. Nhưng tr ước khi viết code ta phải biết ta sẽ chèn đoạn code vào chỗ nào trong quá trình unpack chứ nhỉ. Xem xét chút đã Các pác có nhớ sau khi set hardware bp và nhấn F9 chương trình dừng lại tại đâu không. Đó là một lệnh nhảy Code: 005633B0 /75 08 JNZ SHORT swftovid.005633BA 005633B2 |B8 01000000 MOV EAX,1 005633B7 |C2 0C00 RETN 0C 005633BA \68 608F4D00 PUSH swftovid.004D8F60 005633BF C3 RETN Okie rùi, ta sẽ thay đổi JNZ thành JMP cho nhảy đến code cave của ta sau đó mới nhảy ngược lại 005633BA. Bắt tay vào việc nào Còn nhớ ta đã thay đổi BYTE tại ADDRESS 004D9065 từ 84 thành 85. Vậy lệnh đầu tiên ta viết sẽ là: MOV BYTE PTR DS:[004d9065], 85. Vậy là patch xong giờ thì ta cần cho nó nhảy ngược về chỗ cũ lệnh jump sẽ viế t như sau: JMP 005633BA. Lúc này code cave sẽ như sau Code: 0056359C C605 65904D00 8>MOV BYTE PTR DS:[4D9065],85 005635A3 ^ E9 12FEFFFF JMP swftovid.005633BA Bây giờ bôi đen cả 2 dòng và ấn Right-Click rồi chọn Copy to Executable -> Selection. Một cửa sổ mới hiện ra tại cửa sổ này ấn Right-Click và chon Save File -> Save file với tên bất kỳ. Lệnh cuối cùng phải thay đổi đó là lệnh Jump ở giai đoạn cuối của quá trình unpack để jump tới code cave vừa tạo. Đóng file hiện thời lại và mở file vừa tạo ra. Bây giờ ta c ần tới đoạn code gần cuối của quá trình unpack chính là đoạn JNZ mà ta phân tích bên trên đó. Ta sẽ change lệnh jump này để nó để nó nhảy tới code cave. Để change ta bấm SPACE -> trong Assemble box đánh JMP 0056359C rồi ấn Assemble. Right-Click và chọn Copy to Executable -> trong cửa sổ đang mở hãy Right-Click lần nữa và chọn Save File. Tôi save với tên là swftovideo_patch_inline.exe. Đóng Olly run thử, khà khà phê quá, nó run ầm ầm. Site này còn mấy soft khác cách patch cũng tương tự. Em là super newbie vì vậy kiến thức của em vẫn còn rất hạn chế nên không tránh khỏ i nhầm nhọt chỗ này sai xót chỗ kia. Mong các bác chỉ giáo để em có thể khá hơn. Mrangelx (http://www.reaonline.net) Windows Cracking Tutorial (complete) Chào các bác, em chỉ là 1 newbie nhưng hôm rồi đọc được bài viết này về SoftICE nên hôm nay mạn phép translate ra cho các newbie đọc và nếu được cao thủ góp ý cho thì hay quá :). Em mong bài này sẽ giúp ích được cho các bác vì em thấy bài viết này viết kĩ lắm. Mong nhận được sự quan tâm của các bác để cùng nhau tiến bộ. Bài viết : Windows Cracking Tutorial Tác giả : ED!SON Biên dịch : the_lighthouse Trong bài có tham khảo bài viết của bác Hacnho. Thank a lot ************************************************** ************** Nội dung : 1. Giới thiệu về cracking 2. Giới thiệu về SoftICE/Win 2.00 3. Tìm đoạn code registration 3.1 Phầ n mềm thực hành : Task Lock 3.00 3.2 Phần mềm thực hành : Command Line 95 4. Tạo keymaker cho phần mềm Command Line 95 5. Làm thế nào mà lệnh PUSH và lệnh CALL và những lệnh khác thật sự làm việc khi mà chương trình gọi 1 funtion 6. Đôi điều về chương trình viết bằng Visual Basic Phụ lục : A. Làm thế nào để kiểm tra SoftICE đã load symbols ? B. Cú pháp cho functions ************************************************** *************** 1. Giới thiệu về cracking ================ Cracking 1 chương trình Windows thường dễ hơn 1 chương trình chạy trong Dos, bởi vì trong Windows rất khó mà che dấ u bất cứ cái gì nếu như các bác xem kĩ phần thông tin. Công cụ đầu tiên ( mà thường là duy nhất ) mà các bác cần là SoftICE/Win2.00, đó là công cụ degug tuyệt vời của Numega. Có thể các bác cho là nó khó sử dụng ( mà em cũng nghĩ dzậy ) vì nó thường làm Windows bị ice , nhưng trong bài viết này em sẽ cho các bác thấy làm thế nào để sử dụng nó 1 cách hiệu quả. 2. Giới thiệu về SoftICE/Win 2.00 ===================== * How to install SoftICE : Mặc dù điều này đã được rất, rất… nhìu tut nói rùi nhưng em cũng xin được nói l ại (để có ai chưa biết thì bây giờ biết :) ). Các bác tiến hành install SoftICE như bình thường ( bằng cách nhấn vào file Setup ), khi được hỏi số serial thì bác gõ số serial vào ( thường kèm theo sẵn ) nhưng nếu ko có thì các bác có thể tham khảo số serial ở đây : + SoftICE 3.24 : 1900-0000DD-9B + SoftICE 4.0 : 5419-00009D-DF + SoftICE 4.05 : 5109-0122DF-FF Sau đó các bác típ tục cài đặt cho đến khi hiện bảng thông báo các bác có muốn restart lại máy không , các bác khoan hãy ấn Yes mà hãy dùng Notepad ( hay chương trình soạn thảo nào cũng được ) để mở file winice.dat trong thư mục vừa cài đặt SoftICE. Các bác tìm dòng INIT=”WR;X;” ( hoặc có thể là INIT=”X;” ) ở gần đầu file và sửa thành INIT=”WD;WR; WL;CODE ON;X;”. Sau đó các bác kéo xuống gần cuối file tìm các dòng sau : ; ***** Examples of export symbols that can be inluded for Windows 9x ***** ; Change the path to the appropriate drive and directory ;EXP=c:\windows\system\kernel32.dll ;EXP=c:\windows\system\user32.dll ;EXP=c:\windows\system\gdi32.dll ;EXP=c:\windows\system\comdlg32.dll ;EXP=c:\windows\system\shell32.dll ;EXP=c:\windows\system\advapi32.dll ;EXP=c:\windows\system\shell232.dll ;EXP=c:\windows\system\comctl32.dll ;EXP=c:\windows\system\crtdll.dll ;EXP=c:\windows\system\version.dll ;EXP=c:\windows\system\netlib32.dll ;EXP=c:\windows\system\msshrui.dll ;EXP=c:\windows\system\msnet32.dll ;EXP=c:\windows\system\mspwl32.dll ;EXP=c:\windows\system\mpr.dll Và các bác hãy xóa hết các dấu ; ở các dòng này. Xong các bác save flie lại rùi restart lại máy. Để vào SoftICE, các bác ấn Ctrl-D. Và để sử dụ ng SoftICE có hiệu quả, các bác nên để các khung như thế này : | | |_____Registers____| Để chỉnh sửa khung này, các bác đánh R | | |___Data Window___| Các bác đánh D để xem address , đánh E để chỉnh sửa | | |___Code Window___| Đánh U để xem address , đánh A để chèn asm code | | |_Command Window_| Khung này để đánh lệnh và đọc kết quả | | Những phím quan trọng khác ( theo mặc định ) : H/F1 : Online Help F5/Ctrl-5 : Run F8 : “bước” vào functions F10 : “bước” qua functions F11 : “bước” ra khỏi functions 3. Tìm đoạn code registration =================== Chắc chắn đây là “con đường” dễ nhất để thực hành, để “có” 1 chương trình shareware và đăng kí nó. 3.1 Phần mềm thực hành : Task Lock 3.00 Đây là 1 chương trình mà sự bảo vệ tương đối đơn giản, đó chỉ là 1 đoạn code mà không bao giờ thay đổi. 3.1.1 Tìm hiểu về chương trình Trước khi bước vào crack chương trình , các bác hãy trả lời 3 câu h ỏi này nha : 1 - Đó là chương trình 16 hay 32 bit ? 2 - Làm thế nào để nhập số đăng kí ? 3 - Phần help có thể giúp gì chúng ta để tìm ra cách làm việc của registration không ? Các bác hãy tự tìm câu trả lời cho các câu hỏi trên trước khi chúng ta típ tục nha. Em chờ các bác đấy… Xong chưa các bác ? OK, và sau đây là câu trả lời, các bác xem thử coi có đúng với câu trả lời của các bác không nha ;) 1 – Đây là 1 chương trình 32 bit 2 – Các bác có thể nhập số đăng kí bằng cách gõ vào khung dialog khi các bác chọn menu “Register!Register…” 3 – Và qua phần Help, các bác có thể biết được chương trình có 2 cách đăng kí : Individual ( đăng kí cá nhân) và Site License (đăng kí tại site). Thế nào, câu trả lời của các bác có đúng không ;) Nếu bác nào trả lời đúng hết thì em xin chúc mừng vì “ các bác có mùi cracker rùi đấy “ ( sorry bác benina nha vì sử dụng câu của bác mà chưa xin phép ;). Đọc đến đây em nghĩ chắc sẽ có bác thắc mắc rằng tại sao phải trả lời câu hỏi 1 làm gì. Đúng là em thấy các tuts về SoftICE khác đều không nói về vấn đề này. Vì sao ? Vì các tác giả viết sai? Không đâu. Thực ra việc trả lời câu hỏi 1 s ẽ giúp cho việc crack của các bác đơn giản hơn nhiều. Lý do ư , xin mời các bác đọc típ sẽ rõ. Hehehe… 3.1.2 “Bẫy” (breakpoint) các chuỗi code Những đoạn code thường được nhập vào những box Windows Edit. Và để dừng các đoạn code, SoftICE phải “đọc” được nội dung của các box Windows Edit này với “sự giúp sức” của 1 trong các function (lệnh) sau : - Đối với chương trình 16 bit : GetWindowText , GetDlgItemText - Đối với chương trình 32 bit : GetWindowTextA , GetWIndowTextW , GetDlgItemTextA , GetDlgItemTextW Giờ thì chắc các bác đã hiểu vì sao em bảo các bác trả lời câu hỏi 1 ở trên. Okie, giờ chúng ta típ tục nha. À quên, em còn điều này chưa nói, các bác có thấy cái chữ cái A và W trong các function của chương trình 32 bit không, no’ cho chung’ ta biết nếu function sử dụng one-byte hay double-byte. Double-byte code là RARE. Đến đây chắc các bác đã hỉu ý em: “If i only could break on GetWindowText” (cái này em xin để nguyên văn câu của tác giả vì em chả bít dịch thế nào cả ;) Để đặt breakpoint trong SoftICE , các bác vào SoftICE bằng cách ấn Ctrl-D, sau đó dùng lệnh BPX cộ ng với tên của function hoặc memory address. Vì TaskLock là chương trình 32-bit nên sẽ đặt breakpoint ở hàm GetWindowTextA. Nếu nó không làm việc, chúng ta có thể thử hàm khác. Trong khung Command Window của SoftICE chúng ta đánh BPX GetWindowTextA. Nếu các bác gặp lỗi “No LDT”, các bác hãy coi xem các bác có đang chạy chương trình nào không ( tốt nhất là không nên chạy chương trình nào khi các bác dùng mở SoftICE ). Đặc biệt nếu các bác dùng Norton Commander/Dos thì nó sẽ disturb function này. Các bác có thể kiểm tra nếu các bác có bất kì breakpoint nào trong list breakpoint bằng lệnh : bl Nó sẽ hiện ra như thế này : 00) BPX USER32!GetWindowTextA C=01 Để ra khỏi SoftICE, các bác ấn Ctrl-D hoặc F5 hoặc dùng lệnh X. Okey, các bác đ ã bẫy bất kì lệnh gọi GetWindowTextA. Bây giờ các bác hãy nhập số nào đó (ta gọi là FS nha) và ấn OK… chuyện gì sẽ xảy ra? Còn gì nữa, 1 cái nag văng ra nói rằng bác nhập sai registration number. Nhưng như dzậy có nghĩa là sao, nghĩa là nó không gọi hàm GetWindowTextA, vậy thì chúng ta sẽ thử với GetDlgItemTextA. Nhưng trước hết chúng ta phải xóa cái breakpoint đã đặt đi đã. Vào SoftICE đánh : bc 0 , xong chúng ta set breakpoint mới : BPX GetDlgItemTextA Chúng ta hãy thử lại nha 3.1.3 Làm việc với SoftICE Oh, nó đã làm việc! Bây giờ chúng ta… uống ly nước đã, em khát nước quá rùi ;)) OK, bây giờ chúng ta đang ở trong SoftICE , tại cái nơi mà function GetDlgItemTextA bắt đầu. Để “nhảy” đến nơi mà nó được gọi, các bác hãy nhấn F11. Rùi, chúng ta đang ở trong SGLSET.EXE , nếu các bác không biết thì các bác hãy nhìn vào dòng nằm giữa khung code window và comand window, các bác sẽ thấy như thế này: SGLSET!.text+1B13 Bây giờ các bác có thể disable breakpoint bằng lệnh : bd 0 Nếu các bác muốn enable nó lại thì các bác dùng lệnh : be 0 Các bác nhìn vào dòng đầu tiên trong code window : CALL [USER32!GetDlgItemTextA] Để thấy những lệnh ở trên, các bác nhấn Ctrl-Up. Nếu các bác không bít gì về Assembler thì các bác hãy nhìn xuống đây : RET Kết thúc function PUSH EBP___________________________Bắt đầu function MOV EBP,ESP SUB ESP,0000009C PUSH ESI LEA EAX,[EBP-34] ___________________ EAX=EBP-34 PUSH EDI MOVE ESI,ECX PUSH 32 _____________________________Lưu chiều dài của FS PUSH EAX___________________________ Lưu địa chỉ của text buffer PUSH 000003F4_______________________Lưu Identifier của control PUSH DWORD PTR [ESI+1C]______________Lưu handle của dialog CALL [USER32!GetDlgItemTextA] _________Chúng ta đang ở đây Em xin giải thích chút xíu : lệnh PUSH có nhiệm vụ lưu lại giá trị cho lần sử dụng sau. Các bác chú ý vào 2 dòng màu đỏ. Nhìn vào đoạn lệnh trên chúng ta bít được địa chỉ của text buffer đã được cất gi ữ trong EAX, và EAX đó là EBP-34. Bây giờ chúng ta hãy nhìn vào EBP-34, nó sẽ như thế này : d ebp-3 Chúng ta nhấn F10 đến khi thấy cái gì liên quan đến EBP-34, và nó đây (không bít có giống của các bác không) : LEA EAX, [EBP+FFFFFF64]_______________EAX=EBP-9C LEA ECX, [EBP-34]_____________________ECX=EBP-34 PUSH EAX____________________________ Lưu EAX PUSH ECX_____________________________Lưu ECX CALL 00403DD0______________________Gọi function ADD ESP, 08__________________________Xóa thông tin đã lưu TEST EAX, EAX_________________________Kiểm tra function lần nữa JNZ 00402BC0________________________Nhảy nếu không bằng 0 Theo em thì đây là 1 đoạn code so sánh, nó làm việc như thế này : Nhập vào 2 giá trị , trở về 0 nếu 2 giá trị bằng nhau, còn không bằ ng nhau thì khác 0. Okey, cái gì nằm phía sau [EBP+FFFFFF64], do SoftICE không thể tự negative number, nên để tìm giá trị thật của nó các bác làm phép tính như thế này: 100000000 – FFFFFF64 = 9C Trong SoftICE , các bác cũng có thể thực hiện phép tính ấy bằng lệnh : ? 0 – FFFFFF64 Tại sao là 0 mà không phải 100000000 ( không lẽ 0=100000000 => điều này trái với các quy tắt toán học ) ? Đó là số 100000000 qua lớn đối với SoftICE, nhưng khi ta thay 100000000 bằng 0 thì nó cũng cho kết quả như vậy. Và bây giờ là lúc xem cái gì nằm phía sau EBP-9C ( hồi hộp quá ) , các bác làm như sau : d ebp-9c Ah, data window hiện ra cho chúng ta 1 dãy số - registration number đây ư ? không đâu ( mà sao cái số này giống cái số mà hồi nãy ta nhập vào quá hen ) . Các bác có nhớ đoạn code ở trên không, nó so sánh 2 số : 1 là số ta nhập vào , còn số thứ 2 chính là registration number. Do vậy chúng ta tiếp tục “nhảy” với F10 nha ;) ( cố lên các bác , thằng TaskLock sắp là của các bác rùi đấy) . Và chúng ta sẽ đến đoạn code này đây ( nó giống đoạn code ở trên đấy các bác ạ ) : LEA EAX, [EBP-68] ____________________EAX=EBP-68 LEA ECX, [EBP-34]_____________________ECX=EBP-34 PUSH EAX____________________________Lưu EAX PUSH ECX____________________________ Lưu ECX CALL 00403DD0________________________Gọi function ADD ESP, 08_________________________Xóa thông tin đã lưu TEST EAX, EAX________________________Ki ểm tra function lần nữa JNZ 00402BFF _______________________Nhảy nếu không bằng 0 Và các bác hãy chú ý đến dòng LEA EAX, [EBP-68] , nó dấu cái gì vậy ? Thui thắc mắc làm cái gì, ta dùng lệnh d là biết nó dấu gì thui mà. Nào, các bác đánh cùng em nha : d ebp-68 Hehehe, đây rùi, cuối cùng thì cái registration number nó cũng vác mặt ra !!! 3.2 Phần mềm thực hành : Command Line 95 Đây là 1 chương trình khá dể, nó chỉ dùng 1 đoạn code đơn giản để tính số serial, do đó chúng ta sẽ dùng nó để làm ví dụ. 3.2.1 Tìm hiểu về chương trình Sau khi kiểm tra (cách kiểm tra xem ở phần tr ước), các bác bít đây là 1 chương trình 32bit, và nó yêu cầu chúng ta nhập tên đăng kí và registration trong 1 hộp thoại. Okie, sau khi bít những thông tin “quý báu” trên, chúng ta sẽ đến bắt đầu “bẫy” nó. Hehehe dzui qua’ ;)) 3.2.2 “Bẫy” các chuỗi code Giống như với TaskLock “xấu số”, chúng ta sẽ đặt breakpoint. Chúng ta có thể set breakpoint cho cả 2 function : GetWindowTextA và GetDlgItemTextA. Vào SoftICE (đừng nói là các bác không bít vào nha, đọc đến đây rùi mà nỡ nói 2 chữ không bít là buồn em lắm đó), rùi đánh : BPX GetWindowTextA BPX GetDlgItemTextA Bây giờ chúng ta mở hộp thoại đăng ký ra, nhập tên ( gọi là FN – Fake Name ) và nhập số nào đó ( em nhập là 12345 và ta hãy gọi số này là FS – Fake Serial ), sau đó nhấn OK… Và… BÙM, SoftICE nhảy ra giữa màn hình tại function GetDlgItemTextA. Cũng như [...]... + 03.8 Window Generating 04 Kiến thức về lệnh nhảy ( jump ) 05 Kiến thức về SET 06 Tips & Tricks for Cracking + 06.1 Crippled Programs + 06.2 Dongles + 06.3 General + 06.4 InstallSHIELD Setups + 06.5 Key File Protections + 06.6 Nag Screens + 06.7 Runtime Limits + 06.8 Serials + 06.9 Time Limits + 06 .10 Visual Basic Programs 07 Window Messages for Crackers 08 Nhận biết Functions, Arguments, và Variables... Functions, Arguments, và Variables 09 Các cách thức bảo vệ của phần mềm + 09.1 C – Dilla SafeDISC + 09.2 SalesAgent + 09.3 SecuROM + 09.4 softSENTRY + 09.5 TimeLOCK + 09.6 Vbox 10 Bitmanipulation Phụ lục : +A Những ý kiến chung về Cracking +B Những câu hỏi thường gặp ******************************************* 00 Giới thiệu ======== Bài viết là 1 cuốn “bí kíp” được tích lũy từ những kiến thức “bí mật không... hoa đầu tiên * chiều dài của chuỗi) . như thế này: 100 000000 – FFFFFF64 = 9C Trong SoftICE , các bác cũng có thể thực hiện phép tính ấy bằng lệnh : ? 0 – FFFFFF64 Tại sao là 0 mà không phải 100 000000 ( không lẽ 0 =100 000000 =>. ************************************************** *************** 1. Giới thiệu về cracking ================ Cracking 1 chương trình Windows thường dễ hơn 1 chương trình chạy trong Dos, bởi vì. 0 =100 000000 => điều này trái với các quy tắt toán học ) ? Đó là số 100 000000 qua lớn đối với SoftICE, nhưng khi ta thay 100 000000 bằng 0 thì nó cũng cho kết quả như vậy. Và bây giờ là lúc