2012-05-04 37 views
5

Tôi đang viết mã về nội dung cấp thấp. tôi cần phải biết địa chỉ biểu tượng hạt nhân để viết mã đáng tin cậy. Vì vậy, im cố gắng đọc các kallsyms khi im trong chế độ người dùng trong hạt nhân Ubuntu-3.0.19. và đó là đầu ra kallsyms trong chế độ người dùng.Đọc kallsyms ở chế độ người dùng

... 00000000 r __ksymtab_prepare_kernel_cred 00000000 r __kcrctab_prepare_kernel_cred 00000000 r __kstrtab_prepare_kernel_cred ...

làm thế nào tôi có thể giải quyết vấn đề này trong sử dụng chế độ. khi im gốc và everyting ok nhưng đó không phải là những gì tôi cần.

cảm ơn.

Trả lời

8

Mục đích là /proc/kallsyms hiển thị số không thay vì địa chỉ thực cho người dùng không phải root. Điều này làm giảm nguy cơ bảo mật một chút.

Chi tiết có sẵn trong this upstream commit. Xem thêm cách %pK Trình chỉ số in được sử dụng trong s_show() function in kallsyms.c, s_show chịu trách nhiệm cung cấp bản ghi trong /proc/kallsyms.

Tôi nghi ngờ rằng vẫn có thể nhận được các địa chỉ biểu tượng bằng cách nào đó mà không phải là người dùng root. Người ta không thể truy cập System.map mà không có quyền root. Tương tự cho việc viết thư cho /proc/sys/kernel/kptr_restrict.

+0

'Không thể truy cập System.map nếu không có đặc quyền root'. Trên máy chủ RHEL của tôi, nó được phép đọc tập tin này /boot/System.map -... –

+0

Phụ thuộc vào bản phân phối và/hoặc phiên bản hạt nhân, tôi đoán vậy. Nếu System.map chứa các địa chỉ của các hàm hạt nhân và có thể đọc được đối với người dùng không phải root theo mặc định, điều này thực sự làm cho việc bảo vệ các kallsyms vô dụng. Nếu nó là RHEL 6, hạt nhân có khả năng là 2.6.32, IIRC, trong đó/proc/kallsyms không được bảo vệ. Vì vậy, tập tin System.map có thể đọc được không làm tăng nguy cơ bảo mật trong trường hợp đó. – Eugene

+0

Nếu bạn đang sử dụng hạt nhân được biên dịch bởi bản phân phối, bạn có thể chỉ xem lưu trữ phân phối cho System.map thích hợp, không? – domen

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