PDA

View Full Version : CÁC CRAKER làm việc thế nào (REA forums)



freewarez
07-06-2004, 23:56
Chapter 1: Basics

Trước khi bạn có thể protect your software well thì bạn phải nắm rõ các phương thức mà Crackers sẽ sử dụng để ***** your software.
Cracker ! Họ là những người cố gắng loại bỏ the protection from your cho dù điều đó đựoc phân vào việc bất hợp pháp.

Why Crackers *****

Sai lầm đầu tiên của nhà phát triển phần mềm thường phạm phải là đánh giá không đúng khả năng và số lượng Cracker và điều tệ hại này bất cứ devoloper nào cũng có thể phạm phải.
Hầu hết Crackers are very smart people và tiêu tốn cả ngày cho việc loại bỏ software thậm chỉ cả tuần cho sự thử thách này.
Sự thành công của họ luôn phụ thuộc vào động cơ thúc đẩy. Điều đó có thể làm bạn ngạc nhiên khi biết rằng động cơ này hoàn toàn không có điểm dừng.
Crackers post their cracks and information for free, after all. Họ không kinh doanh, kiếm tiền từ your software, tuy nhiên the people sử dụng Cracks của họ lại có thể tiết kiệm được tiền bạc.
Crackers thảo luận trong những đọ sức không chính thức nhằm nói lên rằng ai là người có khả năng cao để remove a new and very complicated protection scheme và trở thành người được đánh giá cao, tôn trọng trong cộng đồng Crackers.

How Crackers *****: Debuggers and Disassemblers

Sự bảo vệ của developers thường bị coi thường vì họ cho rằng một khi không có Source Code các Crackers không thể hiểu được software's protection. Một sai lầm chết người. Crackers sử dụng 2 bộ công cụ nhằm breaking software protection đó là debuggers and disassemblers.

Debuggers

Debuggers cho phép Cracker dò tìm, thâm nhập vào một application và stop it at any point rồi từ đây theo đến đoạn quan trọng. Các higher−level languages (like C++, Visual
Basic, or Delphi) chỉ có thể bị lần dấu vết trong assembler. tuy nhiên Crackers lại có thể hiểu điều gì đang diễn ra với đoạn code.
Sự thật là tùy theo mức độ cao cấp của programming language càng làm khó hơn to trace. Tuy nhiên với một số sự trợ giúp khác higher−level programming languages có thể cung cấp một vài khả năng for creating really good protection.
Everything has its bright and dark sides.

Disassemblers

Disassemblers có thể dịch application code trở về mã assembler. Một điều thuận lợi mà disassemblers làm được là luôn dịch được sang assembler, nhờ đó mà Crackers chỉ cần nắm rõ một ngôn ngữ asm này. Chất lượng trả về của quá trình dịch ngược này tùy thuộc vào the quality of the disassembler. Disassembler tốt nhất không những có thể dịch được hoàn toàn mà còn làm cho code rõ ràng, thuận tiện trong việc đọc để hiểu chúng.
Ví dụ: Nếu Crackers tìm thấy String "Wrong ****** number" và xác định vị trí nó trong đoạn code thì hoàn toàn có thể tìm được một phần của đoạn code that protects the application. Tại ví trí này không ai có thể ngăn cản được việc Cracker tìm hiểu protection và breaking it.

Decompilers

Decompilers có thể dịch application code trở về nguyên dạng source code. A decompiler chỉ có thể dịch được applications được viết bằng ngôn ngữ được hỗ trợ bởi decompiler For example, decompilers for Delphi, Visual Basic, and Java. Và một khi Crackers nắm rõ, biết được ngôn ngữ tương ứng vì thật easy to breaking it.

The Most Frequent Protection Failures
Đây là một vài nguyên nhân mà a program may not be well protected against illegal copying:
• Không có sự bảo vệ nào: Với các programs không được protec and không có sự yêu cầu từ authors cho phép users mua. Một khi program không được protect để chống lại việc sao chép, developers có thể sẽ không ngạc nhiên nếu khoản lợi nhuận thu được của họ rất thấp.
• Program với sự bảo vệ yếu kém: Khoảng chừng 70% tổng số programs có protection thật quá sức yếu kém, điều này khiến Crackers có thể nhanh chóng loại bỏ protect này.
• Program protection gây lỗi cho chính program: Khá nhiều programmers bảo vệ sản phẩm của họ thật yếu kém hoặc không trọn vẹn bởi họ lo ngại rằng các tính năng protect làm việc không chính xác sẽ gây các trục trặc.

