Cracker Handbook 1.0 part 30 potx

6 370 2
Cracker Handbook 1.0 part 30 potx

Đang tải... (xem toàn văn)

Thông tin tài liệu

06.3 General ======== Chọn Fake Serial Khi bước vào “con đường tội lỗi” cracking, các bác nên chọn cho mình 1 con số (như ngày sinh của mình, hay là của người yêu, hay là telephone của người yêu chẳng hạn ) và con số này sẽ theo các bác đến hết quãng đời cracking của mình. Và khi crack các chương trình yêu cầu nhập số serial, các bác sẽ rút “bảo bối” này ra (và đương nhiên các bác sẽ nhận đuợc 1 cái nag văng vào mặt) bởi lẽ theo thời gian các bác chác chắn sẽ biết được nó bằng bao nhiêu trong hệ hex cũng như decimal (như của em là 1234567890, và trong hex nó sẽ là 499602D2 – hehe quá dễ nhớ :) Ở đây em cũng nói thêm 1 điều là các bác nên chọn số mà các chữ số không giống nhau , bởi nếu chương trình không kiểm tra từ số đầu tiên mà từ số thứ 2 hoặc thứ 3 thì sao (keke thì đơ chứ seo nữa) hoặc giả sử các bác dùng số 1122334455 và khi kiểm tra code nó hiện ra là “1” thì các bác có biết nó là số 1 nào không, còn nếu các bác sử dụng các chữ số khác nhau thì sau 1 lần kiểm tra các bác sẽ nhận ra ngay. Lệnh CALL Mỗi khi các bác quyết định nhảy qua 1 lệnh CALL nào đó trong đoạn code bảo vệ, các bác hãy kiểm tra nội dung của các register bị thay đổi, các bác có thể tìm thấy real serial ở đó đó. Nếu các bác đã kiểm tra tất cả posibilities mà không thấy gì, các bác hãy trace lại và khảo sát từng function. Các cracker/programmer suy nghĩ như thế nào ? Các programmer được dạy rằng mỗi khi có công việc nào đó mà cần hoàn thành nhiều hơn 1 lần thì nên tạo ra function để thực hiện công việc đó, và chỉ gọi function khi cần thi hành công việc. Hầu hết các chương trình đều dùng name kết hợp với serial để kiểm tra code ít nhất 2 lần : 1 lần là khi chúng ta nhập name và serial, còn 1 lần là khi chúng ta khởi động chương trình. Vì vậy các programmer thường sẽ gọi function để kiểm tra code đăng kí của các bác. Và thông thường thì function sẽ được gọi mỗi khi code được check. Tại điểm này các bác sẽ thấy nơi mà chúng ta bắt đầu. Nếu các bác patch function được gọi để kiểm tra code đăng kí, nó sẽ hiện lên hợp lý mỗi khi chương trình check nó. Kĩ thuật ở đây không chỉ áp dụng để crack những chương trình dùng code name và serial. Đừng tự trói buộc bản thân bằng cách nghĩ "Inside the Box" (cái này em chả biết dịch thế nào :), những kĩ thuật này có thể áp dụng với các kiểu bảo vệ khác Sử dụng INT 3 Trong trường hợp bạn chưa chuẩn bị để nghe, INT 3 được set để debug theo ý định. Vì vậy nếu các bác muốn break tại 1 điểm nào đó, các bác có thể sử dụng kiến thức này. Các bác nên copy file mà các bác muốn break ra rồi hãy patch file copy đó. Hãy thử thay 1 byte đơn bằng opcode CC ( CC là opcode của INT 3). Nếu các bác không tìm được điểm nào, các bác đừng quên NOP (opcode của NOP là 90) những byte còn lại. Sau đó các bác có thể sử dụng SoftICE để break INT 3. Đùng quên chú ý giá trị gốc, bởi các bác cần nó khi SoftICE break tại vị trí này. Khi đã ở đó (trước chỗ INT 3 được thi hành), các bác hãy gõ A (nếu các bác không làm thế thì các bác sẽ gây ra 1 General Protection Fault) . Việc tiếp theo tùy ý các bác Giá trị trả về Khi function trả về 1 giá trị, các bác hãy để ý : nếu check thành công thì giá trị trả về thường là 1 (có 1 vài trường hợp là 0), còn nếu là -1 nghĩa là check không thành công. Unregistred Nếu các bác crack 1 chương trình và nó bảo là unregistred (chưa đăng kí), mặc dù các bác đã đổi các lệnh nhảy và "buộc" chương trình phải chấp nhận số serial "lụi" của chúng ta nhưng chương trình sẽ ghi nó vào registry hoặc 1 file ini nào đó và khi chúng ta chạy lại chương trình, nó sẽ đọc lại số trong file ini này hoặc registry. Vì vậy ở đây chúng ta cần phải tìm "tử huyệt" - nơi mà chương trình kiểm tra lại số serial ( hàm RegQueryValueEx[A] hoặc hàm GetPrivateProfile[A] ) và buộc chương trình chấp nhận bất kì số serial nào mà chương trình tìm được. Đây là 1 quá trình rất khó, do đó chúng ta cần phải chuẩn bị thật nhiều hell. Nhưng ý tưởng hay nhất là dùng W32DASM để disassemble "mục tiêu", sau đó nhìn vào bảng Import function để tìm những function nói trên, sau đó trace 1 trong số đó (bởi các bác sẽ tìm thấy rất nhiều function giống nhau) và khi đã tìm được tử huyệt đó thì các bác sẽ thấy có jnz (hoặc đại loại như vậy) và còn chờ gì nữa mà không đổi nó thành jz. Theo dõi Theo dõi những giá trị bị thay đổi khi các bác debug 1 chương trình, không cần nói cũng biết đây là 1 việc khá quan trọng đối với crack và reverse engineer. Để mở cửa sổ theo dõi , chúng ta đánh lệnh ww trong SoftICE. Để theo dõi chúng ta đánh lệnh watch trước tên giá trị cần theo dõi (ví dụ watch user_id) và giá trị của nó vào cửa sỗ theo dõi. Chúng ta có thể theo dõi register và stack offset (không kể đến giá trị memory) bằng cách dùng nó trong chỗ của tên giá trị, chẳng hạn watch es:di và watch [ebp 18]. Mỗi khi register và stack offset chỉ đơn thuần point đến địa chỉ mà giá trị thực được cất giữ, các bác có thể theo dõi giá trị register hoặc stack offset bằng cách đánh * trước tên của register hoặc offset (ví dụ : watch *es:di). 06.4 InstallSHIELD Setups Chắc hẳn các bác ai cũng ít nhất 1 lần làm công việc install software rồi phải không ? Vậy các bác có biết nó là gì , được hoạt đông trên nguyên lý nào , hay để chạy nó cần có những file nào …? Các bác có bao giờ để ý đến những câu hỏi đó không ? Nếu không thì bây giờ mời các bác hãy xem kĩ phần dưới đây để trả lời cho các câu hỏi đó – và đương nhiên nếu các bác muốn crack tốt các InstallSHIELD thì lại càng không thể không đọc :) Kiến thức tổng quát : ***_SETUP.LIB là 1 file Data-Base nén của InstallSHIELD. Nó có thể chứa những file EXE và DLL cần thiết cho việc install. Đôi khi những file này cùng nằm trong file SETUP.EXE, nhưng trong trường hợp của chúng ta chúng được nén trong file _SETUP.LIB. ***Bất kì 1 file nén Data-Base nào đều bắt đầu với "13 5D 65 8C 3A 01 02 00". Tại điểm cuối của mỗi file nén Data-Base các bác có thể thấy tên tất cả các file. SETUP.PKG chứa tên tất cả các file trong chương trình Data-Base mà chúng ta không cần đến và vì vậy chúng ta không cần SETUP.PKG. InstallSHIELD sử dụng SETUP.PKG để refer file trong chương Data-Base. Dù vậy chúng ta cũng không cần SETUP.PKG , bây giờ chúng ta đến với file tiếp theo. ***_SETUP.DLL 1 file nguồn DLL của InstallSHIELD và nó cũng không quan trọng đối với chúng ta bởi < nó chỉ là 1 file Support được cung cấp cho bất kì 1 chương trình InstallSHIELD nào. Và đây – SETUP.INS – file Installation Script đã được compile và nó cũng là phần quan trọng nhất trong quá trình InstallSHIELD Installation. Trong Win95 biểu tượng của nó là hình Trái đất nối với cái điện thoại. File này điều khiển mọi hoạt động và chứa hầu hết các message nhảy ra trong quá trình install và nó sẽ đóng vai trò chủ yếu trong APPRAOCH thứ 2 của chúng ta. ***Và SETUP.EXE vẫn là đi đầu cả, nó là “bộ máy” install và thi hành các script và thực hiện tất cả từ CALL đến DLL và Disk-Access (32 bit). Ok, nếu các bác đã đọc đến đây có nghĩa là các bác đã có 1 chút kiến thức về InstallSHIELD, và dĩ nhiên điều đó sẽ giúp các bác nhiều trong việc crack. Phương pháp crack : Như các bác biết, hầu như các software đều được package bằng InstallSHIELD, và không ít trong số đó lại chứa những script dùng để hỏi serial trong quá trình install. Cách sử dụng nó rất đơn giản : các bác chỉ việc double click vào ICOMP.EXE để decompress những file dữ liệu và vượt qua setup 1 cách “an toàn” mà không bị “bắt lại”, và dù thế thì chương trình của các bác vẫn bình thường, không hề có 1 chút “sẹo” nào cả !!! Trong config của InstallSHIELD , file SETUP.INS chứa các complied script. Khi mà quá trình install đòi hỏi serial nằm trong script, em nghĩ … tại sao chúng ta không thay InstallSHIELD complied script bằng 1 file bình thường khác được tạo ra mà không có bất cứ cấu hình nào ??? Và đây là tất cả những gì chúng ta cần phải làm : Code: 1. Chạy InstallSHIELD Pro 5 2. Tạo 1 installation mới với 1 file trong đó. Đừng làm gì với file đó cả 3. Biên dịch installation . Nó sẽ đưa ra 1 chùm file trong “C:\myinstallations\ProjectX\media\disk1\ ” 4. Copy file SETUP.INS vào 1 chỗ an toàn nào đó. Chúng ta sẽ dùng nó sau. 5. Khi các bác gặp chương trình InstalllSHIELD nào mà yêu cầu số serial (hay những cái đại loại như thế), hãy copy file SETUP.INS đã có sẵn trong chương trình và đặt tên là SETUP.IN$, sau đó copy file SETUP.INS mà chúng ta đã tạo ở bước 4 đè lên file SEUP.INS của chương trình. Và vấn đề của chúng ta là nếu script đã được biên dịch chứa những thủ tục dứt khoát, cách làm này có thể sẽ không thành công… Tuy vậy, trong phần lớn trường hợp khi mà vị trí của file và khóa registry được mã hóa vào DATA1.CAB chứ không phải là SETUP.INS script thì nó lại làm việc. 06.5 Key File Protections =============== ***1. Tool tốt nhất để analyze 1 Key file là 1 chương trình Hex Editor. Text Editor không phù hợp với công việc này. ***2. 1 Key file không có gì cả ngoài các dãy byte liên tiếp nhau nằm trong 1 file nhỏ. Những byte này có nhiệm vụ cho biết thông tin về người sử dụng, kiểm tra tính nguyên vẹn của key file, encrypted ngày, tên, địa chỉ, encrypted các cờ … ***3. Để đánh bại 1 chương trình bảo vệ bằng Key file, các bác nên tạo 1 chương trình nhỏ để code 1 Key file giả khác. Chương trình này phải có thể tạo file với những cái tên và kích thước khác nhau. Nội dung của file giả này phải có thể đọc được. Tại sao phải đọc được thông tin trong file giả này ? Bởi chương trình được chọn sẽ đọc vị trí offset của key file. Mỗi đoạn text được đọc trong file sẽ thông báo vị trí mà nó được đọc tại bất kì thời gian nào. Nó sẽ cho biết nơi mà certain checksums phải được add vào key file cuối cùng. ***4. Các bác phải nghĩ ra 1 cái tên cho Key file của mình, tạo 1 file giả và copy nó vào cùng thư mục với chương trình. Sau đó chạy chương trình và xem điều gì xảy ra. Nếu các bác nhận được cái nag “Invalid Key File” hoặc “Corrupted Key File” , công việc crack được 1 nửa, việc còn lại là các bác phải tìm đoạn code gọi nag trên. ***5. Key file phải được đọc - đó là điều kiện tiên quyết. Chương trình phải đọc key file để kiểm tra giá trị của nó. Các bác hãy luôn nhớ điều này !!! The_lighthouse(REA) 06.6 NAG Screens =========== NAG Screen Cracking Có thể những điều sau đây hơi khó hiểu, nhưng các bác nên biết và tốt nhất là nên thuộc lòng trong đầu – dĩ nhiên là nó có lợi cho các bác. Chúng ta bắt đầu nào : Khi các bác gặp 1 cái NAG screen nào đó , các bác hãy load SoftICE lên và đánh : HWND Các bác sẽ thấy như sau (hoặc đại loại như vậy) : Code: Window-Handle | hQueue | SZ | Qowner | Class-Name | Window- Procedure 0080 (0) | 2057 | 32 | MSGSVR32 | #32711(switch_win) | 17EF:00004B6E 0084 (1) | 2057 | 32 | EXPLORER | shell_trayWnd | 1487:0000016C … | … | … | … | … | … Nhiệm vụ bây giờ của các bác là “kéo” cái bảng trên xuống, tìm trong cột Qowner handle của process thuộc chương trình cần crack nag, và nếu cái nag đó có nút OK hãy tìm nó ở cột Class-name . Còn nếu cái nag đó không có gì cả, nhưng lúc đó lại có cái gì đó có 1 cái nút nằm sau nó, đó không phải là handle mà các bác cần break đâu. Do đó để tìm được handle cần tìm các bác cần phải thử từng cái. Danh sách handle thường khá dài, tuy nhiên cái NAG screen thường nằm trong “đám” đầu tiên của chương trình. Em khuyên các bác nếu muốn crack nag thì nên dùng SMU Winspector. Chương trình này sẽ giúp các bác tiết kiệm thời gian hơn trong việc tìm handle. Nó có nhiệm vụ tìm ra các thông tin mà chúng ta cần, như về Window-Handle, Window- Class Name, Window-Text, Parent Window-Handle, Parent Window-Class Name, Parent Window-Text, Module … Khi các bác đã tìm được handle của nag screen rồi > sử dụng lệnh BMSG. Nếu các bác muốn chính xác các thông số quy định -> dùng lệnh : HELP BMSG Okey, giả sử cái nag của các bác có nút OK và các bác đã tìm đúng cái handle -> hãy đánh lệnh sau : BMSG 0084 WM_DESTROY Trong đó 0084 là handle của nag. Vậy câu lệnh trên sẽ làm gì? Nó sẽ báo cho SoftICE để break sau khi cái nag được tắt. Các bác sẽ nằm sau trong 1 vài API “vô danh”. Do đó để trở đoạn code của chương trình các bác phải ấn F12. Tại đây các bác phải tìm được chỗ mà nag được gọi ra bằng cách set BPX hầu hết các lệnh CALL. Nag screen sẽ được tạo ra hay xóa bỏ ở cùng 1 lệnh CALL, vì vậy nếu các bác tìm được lệnh CALL đó rồi thì hãy làm theo bản năng của 1 cracker… kekeke Splash Screens Cách nhanh nhất để crack nag là sử dụng 1 chương trình Hex – Editor và cặp mắt của các bác. Hãy khởi động chương trình và chờ đến khi các nag văng ra. Bây giờ hãy chú ý đến Taskbar và từ đầu tiên của dialog message. Sau đó load file chương trình lên bằng Hex – Editor và tìm các từ đã thấy ở trên. Nếu tìm ra nó, hãy kéo lên và tìm tiếp 4 byte FF FF FF 80 … và hãy sửa 80h bằng 90h. Sau khi patch xong hãy mở lại chương trình và cái nag sẽ đi về cõi cực lạc :) 06.7 Runtime Limits ============ Hạn chế số lần sử dụng Nếu các bác gặp phải chương trình hạn chế số lần sử dụng, chắc chắn sẽ có 1 counter. Hãy tưởng tượng rằng chiếc conuter sẽ tự giảm đi sau mỗi làn sử dụng chương trình. Như vậy sẽ có 1 DEC thường xuyên xuất hiện mỗi khi các bác khởi động chương trình . Bình thường các bác có 1 chương trình 32bit, vậy sau khi disassembly chương trình ra hãy tìm chuỗi “dec dword ptr” cùng với grep. Việc sử dụng grep trong trường hợp này rất quan trọng để nó cho phép các bác thấy những gì xảy ra trong cùng 1 vị trí. Runtime Limit Cracking ============== Giả sử chúng ta đã dùng gần hết số lần cho phép dùng chương trình (giả sử chương trình quy định 25 lần). Bây giờ chúng ta hãy chạy chương trình và chú ý đến số lần mà các bác đã dùng (nó sẽ được thông . Class-Name | Window- Procedure 00 80 (0) | 205 7 | 32 | MSGSVR32 | #32 711 (switch_win) | 17 EF :00 004 B6E 00 84 (1) | 205 7 | 32 | EXPLORER | shell_trayWnd | 14 87 :00 00 016 C … | … | … | … | … | … Nhiệm. của chúng ta chúng được nén trong file _SETUP.LIB. ***Bất kì 1 file nén Data-Base nào đều bắt đầu với " ;13 5D 65 8C 3A 01 02 00 ". Tại điểm cuối của mỗi file nén Data-Base các bác có. được mã hóa vào DATA1.CAB chứ không phải là SETUP.INS script thì nó lại làm việc. 06 .5 Key File Protections =============== ** *1. Tool tốt nhất để analyze 1 Key file là 1 chương trình Hex

Ngày đăng: 03/07/2014, 17:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan