C, C++ cho Virus (Phần 5): Hàm RegOpenKey, RegSetValueEx, RegCloseKey

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:
  • Vấn đề gặp phải
  • Hướng đi khác cho vấn đề
1699953816486.png

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
);
Các bạn có thể xem chi tiết về hàm này trên trang:
Mã:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724923%28v=vs.85%29.aspx
trong đó:
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
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:
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:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: bantayquyn92
Bài viết hay, like mạnh :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Required #include
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
sunny;n53087 đã viết:
Nhưng đã thấy like đâu :))

Làm thế nào để thấy được cái hình kia hay vậy?

scila1996;n53106 đã viết:
Required #include

Ừ phải thêm thư viện đấy vào nữa, có lẽ khi nào rảnh mình sẽ chỉnh sửa cho bài này chi tiết thêm 1 chút nữa.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
bloodplanet;n53116 đã viết:
Làm thế nào để thấy được cái hình kia hay vậy?
Quyền năng tối thượng đâu dễ ae mình xem được a .
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Hackerstudent98;n53117 đã viết:
Quyền năng tối thượng đâu dễ ae mình xem được a .

:)) Hóa ra là do đặc quyền riêng à :v
Kiểu này thì sao mà đú được :3
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Kiểu BYTE trong các hàm API của Windows.h

BYTE được định nghĩa trong Windows.h chính là kiểu unsigned char . Khi gọi một hàm mở Registry thì cần Open Key trước bằng RegOpenKeyEx . Tham số con trỏ PKEY ở cuối sẽ trả về KEY HANDLE đang được mở

Để đọc thì cần một Buffer (bộ nhớ đệm) để lưu chuỗi hay dữ liệu đọc được từ một Value của Registry, có thể cho Buffer = 1024 hoặc 2048 BYTE

Mã:
BYTE Buff[1024];

Để ghi thì cũng cần một Buffer như này nhưng dữ liệu sẽ gán vào trước BUFFER này và truyền cho hàm RegSetValueEx

Ngày mai rảnh mình sẽ demo một vài ví dụ về các hàm Registry này, lưu ý là Registry có 6 kiểu cơ bản là :

Xem ví dụ :

Mã:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWARE	est]
"1"="DH BACH KHOA HA NOI"
"2"=hex(7):42,00,4b,00,41,00,56,00,00,00,00,00
"3"=hex(2):53,00,4f,00,49,00,43,00,54,00,00,00
"4"=hex:42,41,43,48,20,4b,48,4f,41,20,48,41,20,4e,4f,49
"5"=dword:ffffffff
"6"=hex(b):ff,ff,ff,ff,ff,ff,ff,ff

Kiểu 1 : REG_SZ => Lưu trữ chuỗi bình thường 1 ký tự = 1 Byte
Kiểu 2 : REG_MULTI_SZ => Lưu trữ chuỗi với 2 Byte, có xuống dòng, Carriage Return
Kiểu 3 : REG_EXPAND_SZ => Lưu trữ chuỗi 2 Byte, không có Carriage Return
=> 2 kiểu có ký tự 2 BYTE này có thể lưu trữ ký tự UNICODE , đa ngôn ngữ
Kiểu 4 : REG_BINARY => lưu trữ dữ liệu nhị phân
Kiểu 5 : REG_DWORD => Lưu trữ một giá trị số nguyên được biểu diễn tối đa là 2^32 - 1
Kiểu 6 : REG_QWORD => Lưu trữ một giá trị số nguyên được biểu diễn tối đa là 2^64 - 1

Capture.PNG
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
scila1996: hay đấy :D Cậu chia sẻ phần này luôn, còn tớ sẽ chuyển sang phần tiếp theo luôn nhé.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
bloodplanet;n53139 đã viết:
scila1996: hay đấy :D Cậu chia sẻ phần này luôn, còn tớ sẽ chuyển sang phần tiếp theo luôn nhé.


OK , Mình bổ sung thêm là mấy hàm API này là của Windows.h bao gồm các DLL động trong system32 của Windows, nên share cho mọi người IDE, trình dịch, để lúc code không bị lỗi :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên