Nếu bạn đã từng tự hỏi làm thế nào những tên cướp biển phần mềm có thể lấy phần mềm và bẻ khóa hết lần này đến lần khác, ngay cả khi có bảo mật, thì loạt bài nhỏ này là dành cho bạn. Ngay cả với các phương pháp tiên tiến nhất hiện nay để đánh bại vi phạm bản quyền, vẫn tương đối dễ dàng để bẻ khóa hầu hết mọi chương trình trên thế giới. Điều này chủ yếu là do khả năng của trình xử lý máy tính hoàn toàn bị thao túng bởi trình gỡ lỗi lắp ráp. Sử dụng điều này, bạn hoàn toàn có thể bỏ qua quá trình đăng ký bằng cách bỏ qua quy trình xác minh mã khóa của ứng dụng mà không cần sử dụng khóa hợp lệ. Điều này hoạt động vì lắp ráp cho phép bạn nói chuyện trực tiếp với bộ xử lý và bỏ qua quá trình đăng ký.
Chúng ta hãy xem xét cách bẻ khóa có thể hoạt động trong thực tế bằng cách xem xét một chương trình ví dụ (một chương trình không phục vụ mục đích nào khác ngoài việc tôi hack). Tôi sẽ không hướng dẫn bạn cách thực sự bẻ khóa một chương trình hợp pháp, bởi vì tôi không thể chỉ bẻ khóa một chương trình để trình diễn, nhưng các kỹ thuật áp dụng cho các ví dụ của tôi sẽ cung cấp cho bạn nền tảng cần thiết để tạo ra chương trình của riêng bạn. Tại thời điểm đó, đó là một bài kiểm tra về đạo đức của bạn nếu bạn muốn sử dụng kiến thức của mình tốt hay xấu.
Yêu cầu
- Windows (chỉ ví dụ, trình gỡ lỗi tồn tại trên các nền tảng)
- Trình gỡ lỗi được cài đặt: IDA , ollydbg , v.v. (ollydbg sẽ được sử dụng trong các ví dụ)
Bước 1 Kiểm tra chương trình
Đầu tiên, chạy chương trình mà bạn đang cố gắng kích hoạt nó bằng một khóa ngẫu nhiên để xác minh rằng bạn cần một khóa phần mềm hợp lệ để tiếp tục. Điều này là để xác minh rằng chúng tôi có thể đưa ra các phím.
Bước 2 Chạy chương trình trong trình gỡ lỗi
- Chạy ollydbg.
- Mở chương trình bạn muốn bỏ qua với ollydbg.
- Nhấp vào nút phát để chạy chương trình với trình gỡ lỗi được đính kèm.
- Bấm chuột phải vào cửa sổ CPU và bấm Tìm kiếm> Tất cả các cuộc gọi đa phương thức .
- Tìm kiếm các DLL quan tâm cao. GETDLGITEMTEXT , sẽ dành cho các hộp thoại, được gọi khi bạn cố nhập khóa phần mềm. Bằng cách bước vào chức năng với trình gỡ lỗi, chúng ta có thể kiểm tra đăng ký cụ thể. SENDDLGITEM cũng có thể được sử dụng.
- Kiểm tra xem cái nào hoạt động để thoát ra khỏi vòng kích hoạt bằng cách nhấp chuột phải vào lệnh gọi DLL và đặt điểm dừng cho tất cả các phiên bản của cuộc gọi đó.
- Tiếp tục chương trình và nhập bất kỳ khóa phần mềm nào bạn cảm thấy thích. Nếu trình gỡ lỗi bị hỏng (tạm dừng thực thi chương trình) sau khi nhập khóa của bạn, thì bạn biết rằng bạn đã tìm thấy DLL trong bước 5.
- Nhấn F8 trở lại trong cửa sổ CPU để buộc bước tiếp theo cho đến khi bạn nhận được TEST EAX. EAX là sự trở lại của một giá trị, có nghĩa là kiểm tra đang được thực hiện ở đây. Khi kiểm tra, chúng ta có thể thấy rằng EAX đang kiểm tra một số không bằng giá trị null. Điều này có nghĩa là nếu nó được thay thế bằng bất cứ thứ gì khác ngoài null, nó sẽ chạy.
- Nhấp chuột phải vào EAX và thay đổi giá trị hex thành 1, thay vì 0.
- Tiếp tục lại chương trình và bạn sẽ kích hoạt thành công chương trình. Và để chứng minh nó đã được đăng ký với tôi:
Điều này hoạt động bởi vì bạn đang thực hiện quá trình nhảy từ một thanh ghi và bỏ qua bước xác minh khóa được nhập. Để khai thác thuật toán đăng ký khóa.