Cách tốt hơn nhắm giảm khả năng cũng như kéo dài thời gian ***** của Cracker là sử dụng chính các Crackers’s Programs test lại protection đảm bảo hạn chết các thiếu sót.


<Bài viết có sử dụng tài liệu>
Các bài viết này các bạn có thể tìm thấy trong REA CD sắp được phát hành...

freewarez
07-06-2004, 23:57
CÁC KIỂU BẢO VỆ CHỐNG CRAK Của phần mềm:
Chapter 2: The Basic Types of Software Protection

Phần này giới thiệu, mô tả một số loại software-protection hiện thời đang được sử dụng
Registration−Number (******−Number) Protection
Chương trình sự dụng registration−number yêu cầu user nhập registration number to register. The registration number phụ thuộc vào các tiêu chuẩn riêng biệt.
Programmers sử dụng nhiều loại registration−number protection, bao gồm các thứ sau:
• Registration number luôn luôn là một hằng số được lưu trữ sẵn.
• Registration number thay đổi phụ thuộc thông tin đăng kí như (company, name, and so on).
• Registration number thay đổi lệ thuộc vào user's computer.
• Registration−number protection trong Visual Basic or Delphi programs.
• Registration number được check online.

Registration Number Is Always the Same
Chương trình protec bằng các thức này yêu cầu user nhập a registration number. Tuy nhiên bởi vì registration number là một hằng số cố định, crackers có thể tìm được only the correct registration number, post it online từ đó chương trình có thể registered by anyone.
Để cải thiện cách thức protection này ta dùng một chút kĩ thuật so sánh với một con số registration−number khác.
Con số thực không nên saved in memory nhằm compare với entered number (một con số đã được thực hiện XORed hoặc các tính toán khác). Con số đúng cũng được tính toán lại và cả hai (số Correct registration number gốc và sau khi tính toán) đều được dùng để so sánh..
(Chẳng hạn entered number là một số A, qua các tính toán cho số B. Correct Registration Number gốc là một số C, qua tính toán cho ra số B. So sánh A và C(sau khi thực hiện các phép toán) để cho kết quả đúng sai).
Tất nhiên, bạn có thể sử dụng các tính toán phức tạp nhằm làm khó dễ cho cracker để hiểu và cho ra Correct Registration number.
Hoặc bạn có thể làm cách hay hơn trong phương thức protect này bằng việc encoding several program sections, chẳng hạn như Save function. (Correct Registration Number được tạo thành từ encoding này hoặc là sự kết hợp lại)
Với biện pháp này cũng giúp bạn tránh khả năng Crackers dùng phương thức patch (hiệu chỉnh trực vào cấu trúc điều kiện trong program code). Khi đó nếu user chưa nhập correct registration number hoặc không đúng thì functions bị blocked sẽ làm việc không chính xác (thậm chí gây crash chương trình). Việc decode these sections chỉ được tiến hành khi chương trình gọi các blocked functions này. Và nếu như functions lại được encode lần nữa trước khi thật sự được sử dụng thì program chứa quá nhiều encoded sections.
Kết quả là program sẽ không bao giờ có thể decoded in the memory một cách trọn vẹn, có nghĩa là việc dump from memory sẽ chẳng đem lại được nhiều thứ gì cho Crackers. Bạn nên kết hợp cách thức này với cách loại protect được giới sau.

Registration Number Changes in Accordance with Entered Information

Loại protect này thường được nhất. Trong trường hợp này, trước khi bạn nhập registration number thì phải nhập các thông tin như user name, company hoặc một số thông tin khác and correct registration number thay đổi tùy thuộc thông tin nhập vào. Nếu bạn nhập registration number không tương ứng với information việc registetration không thể hoàn tất.
Kĩ năng của programmer càng cao, càng gây nhiều khó khăn hơn cho crackerers to break this protection. Mặc dù ngay cả với thuật toán tính toán vô cùng phức tạp, một khi crackers entered the registration number nó vẫn có một lần so sánh giá trị sau khi tính toán và như thế thì crackers có thể trace xuyên suốt program nhằm tìm ra correct registration number.
Một ý kiến hay để tăng cường thêm cho protection này là cải thiện thiết kế thuật toán phát sinh registration number từ entered name. Đa phần programs không chú trọng đến việc này, registration number không thật sự được kiểm tra mà thường là nằm trong một khoảng kết quả. The attacker có thể lợi dụng sơ hở này và phát sinh ra registration number theo ý muốn.
Cải thiện lại cách này bằng biện pháp sử dụng thêm một số hidden algorithm để kiểm tra registration number thật sự là một con số đúng duy nhất.
Bạn có thể kết hợp với cách mã hóa một phần program như đã nói trên khiến users không thể sử dụng trong unregistered version. Một khi bạn verified một phần registration number, có thể sự dụng phần chưa được xác minh này để tiến hành decoding các parts của program. Nếu bạn đạt được đến khả năng tốt hơn và code đủ độ dài cần thiết thì gần như không thể tìm thấy giá trị correct để có thể encoding đối với crackers. ASProtect sử dụng hướng đi này.

