Làm xáo trộn các ứng dụng được tạo bằng Dotfuscator (Phiên bản Visaul Studio 2022)

Trang Cập Nhật :
Ngày tạo trang :

tóm tắt

Các ứng dụng dựa trên loạt khuôn khổ .NET được tạo bằng ngôn ngữ được gọi là ngôn ngữ trung gian chung, vì vậy chúng có thể được đọc ở dạng gần với mã nguồn gốc bằng cách sử dụng các công cụ tháo gỡ và tương tự. Phần này mô tả cách xáo trộn các lớp và tên phương thức thành các định dạng dễ dàng không thể đọc được bằng cách sử dụng phiên bản miễn phí của Dotfuscator, công cụ obfuscator đi kèm với Visual Studio.

Nó được mô tả bằng Visual Studio 2022, nhưng nó cũng có thể được sử dụng trong các phiên bản khác của Dotfuscator.

Môi trường hoạt động

Studio trực quan
  • Visual Studio 2022

Về Dotfuscator

Dotfuscator là một công cụ xáo trộn làm cho mã nguồn khó đọc khi tháo rời cho các ứng dụng được viết với họ .NET của các framework (sau đây gọi là .NET). Dotfuscator đi kèm với Visual Studio miễn phí và có tính phí.

Phiên bản miễn phí không có sẵn trừ khi nhiều tính năng của nó bị giới hạn hoặc Visual Studio được khởi động, nhưng bất kỳ ai cũng có thể sử dụng nó miễn là họ đã cài đặt Visual Studio. Phiên bản trả phí có nhiều tính năng xáo trộn mạnh mẽ không có trong phiên bản miễn phí, nhưng nó được cung cấp với mức giá mà công chúng khó có thể mua được.

Dotfuscator có các tính năng, giá cả và phiên bản khác nhau tùy thuộc vào phiên bản, vì vậy vui lòng tham khảo trang chủ sau để biết chi tiết.

Giới thiệu về Disassembly

Tôi đã đề cập trước đó rằng các ứng dụng được viết bằng .NET có thể dễ dàng tháo rời và đọc mã nguồn gốc, nhưng điều thực sự đang xảy ra là nếu bạn tháo rời một tệp .exe (hoặc tệp .dll) như trong hình sau, bạn gần như có thể tái tạo mã nguồn gốc, chẳng hạn như không gian tên, tên lớp, tên phương thức, v.v.

Các loại chương trình cần được xáo trộn

Nó chủ yếu áp dụng cho các chương trình được phân phối và chạy cho người dùng không xác định. Ví dụ, các ứng dụng máy tính để bàn. Ngược lại, các ứng dụng Web gặp khó khăn khi truy cập trực tiếp các tệp chương trình ít quan trọng hơn đối với việc xáo trộn.

Lần này, chúng ta đang xem xét một dự án trong WPF, một ứng dụng dành cho máy tính để bàn.

Cài đặt Dotfuscator

Ứng dụng này đi kèm với Visual Studio 2022 nhưng không được bao gồm trong cài đặt tiêu chuẩn (trong một số Visual Studios trước đây, nó có thể được cài đặt từ đầu).

Để thêm Dotfuscator: Khởi động Visaul Studio và chọn Nhận Công cụ và Tính năng từ Công cụ.

Chọn "Các thành phần riêng lẻ" từ tab trên, kiểm tra "Bảo vệ trước - Dotfuscator" trong nhóm "Công cụ mã" và nhấp vào nút Cài đặt ở góc dưới bên phải. Khi làm như vậy, đóng bảng điều khiển Visual Studio.

Thủ tục xáo trộn

Mô tả các bước để làm cho những cái tên này trở nên khó hiểu và bị xáo trộn.

Tạo một ứng dụng trong Visual Studio, xây dựng .exe tệp, và sau đó bấm vào các tệp . Tạo một tập tin dll. Cho đến nay, điều này cũng giống như việc tạo ra một ứng dụng thông thường. Ứng dụng bạn tạo phải dành cho những ứng dụng được tạo trong bản dựng Bản phát hành. (Vì bạn thường không xuất bản trong Gỡ lỗi.)

Sau khi bạn tạo .exe hoặc .dll, hãy chọn Công cụ từ menu Visual Studio, sau đó chọn Bảo vệ Trước - Cộng đồng Dotfuscator.

Màn hình đăng ký được hiển thị, nhưng không bắt buộc, vì vậy nếu không cần thiết, hãy nhấp vào nút hủy như hiện tại.

Ở lại và nhấp vào đồng ý cái nút.

Dotfuscator bắt đầu. Ứng dụng tự hoạt động, vì vậy bạn có thể làm xáo trộn các tệp không liên quan đến dự án hiện đang mở. (Trong trường hợp phiên bản miễn phí của chính ứng dụng, người ta cho rằng Visual Studio đã được khởi động.) )

Trong bài viết này, tôi sẽ làm xáo trộn một dự án ứng dụng WPF .NET 6.0 được xây dựng với mặc định làm mẫu.

Chọn "Đầu vào" từ danh sách bên trái và nhấp vào nút "+".

Chọn tệp chương trình bạn muốn làm xáo trộn. Các ứng dụng được viết trong .NET Framework thường làm xáo trộn .exe, nhưng trong .NET và .NET Core, các chương trình thường được .dll thực thể. Các ứng dụng NET WPF cũng sẽ có các thực thể .dll, vì vậy hãy chọn .dll.

