Bẻ khóa ứng dụng Java đã mã hóa bằng jhsdb (hotspot debugger)

Một giải pháp bảo vệ mã Java là mã hóa tệp class hoặc mã hóa tệp jar. Loại giải pháp này tải tệp class hoặc tệp jar đã mã hóa thông qua bộ tải tự định nghĩa, điều này là vô dụng do sự tồn tại của cơ chế Attach của JVM và có thể dễ dàng bị bẻ khóa bằng các công cụ đi kèm JDK.

Ứng dụng mẫu

Dưới đây là ứng dụng mẫu với cửa sổ swing đơn giản và một nút. https://github.com/3-keys/test-swing-app

img

Mã hóa ứng dụng

Xuất tệp jar có thể chạy được với Eclipse và sử dụng công cụ mã hóa để mã hóa tệp jar. Sau khi mã hóa, cấu trúc tệp jar như sau:

img

test-swing-app.jar là dữ liệu tệp jar đã mã hóa, các class Launcher là các class tải tùy chỉnh của công cụ này, và gói jar đã mã hóa vẫn được chạy thông qua lệnh java -jar tiêu chuẩn

Bẻ khóa ứng dụng đã mã hóa

Đầu tiên, chạy tệp jar đã mã hóa, sau đó tìm thư mục bin của JDK và bạn sẽ có thể tìm thấy tệp jhsdb.

1_nsxbwNJrGJB4mpzsQv55VA

Chạy jhsdb hsdb, mở HotSpot Debugger, nếu trên Windows, bạn có thể cần chạy với quyền quản trị, nhấp File để chọn Attach to HotSpot process…,

img

Sử dụng lệnh ps aux | grep java trong hệ thống Linux, và tìm pid tiến trình thông qua Task Manager trong hệ thống Windows. Nhập pid tiến trình vào hộp thoại bên dưới.

img

Sau khi gắn kết thành công, nhấp Tools->Class Browser

img

Class Browser chứa thông tin của tất cả các class đã tải, tìm kiếm com.example và bạn có thể thấy tất cả các class dưới com.example

img

Nhấp vào com.example.TestWindow @0x0000…. và sau đó nhấp "Create .class File"

img

cd đến thư mục nơi lệnh jhsdb được chạy trước đó, bạn có thể thấy tệp class đã tạo

img

Sử dụng Luyten hoặc jadx để mở tệp class và bạn có thể thấy mã đã dịch ngược

img