C, C++ cho Virus - Phần 5 - Hàm RegOpenKey, RegSetValueEx, RegCloseKey

Thảo luận trong 'Virus/Malware' bắt đầu bởi bloodplanet, 08/11/15, 12:11 PM.

  1. bloodplanet

    bloodplanet Wh------

    Tham gia: 21/03/15, 11:03 PM
    Bài viết: 51
    Đã được thích: 7
    Điểm thành tích:
    18
    Nội dung phần 5:
    - 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
    );
    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
     
    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
    bantayquyn92 thích bài này.
  2. sercect

    sercect W-------

    Tham gia: 20/09/15, 06:09 PM
    Bài viết: 19
    Đã được thích: 0
    Điểm thành tích:
    6
    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
  3. sunny

    sunny VIP Members

    Tham gia: 30/06/14, 10:06 PM
    Bài viết: 1,834
    Đã được thích: 860
    Điểm thành tích:
    113
    Nhưng đã thấy like đâu :))
    Screenshot (148).jpg

     
    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
  4. scila1996

    scila1996 W-------

    Tham gia: 29/06/13, 11:06 PM
    Bài viết: 21
    Đã được thích: 4
    Điểm thành tích:
    18
    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
  5. bloodplanet

    bloodplanet Wh------

    Tham gia: 21/03/15, 11:03 PM
    Bài viết: 51
    Đã được thích: 7
    Điểm thành tích:
    18
    Làm thế nào để thấy được cái hình kia hay vậy?

    Ừ 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
  6. Hackerstudent98

    Hackerstudent98 W-------

    Tham gia: 21/03/15, 06:03 PM
    Bài viết: 75
    Đã được thích: 14
    Điểm thành tích:
    18
    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
  7. bloodplanet

    bloodplanet Wh------

    Tham gia: 21/03/15, 11:03 PM
    Bài viết: 51
    Đã được thích: 7
    Điểm thành tích:
    18
    :)) 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
  8. scila1996

    scila1996 W-------

    Tham gia: 29/06/13, 11:06 PM
    Bài viết: 21
    Đã được thích: 4
    Điểm thành tích:
    18
    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
  9. bloodplanet

    bloodplanet Wh------

    Tham gia: 21/03/15, 11:03 PM
    Bài viết: 51
    Đã được thích: 7
    Điểm thành tích:
    18
    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
  10. scila1996

    scila1996 W-------

    Tham gia: 29/06/13, 11:06 PM
    Bài viết: 21
    Đã được thích: 4
    Điểm thành tích:
    18

    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