Biến dạng mã Obfuscation:
Một biến dạng mã obfuscation là một biến đổi mã, T (Chương trình) = khó hiểu Chương trình, người nắm giữ sau:
• Nếu chương trình không chấm dứt hoặc chấm dứt với một mã lỗi sau đó Chương trình làm rắc rối có thể không chấm dứt.
• Nếu không thì chương trình khó hiểu phải chấm dứt và sản xuất các kết quả tương tự như chương trình.
Một trong những biến đổi đang được sử dụng nhất là kiểm soát biến có sử dụng các vị từ đục. Một vị đục được biết đến obfuscator và chưa biết đến các deobfuscator và do đó, các quyết định của các vị từ đục quả là khó để suy luận.
Với vị đục chúng ta có thể có được các phương pháp và nhiều hơn nữa sau đây:
1. Chèn Chết hoặc mã không liên quan:
Xem xét khối cơ bản S = s1, s2, s3, ..., sn. Chúng tôi có thể chia nhỏ khối và chèn mã chết hay sai để nó và một vị từ đó cho phép đánh giá giá trị false để mã chèn không thể đạt được.
2. Điều kiện vòng lặp mở rộng:
Chúng tôi có thể thêm mờ đục luôn đánh giá đúng với điều kiện vòng lặp bằng toán tử AND và do đó, nó tạo phức điều kiện nhưng không gây hại cho số lần lặp và do đó vẫn có chức năng giống nhau. Sản xuất Opaque Constructors: Như đã đề cập , vị đục quả cần phải được dễ dàng cho các obfuscator để suy luận và khó khăn cho các deobfuscator để suy luận. Ngoài vị đục nên tàng hình (pha trộn với các code) và không có trong chi phí tính toán cao. Một trong những cách để sản xuất vị đục được khai thác khó khăn chung của vấn đề phân tích bí danh và các thuật toán hiện hành để phát hiện các cấu trúc dữ liệu đệ quy. Các kỹ thuật cơ bản là : 1. Thêm một mã khó hiểu rằng bản xây dựng thiết lập các cấu trúc năng động. 2. Giữ một tập của con trỏ đến những cấu trúc. 3. Các mã obfuscated chèn nên cập nhật các cấu trúc năng động và vị trí pointes với nó. Nhưng để duy trì bất biến nào đó trên pointes và cấu trúc năng động. (Chẳng hạn như - "sẽ có một con đường từ p1 đến p2 luôn"). 4. Xây dựng một vị đục mà phụ thuộc vào sự bất biến. Điều này định nghĩa An ADT Graph, với các hoạt động trên đó. Các hoạt động khác nhau từ việc thêm nút, xóa nút sáp nhập hai đồ thị, tách một đồ thị và nhiều hơn nữa. Mã đồ thị và các báo cáo rằng thay đổi đó phải được nhúng trong mã, ví dụ: Mã đồ thị nên thực hiện theo ba điều kiện để hơn che giấu bản thân: 1. Các obfuscator nên giữ lại thư viện lớn của các biến thể GRAPH, và sử dụng một số biến thể trong một số bộ phận của các mã. 2. Các mã được thêm vào (đồ thị lớp và tuyên bố rằng sử dụng nó) nên được deobfuscated tới. 3. Bao gồm các đồ thị ADT trong một lớp học sử dụng để pha trộn nó với mã gốc. Một cải tiến hữu ích là dựa vào khả năng đề đồng thời của ngôn ngữ java. Chủ đề và cơ chế lập lịch trình của họ là khó để phân tích, cả hai bởi vì nó không phải là một cơ chế ngôn ngữ phụ thuộc, và vì lịch trình thực tế của một chủ đề là bởi những sự kiện không đồng bộ (tương tác người dùng, tình trạng mạng lưới và vv.). Những tác hại của các vị từ đục từ cấu trúc năng động • Kích thước mã Tăng:. kích thước mã được tăng đáng kể vì thêm người chết / code không thích hợp, và mã đồ thị năng động và hướng dẫn sử dụng nó Các kích thước tăng lên có thể gây tổn hại cho một web được triển khai ứng dụng và ứng dụng di động mà đòi hỏi các kích thước ứng dụng có quy mô nhỏ . • dữ liệu động Xử lý Tăng: từ việc bổ sung các loại hình năng động và thực hiện các hoạt động như thêm và xóa trên đó, chương trình làm rắc rối mới đòi hỏi rất nhiều công dụng trong việc phân phối năng động là nguyên nhân gây tăng thời gian trên không và sử dụng bộ nhớ tăng để giữ cấu trúc những dữ liệu .
đang được dịch, vui lòng đợi..
