Vai trò quan trọng của kỹ thuật đảo ngược và sự lơ là trong việc bảo vệ phần mềm

Trong phong cảnh kỹ thuật số ngày nay, tài sản trí tuệ phần mềm đại diện hàng tỉ đô la trong R&D, lợi thế cạnh tranh và biết cách chiến đấu. bảo vệ tài sản này khỏi sự phân tích trái phép, nhân bản và sửa đổi là ưu tiên hàng đầu cho các nhà phát triển và các đội bảo mật. hai khái niệm cơ bản -sự thông tin không có trong ngành kỹ thuật và sự cố gắng của họ - nó là cách thực hiện các hoạt động của kỹ thuật này. hiểu làm thế nào để thúc đẩy đối phương pháp đảo ngược, và làm sao để ngăn chặn các kỹ thuật này có thể làm hỏng các nỗ lực của họ là thiết yếu để xây dựng các ứng dụng bền vững. bài báo này cung cấp một sự hướng dẫn đầy đủ, thực tế cho các kỹ thuật này, và cách họ sử dụng, và cách để thực hiện một sự bảo vệ chiến lược không cần thiết.

Hiểu được kỹ thuật đảo ngược: Máy gia tốc của kẻ thù

Kỹ thuật ngược là quá trình phá vỡ một sản phẩm phần mềm để khám phá ra thiết kế, kiến trúc và logic của nó. trong khi nó có những ứng dụng hợp pháp trong nghiên cứu an ninh, khả năng tương tác và phục hồi hệ thống di sản, nó cũng là quá trình chính mà những người tấn công phương pháp chính dùng để ăn cắp các thuật toán, vượt qua các phép thông tin, phát hiện các khả năng gây nhiễu, hoặc tiêm các phần mềm sai trái. một sự hiểu biết sâu sắc về các phương pháp kỹ thuật ngược cho phép các nhà phát triển dự đoán các cuộc tấn công và làm cứng lại các mã tương ứng với nhau.

Những loại kỹ thuật ngược

Kỹ thuật đảo ngược chia thành nhiều loại, mỗi loại cho thấy các lớp khác nhau của một ứng dụng.

Phân tích tĩnh

Phân tích tĩnh (FLT:2) Trình phân tích mã hoặc nhị phân (Fdrat: 3) , và radare diprapry codes vào tập hợp hoặc pseudo cấp cao hơn. Những kẻ tấn công dùng những chức năng, dây và kiểm soát. Những người bảo vệ có thể phản hồi lại sự phân tích tĩnh bằng các biểu tượng cắt bỏ, dùng kỹ thuật chống phân tích, và mã hóa dữ liệu nhạy. Phân tích intere2 đặc biệt nguy hiểm cho việc lắp ráp hoặc pseudo- giả. BAR BAR , và những ngôn ngữ khác có thể tái tạo mã hóa.

Phân tích động

Phân tích động học quan sát phần mềm khi nó chạy. Những người gỡ lỗi như x64dbg, GDB, và WinDg cho phép những người tấn công bước qua các hướng dẫn, thanh tra bộ nhớ, và sửa đổi giá trị ghi lưu trong thời gian thực. Việc đánh giá độ và tính chất mở rộng cũng rơi vào ô này, vì họ kích hoạt các dữ liệu đầu vào bất ngờ để phát hiện các lỗi cơ bản bị lỗi. Để bảo vệ chống phân tích động học, các nhà phát triển có thể thực hiện việc kiểm tra, đánh dấu thời gian thực, và xác định thời gian để phát hiện điểm ngắt hoặc sửa đổi.

Kiểm tra nhị phân và theo dõi hành vi

Bên cạnh phân tích mã, đối thủ có thể thanh tra tài nguyên nhị phân, tập tin cấu hình nhúng, hoặc các tập tin cấu hình, hoặc hình ảnh hóa phụ (v. d., tiêu thụ điện hay kiểu thời gian). Đối với ứng dụng di động, công cụ như Frida cho phép chạy văn lệnh chạy để móc các chức năng và chặn dữ liệu. Cấp kiểm tra này là phổ biến trong DMcumvenation và gian lận phát triển trò chơi. Các biện pháp bảo vệ vệ vệ chạy mã hóa thời gian, khoá, và vòng kiểm tra hợp lệ.