Registration Number Changes in Accordance with the User's Computer
Đây là một cách protection chả dễ chịu gì đối với attacker và ngay cả với crackers không chú ý, lơ là mặc dù việc register với chính computer cracker nhưng có thể không thực thi với các máy.
The registration number có thể thay đổi, ví dụ như có thể từ việc kết hợp hard drive ****** number or số ngẫu nhiên được kết nối lại. (Cần lưu ý hide đi registration number này thật cẩn thận. Bởi vì chỉ cần tìm thấy thì có thể chuyển đổi về dạng thức chung rồii từ đó tìm ra same registration number cho bất kì computer nào.
Đương nhiên, registration number nên thay đổi phát từ các thông tin khác như user name, company...vì thế nó chỉ có thể sử dụng cho duy nhất 1 user cũng như duy nhất 1 computer.
Một khi sử dụng protection này điều quan trọng là che dấu cả code nhận dạng computer và checking code đúng. Tốt hơn là nên kết hợp với các cách protect khác.

Registration−Number Protection in Visual Basic Programs
Cái làm nên sự khó khăn trong việc ***** các programs này là do chính bản thân ngôn ngữ.
VB4
Vấn đề ở đây là Visual Basic 4 sử dụng VB40016.dll / VB40032.dll để gọi các phép toán so sánh.
trouble is that VB4 programs mostly use the same VB40016.dll (VB40032.dll) library call for comparing the
entered registration number to the correct registration number.
VB5, higher and Complie P-Code
p-Code (packed code), không như Visual Basic 4 với chương trình sử dụng loại này code sẽ được sang pseudo−instructions chứ không phải là mã máy (assembly). Và từ các instructions này đóng vai trò hướng dẫn chương trình thực thi. Tuy là Programs in p-code có thể bị traced in SmartCheck nhưng chẳng đơn giản.
Điểm yếu của cách này là không thể áp dụng các anti-debugging tricks.

Registration Number Is Checked Online
Lợi ích, cũng như điểm mạnh của loại protect thì này không cần xét nhiều cũng thấy khả năng protect cao. Tuy nhiên cũng cần lưu cách thức check.
Có thể khi user nhập registration code sẽ gửi thông tin này đến server để xác nhận tính xác thực của registration code này rồi từ đó server gửi ngược về data xác minh. Vấn đề ở đây là data gửi về như thế nào ? Nếu chỉ đơn thuần là giá trị TRUE / FALSE thì việc crackers patch trực tiếp vào program ở part nhận data trả về.
Do đó việc kết hợp với các protection khác là điều cần thiết. Chẳng hạn sử dụng cách blocked functions có mã hóa và data từ server gửi về là key để decoding hoặc là data cho blocked functions. Ngoài ra việc limited IP cũng là một cách nhằm xác minh user, chỉ một user cho registration code này.
Còn vấn đề giải quyết khi xác nhận có dấu hiệu registration code không hợp pháp được áp dụng tùy biến: Delete program, gây crash programs ..etc...

Khoaxxx
08-06-2004, 00:08
Chỉ bảo vệ được phần nào thôi, ngay cả các đại gia MS, Adobe... còn phải bó phép nữa là...

dinh-tran
13-01-2006, 07:17
Chào bạn Freewarez,
Bạn co thể cho mình xin d/c mail cua ban dược kô vậy?
Thanks
dinh_tran@optusnet.com au

newman
13-01-2006, 08:14
Mình cũng muốn hỏi bác freewarez's Freeware là CD REA chừg nào có vậy??? Mình cũng muốn ngâm cứu vấn đề này nhưng không biết bắt đầu từ đâu???

netstavi
13-01-2006, 13:39
CRAKER có bị bóc lịch không, dạo này haker bóc lịch nhiều :D

tpthien
16-01-2006, 19:49
mấy bác bảo trọng nhé :D