bloodplanet
Wh------
-
21/03/2015
-
7
-
51 bài viết
C, C++ cho Virus (Phần 5): Hàm RegOpenKey, RegSetValueEx, RegCloseKey
Nội dung phần 5:
1. Vấn đề gặp phải
Ở phần trước chúng ta đã dùng hàm system để thực hiện các lệnh trong cmd của Windows. Nhưng vấn đề đặt ra ở đây là:
- Nếu cmd đã bị disable thì sao?
- Tài khoản chúng ta đang chạy không phải là tài khoản administrator thì sao?
Tất nhiên khi đó chương trình của chúng ta sẽ chạy không ra kết quả mà chúng ta mong đợi, hôm nay mình sẽ đưa ra một hướng tiếp cận khác để đạt được mục đích giống như các phần trước.
2. Hướng đi khác cho vấn đề
Lần này chúng ta sẽ sử dụng hàm khác không phải hàm system để thực hiện việc tạo key mới trong registry hay thay đổi giá trị của key trong registry.
Để làm được những việc đó chúng ta có thể sử dụng hàm RegSetValueEx, cú pháp hàm này như sau:
Các bạn có thể xem chi tiết về hàm này trên trang:
trong đó:
Nhưng trước khi đặt được giá trị cho key ta phải mở nó ra trước, chúng ta có thể sử dụng hàm RegOpenKeyEx, các bạn tham khảo trên:
Và sau khi thao tác xong với key đó ta phải đóng key đó lại, ta có thể sử dụng hàm RegCloseKey, các bạn tham khảo trên:
- Vấn đề gặp phải
- Hướng đi khác cho vấn đề
1. Vấn đề gặp phải
Ở phần trước chúng ta đã dùng hàm system để thực hiện các lệnh trong cmd của Windows. Nhưng vấn đề đặt ra ở đây là:
- Nếu cmd đã bị disable thì sao?
- Tài khoản chúng ta đang chạy không phải là tài khoản administrator thì sao?
Tất nhiên khi đó chương trình của chúng ta sẽ chạy không ra kết quả mà chúng ta mong đợi, hôm nay mình sẽ đưa ra một hướng tiếp cận khác để đạt được mục đích giống như các phần trước.
2. Hướng đi khác cho vấn đề
Lần này chúng ta sẽ sử dụng hàm khác không phải hàm system để thực hiện việc tạo key mới trong registry hay thay đổi giá trị của key trong registry.
Để làm được những việc đó chúng ta có thể sử dụng hàm RegSetValueEx, cú pháp hàm này như sau:
Mã:
LONG WINAPI RegSetValueEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpValueName,
_Reserved_ DWORD Reserved,
_In_ DWORD dwType,
_In_ const BYTE *lpData,
_In_ DWORD cbData
);
Mã:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724923%28v=vs.85%29.aspx
Mã:
hKey: handle tới key của registry
lpValueName: tên của giá trị key muốn thiết lập
Reserved: giá trị được định trước và để nó mặc định là 0
dwType: kiểu giá trị dữ liệu (đã đề cập ở các phần trước)
*lpData: giá trị muốn lưu
cbData: kích thước của thông tin (giá trị) muốn lưu
Nhưng trước khi đặt được giá trị cho key ta phải mở nó ra trước, chúng ta có thể sử dụng hàm RegOpenKeyEx, các bạn tham khảo trên:
Mã:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724897%28v=vs.85%29.aspx
Mã:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724837%28v=vs.85%29.aspx
Chỉnh sửa lần cuối bởi người điều hành: