Giải mã store procedure bị mã hóa trong sql server.

By
Advertisement
Khi bảo trì một dự án phần mềm, Nếu bạn gặp phải trường hợp phải sửa một store procedure, function, trigger, view mà bị mã hóa thì có vẻ hơn ngán vì rất khó để lấy được code nguyên bản để sửa. Bài viết hôm nay mình sẽ giới thiệu cách để giải mã ra code.


1. Làm sao để mã hóa một Store procedure.

Để tạo một store procedure được mã hóa ta dùng thêm lệnh "with encryption" như trong hình dưới.
Store procedure khi đã mã hóa khi view bằng ssms trên object explorer sẽ thấy có thêm hình ổ khóa đã khóa, các store không bị mã hóa sẽ không có ổ khóa này.

2. Cấu trúc Store procedure bị mã hóa khác không mã hóa ở đâu.

Khi ta modify những store này sẽ báo lỗi và không cho sửa, không cho thấy code.

Khi kiểm tra định nghĩa thì những sp mã hóa được thay thế bằng NULL

Xem nội dung sp thì chỉ có một message thông báo đã bị mã hóa

Đối với sp không mã hóa thì ta có thể thấy nội dung ngon lành

3. Giải mã hóa thủ công.

Việc giải mã hóa thủ công đòi hỏi phải có quyền truy cập cao nhất vào SQL server bằng mode DAC tối thiểu bạn phải có quyền SYSADMIN trên máy chạy SQL server.
Bạn vào SQL server bằng mode DAC như sau:

Nếu không vào được Bạn xem đã bật service sql browse chưa nhé.
Khi vào được trong Bạn chạy lệnh như sau sẽ thấy được nội dung của sp bị mã hóa
Bạn dùng đoạn lệnh sau để giải mã thành dạng text:

4.Giải mã bằng Tool

Hiện thì mình biết một tool miễn phí hỗ trợ việc giải mã này rất tốt là :
https://www.devart.com/dbforge/sql/sqldecryptor/download.html

Bạn tải về cài đặt vô máy và thao tác 2 bước như sau ta đã giải mã xong:


Ngoài ra sp ra, tool này còn hỗ trợ giải mã đối với  function, trigger, view. Quá ngon cho hàng free phải không Bạn.

5. Kết luận

Tới đây Thi đã giới thiệu xong cho các bạn cách giải mã một sp bị mã hóa bằng cách thủ công và bằng công cụ, hy vọng giúp được nhiều cho các Bạn. Nếu Bạn có cách khác hoặc tool khác cool hơn Bạn chia sẻ cho mình bằng comment bên dưới nhé.

Xin chào,!

0 blogger:

Đăng nhận xét