Nó sẽ được thêm vào danh sách. Nếu nó bao gồm nhiều DLL, hãy thêm nhiều hơn một DLL.

Sau khi thêm tệp mục tiêu, hãy nhấp vào nút "Xây dựng" từ thanh công cụ.

Bạn sẽ được hỏi nơi lưu tệp dự án bị xáo trộn, vì vậy hãy chỉ định nó. Vị trí có thể tùy ý, nhưng nó cũng có thể là vị trí đầu ra của một chương trình bị xáo trộn. Nó lưu đầu vào của bạn và sẽ mở tệp dự án xáo trộn này nếu bạn muốn làm xáo trộn nó một lần nữa. Phần mở rộng là ". xml".

Nếu bản dựng đã bắt đầu và "Bản dựng đã hoàn thành" được hiển thị trong thông báo bên dưới, nó cho biết đã hoàn thành thành công. Màn hình hiển thị nhật ký xây dựng và danh sách các lớp và biến bị xáo trộn.

Chọn "Kết quả" từ danh sách bên trái để xem chi tiết về cách tên lớp và phương thức đã thay đổi.

Tên lớp và tên phương pháp trong cây bên phải, chẳng hạn như "->", là tên sau khi xáo trộn. Bằng cách thay đổi tên lớp hoặc tên phương thức thành một cái tên vô nghĩa như thế này, bạn có thể làm cho nội dung của mã nguồn khó đọc ngay cả khi nó bị tháo rời.

Các chương trình bị xáo trộn được lưu trong một thư mục có tên "Dotfuscated" ở nơi bạn đã lưu tệp dự án.

Bản đồ.xml là một tệp kết quả xáo trộn, vì vậy bạn có thể xóa nó một cách an toàn.

Vì .NET 6.0 WPF không thể được khởi động bởi một DLL một mình, sao chép "XXXX.exe" và "XXXX.runtimeconfig.json" được tạo tại thời điểm xây dựng đầu ra vào cùng một thư mục và khởi động nó. Nếu bạn có thể bắt đầu bình thường, không có vấn đề gì trong thời điểm hiện tại. Nếu bạn không thể khởi động nó, bạn có thể bị thiếu tệp hoặc bạn có thể đang tạo một chương trình trở nên không nhất quán do xáo trộn.

Nếu bạn phân tích chương trình đã thực sự bị xáo trộn, bạn sẽ thấy một số dấu vết của sự xáo trộn. Tờ đầu tiên của hình dưới đây là trước khi xáo trộn, và tờ thứ hai là sau khi xáo trộn.

Lưu ý rằng tên lớp được xác định trong thư viện .NET không có thể đổi tên vì chúng tồn tại dưới dạng khuôn khổ.

Lần này, tôi đã làm xáo trộn dự án mặc định được tạo ra như hiện tại, vì vậy tôi nghĩ rằng có một hình ảnh gần như không bị xáo trộn, nhưng tôi nghĩ rằng hiệu ứng của obfuscation trở nên rõ ràng vì dự án càng lớn, các lớp độc đáo hơn sẽ tăng lên.

Ngoài ra, mặc dù chúng tôi đã bao gồm quy trình trong phiên bản miễn phí lần này, phiên bản trả phí cho phép xáo trộn phức tạp hơn và cũng ngăn chặn việc tháo gỡ chính nó. Tuy nhiên, xáo trộn có nhiều tác dụng phụ khác nhau và có khả năng xảy ra, vì vậy khi xáo trộn được thực hiện, cần phải làm cho nó trong khi xem xét liệu nó có hoạt động bình thường ngay từ đầu thiết kế hay không.

Loại trừ xáo trộn

Nếu bạn có tên lớp hoặc thuộc tính mà bạn không muốn làm xáo trộn, bạn có thể loại trừ chúng.

Trong khi cụm được tải, hãy chọn Đổi tên > Loại trừ từ phía bên trái của màn hình. Vì nội dung của lắp ráp được hiển thị, tôi sẽ kiểm tra những nội dung mà tôi không muốn làm xáo trộn.

Có thể loại trừ sự xáo trộn ở cấp độ chi tiết, nhưng tôi nghĩ sẽ dễ dàng hơn để điều chỉnh nó trên cơ sở không gian tên.

Chế độ thư viện

Khi bạn chọn cụm đầu vào, bạn có thể thấy rằng "Chế độ thư viện" được chọn.

"Chế độ thư viện" là đính kèm với dll có thể được gọi bởi các chương trình khác. Nếu được kiểm tra, các lớp công cộng và tài sản được gọi bởi các chương trình khác sẽ bị loại trừ khỏi sự xáo trộn.

Tuy nhiên, nói chung, rất hiếm khi để lộ một thư viện được gọi là generatively từ các chương trình khác và tôi nghĩ rằng nó thường bị xáo trộn cho các ứng dụng hoạt động một mình, vì vậy về cơ bản có thể loại bỏ kiểm tra này.

Xáo trộn các .exe một tệp (chưa được xác nhận)

Điều tra về mục này trong Visual Studio 2022 hiện chưa được xác nhận.

Nó có thể sẽ bị xáo trộn với MSBuild, nhưng tôi đang tạm dừng nó vì thiếu thông tin vào lúc này.