2012-05-28 37 views
8

Tôi đã có địa chỉ trong bộ nhớ và tôi muốn tìm các quyền (r/w/x) của địa chỉ bộ nhớ đó.GDB kiểm tra quyền truy cập bộ nhớ

Ví dụ:

char *s = "hello"; 

Ở đây, chuỗi chữ "hello" được lưu trữ trong bộ nhớ chỉ đọc. Khi chạy chương trình thông qua gdb, có khả năng kiểm tra các điều khoản cho địa chỉ bộ nhớ đó (cho dù chỉ đọc được cho phép hay etc)?

+1

Bạn có thể sử dụng 'ánh xạ thông tin proc' trong GDB, nhưng nó không cung cấp cho bạn quyền. Bạn có thể nhìn vào '/ proc/PID/maps', trong đó' PID' là pid của tiến trình của bạn - điều này sẽ cung cấp cho bạn các bản đồ với quyền của chúng. –

Trả lời

10

Trước tiên, bạn có thể tìm thấy nơi s được trỏ đến:

(gdb) print s 
$6 = 0x400dbc "foo" 

và sau đó tìm phần trong đó là trong:

(gdb) maintenance info sections 
Exec file: 
    `/home/mfukar/tmp', file type elf64-x86-64. 
    ...sections... 
    0x00400db8->0x00400dfb at 0x00000db8: .rodata ALLOC LOAD READONLY DATA HAS_CONTENTS 
    ...more sections... 

và tìm kiếm các READONLY cờ.

Hoặc, hãy xem /proc/PID/maps trong đó PID là phần của quá trình bạn đang gỡ lỗi và bạn có thể nhận được với info proc.

+0

Tôi đang sử dụng LLDB, mà lệnh tương đương là 'phần kết xuất hình ảnh' – DarenW

Các vấn đề liên quan