Nghệ thuật tẩy rửa: Làm sao để cải tiến kỹ thuật

Sự lãng quên biến mã hóa thành một dạng tương đương với chức năng nhưng là sự thân thiện của con người. mục tiêu là nâng giá của phân tích cao đến mức một người tấn công phải đầu hàng hoặc chuyển sang mục tiêu dễ dàng hơn. sự lãng quên không phải là về an ninh hoàn hảo mà là tăng thời gian, nỗ lực và kỹ năng cần thiết để hiểu phần mềm.

Comment

Hình thức đọc sách đơn giản nhất là thay đổi tên lớp, phương pháp, trường và biến số địa phương từ tên có ý nghĩa như [FLT: 0]. Công cụ hiện đại cho khả năng đọc (NEx, NEX) và Java (PHG, Zelix Klas) tự động hoá tiến trình này. Phân hủy tên của nó với biểu tượng (bị xóa bỏ bằng lực lượng thông tin).

Name

Dòng chảy điều khiển sắp xếp lại dòng chảy hợp lý của một chương trình trong khi bảo tồn kết quả của nó.

  • Giá trị [Fpaque Predictes:) chèn các nhánh điều kiện luôn luôn đánh giá một giá trị đã biết nhưng khó suy ra được (v. d. nơi ) là luôn luôn luôn. Những thủ thuật này phân hủy để hiển thị các đường mã không thể truy cập được.
  • [FLT: 0] Dòng chảy Flatting:) chuyển đổi vòng lặp và điều kiện thành một mô hình máy tính trạng thái với một biến số giao thức, làm cho lập luận gốc nhánh gần như không thể theo.
  • Sự phân tích chung: [FLT: 1] Viết mã đa chiều bằng lời tuyên bố hoặc sự nhảy gián tiếp, tạo ra một đồ thị lộn xộn đánh bại đồ thị dựa trên công cụ phân tích.

Mã hóa chuỗi và dữ liệu

Chuỗi thường tiết lộ thông tin nhạy như điểm kết thúc ADI, phím mã hóa, thông điệp lỗi và chứng nhận. Ofuscates mã hóa tất cả các dây đã mã hóa vào thời điểm xây dựng và giải mã chúng ngay trước khi sử dụng. Một số công cụ cũng chia giải mã nhiều hàm và áp dụng các phím đa dạng mỗi lần mã được xây dựng lại. Điều này ngăn cản các tìm kiếm và lực lượng tấn công để chạy bộ giải mã hoặc mô phỏng giải mã.

Name

Đối với tài sản có giá trị cao, mã hóa phải đi xa hơn nữa: định dạng byte hay mã máy ảo gốc được thay thế bằng những hướng dẫn p- mã tự chọn, được thực hiện bởi một bộ giải mã nhúng. Trình thông dịch bị obfuscateed, do đó, kẻ tấn công phải đảo ngược cả định dạng hte code lẫn máy ảo. Các sản phẩm đa thức như VMProct, Themida, và Bộ giải mã ảo sử dụng phương pháp này. Tương tự, harpers và mã hoá toàn bộ hệ thống giải mã, chỉ trong suốt quá trình khởi động, phức tạp hơn phân tích. Ghi chú rằng nhiều bộ bộ động cơ chống vi rút cờ đáng nghi ngờ, như cách sử dụng chúng đáng ngờ.

Giữ thăng bằng về an ninh, thực hiện và duy trì sự an toàn

Sự lãng quên không phải là miễn phí. Mỗi sự chuyển đổi thêm thời gian chạy trên đầu - hướng dẫn thêm cho các sơ bộ mờ, gọi giải mã, hoặc lặp lại thông tin ảo. Nếu quá trình chuyển đổi, ứng dụng sẽ trở nên chậm chạp, nội tâm sẽ gây ra đau đớn, và báo cáo tai nạn sẽ trở nên khó khăn. Một cách tiếp cận cân bằng là thiết yếu:

  • Bảo tồn đường dẫn nóng của bạn: Obuct chỉ phần của mã chứa tài sản trí tuệ lõi hoặc giấy phép kiểm tra logic, trong khi để lại I/O, UI, và dữ liệu xử lý mã obfuscated nhẹ.
  • Giữ một bản đồ biểu tượng: Lưu bản đồ tên gốc vào tên gốc tại địa điểm bảo mật, ngoại tuyến. Tính năng này cho phép các đội hỗ trợ giải mã các dấu vết từ khách hàng bị tai nạn mà không phơi bày bản đồ.
  • Test hoàn toàn: Sự tẩy uế có thể gây ra lỗi tinh tế, đặc biệt là khi phản ánh mã sắc thái (v. d., song hóa, tiêm phụ thuộc). Gồm obofusated được xây dựng trong đường ống thử nghiệm CN/CD của bạn.

Phép cầu nguyện và phép ẩn dụ về kỹ thuật ngược lại

Kỹ thuật ngược tồn tại trong vùng màu xám. Ở Hoa Kỳ, [FLT: 0] Đạo luật Thiên niên kỷ Tác quyền Thiên niên kỷ ) cấm việc cắt giảm các biện pháp công nghệ có thể kiểm soát được các tác phẩm có bản quyền, với ngoại lệ hẹp cho việc nghiên cứu an ninh và khả năng không thay đổi. Nhiều giấy phép phần mềm nhất định cấm đảo ngược kỹ thuật. Tuy nhiên, các nhà nghiên cứu an ninh thường dựa vào kỹ thuật đảo ngược để khám phá các yếu tố không có tính chất ngày thứ hai. Các nhà bảo vệ phải hiểu rằng những luật này có thể tránh vi phạm trong khi bảo vệ tài sản của mình. Hẳn là một công cụ để ngăn chặn việc nghiên cứu hợp pháp, như một chương trình nghiên cứu không có trách nhiệm về phương pháp, như một phương pháp thông minh hơn.

Tập tin tốt nhất để bảo vệ phần mềm

Không có kỹ thuật đơn nào cung cấp sự bảo vệ hoàn toàn.

  1. Một vòng đời phát triển an toàn (SDL): ) Để kết hợp việc mô hình và xem xét mã hóa để xác định phần nào của cơ sở mã là giá trị nhất.
  2. Dùng các công cụ quảng cáo hay mở obfuscator: ) ) Công cụ như Progard (Annene/Java), haruserE (C#, và Obfuscator VLLLLVM (luật định nghĩa). Đối với kinh doanh, hãy xem xét cách vận động VProt hoặc Arx.
  3. Lễ hội với lý luận trình phục vụ: [FLT: 1] Không bao giờ chỉ dựa vào mã bên khách để làm bản sao hay các thuật toán chỉ trích. Di chuyển logic nhạy cảm sang hậu phương bảo mật. Nếu tính toán bên cạnh máy khách là không thể tránh, hãy dùng mã ngắt và chứng thực từ xa.
  4. Kiểm tra thời gian chạy bộ bỏ qua: kiểm tra mã lệnh thường xuyên bằng cách kiểm tra mã số của các chức năng quan trọng trong bộ nhớ. Phát hiện bộ gỡ lỗi, giả lập, và môi trường chủ với thư viện chống Sát đáng tin cậy.
  5. Chuẩn bị đáp ứng:) Nếu phần mềm của bạn bị nứt hoặc sao chép, hãy lập kế hoạch thu hồi các phím, ép buộc phải cập nhật, hoặc sửa đổi bộ trình bày không rõ ràng. Cập nhật không phân biệt được (không thể phân biệt được) có thể không hiệu lực hoá các vết nứt được xuất bản mà không thay đổi chức năng.

Kết luận

Kỹ thuật ngược và sự mơ hồ là hai mặt của cùng một đồng tiền. Mở mã hóa dữ liệu và mã hóa mã hóa mã nguồn mở, bạn có thể tăng đáng kể nỗ lực cần thiết để tấn công phần mềm của bạn. Nhưng, bằng cách áp dụng một hệ thống phòng thủ có lớp kết hợp tên không được phép, kiểm soát sự chuyển đổi dòng chảy, mã hóa dữ liệu, và mã hóa mã hóa mã hóa, bạn có thể tăng cường nỗ lực cần thiết để tấn công phần mềm của bạn. Vấn đề là chọn những kỹ thuật phù hợp với giá trị của tài sản, vẫn còn nhận thức hiệu suất giao dịch, và ở trong phạm vi pháp luật. Đối với các nhóm phát triển nghiêm túc về việc bảo vệ tài sản của họ, đầu tư vào tính chất thô tục và an ninh không nhất thiết phải là điều khiển nó.