Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1

    [Kernel-mode] Lỗi khó hiểu khi đọc giá trị biến con trỏ

    Chào các bác.

    Hiện tại plus đang gặp 1 lỗi khó hiểu khi lấy giá trị 1 biến con trỏ trong kernel-mode. Về mặt cú pháp thì câu lệnh này không hề sai. Nhưng khi run thì bị crash và BSOD.

    Đoạn code như sau: (Xem đoạn bôi đậm màu đỏ)

    Mã:
    NTSTATUS GetAddress() 
    {
    	ULONG Address = 0; 
    
    	PULONG pShadowBase = 0;
    
    	pShadowBase = (ULONG *) KeServiceDescriptorTable-0x40+0x10; //Get shadow base address of XP
    
            CurAddress = (ULONG)*pShadowBase; // <= What wrong ???[/B][/COLOR]
    
            return STATUS_SUCCESS;
    
    }
    Mình thử dùng WinDbg để đọc giá trị tại địa chỉ con trỏ đó thì thấy đúng, nhưng sao code này đọc bị crash (hoặc crash khi sử dụng biến đó)

    Hình đây mấy bác, đâu có sai chỗ nào.



    Bác nào có kinh nghiệm về cái này thì giúp gianghoplus với. Làm 2 ngày vẫn lỗi chỗ đó => đuối lắm rồi. Hjc.

    Cảm ơn đã đọc.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    theo mình thì pShadowBase bạn khai báo nó là biến giá trị.
    Nhưng xuống dưới bạn lại đối xử nó như là 1 biến con trỏ thì nó phải báo lỗi
    CurAddress = (ULONG)*pShadowBase !!!

    bạn nên hiểu biến con trỏ là một biến dùng để chứa địa chỉ của ô nhớ.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •