2015-06-11 13 views
10

Tôi đang làm việc trên một công cụ đôi khi tấn công thực thi ứng dụng, bao gồm cả làm việc trong một ngăn xếp khác.Con trỏ ngăn xếp của tác vụ hạt nhân Linux được xác định cho mỗi chuỗi như thế nào?

Tôi đang cố gắng để hạt nhân luôn nhìn thấy chồng ứng dụng khi thực hiện một số cuộc gọi hệ thống, sao cho nó sẽ in vòng loại [stack] ở đúng vị trí trong/proc/pid/maps.

Tuy nhiên, chỉ cần sửa đổi khoảng cách xung quanh cuộc gọi hệ thống có vẻ không đủ. Khi tôi sử dụng công cụ của tôi trên "cat/proc/self/stat", tôi thấy kstkesp (entry 29 here) đôi khi có giá trị tôi muốn nhưng đôi khi có giá trị khác, tương ứng với chồng thay thế của tôi.

Tôi đang cố gắng để hiểu:

  1. Làm thế nào là giá trị phản ánh trong/proc/self/stat: 29 xác định?
  2. Tôi có thể sửa đổi nó để nó có giá trị phù hợp không?
  3. Nếu 2 khó trả lời, bạn khuyên tôi nên tìm hiểu lý do tại sao giá trị này không chính xác?

Trả lời

1

Có vẻ như đã được xác định, ví dụ: trong dòng 409 của http://lxr.free-electrons.com/source/fs/proc/array.c?v=3.16 với tôi.

Có rất nhiều cuộc thảo luận về các KSTK_ESP vĩ mô có liên quan trong vài năm trở lại đây ví dụ: https://github.com/davet321/rpi-linux/commit/32effd19f64908551f8eff87e7975435edd16624

http://lists.openwall.net/linux-kernel/2015/01/04/140

Từ những gì tôi thu thập về oddness liên tục nó có vẻ như một NMI hoặc các lần truy cập gián đoạn khác bên trong hạt nhân đôi khi và sau đó nó không đúng cách đi bộ ngăn xếp trong trường hợp đó.

+0

Rudi, ý tôi là nơi macro KSTK_ESP trỏ tới, đó là giá trị mà chúng ta đưa vào mục 29/proc/pid/stat được đặt, không phải cách truy nhập để đặt mục 29. I sẽ cung cấp cho bạn tiền thưởng vì câu hỏi của tôi không đủ rõ ràng. Nếu bạn có thể chỉnh sửa câu trả lời của bạn để bao gồm thông tin đó, tôi sẽ biết ơn. – nitzanms

+1

Tôi e rằng sẽ mất nhiều tuần học để cung cấp cho bạn câu trả lời chắc chắn hơn. Tôi nghĩ rằng nó có phần cụ thể vì nó liên quan đến khối nhiệm vụ. Câu trả lời này chỉ là một hoặc hai giờ và tôi rất vui khi làm điều đó vì đôi khi tôi đã đóng góp một phần nhỏ cho nhân. Xin lỗi tôi không thể cho bạn biết thêm. –

+0

Thật tuyệt. Những gì bạn đã cho tôi được đánh giá cao. Chắc chắn tốt hơn là để cho tất cả danh tiếng trở nên lãng phí. Nó có tạo nên sự khác biệt nếu tôi giới hạn câu hỏi của tôi chỉ với x86 (_64) không? – nitzanms

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