Nếu không tìm hiểu chi tiết về lý do tại sao, tôi đang tìm cách thay thế chức năng hạt nhân và cuộc gọi hệ thống từ mô-đun có thể tải. Ý tưởng ban đầu của tôi là viết một số mã để ghi đè lên một số chức năng, có thể lấy chức năng ban đầu (có thể, nếu có thể, gọi hàm), và sau đó thêm một số mã của riêng tôi. Điều quan trọng là hàm mà tôi viết phải có tên của hàm ban đầu, vì vậy mã khác, khi cố gắng truy cập nó, sẽ truy cập vào hàm của tôi thay vào đó.Chức năng ghi đè với các mô-đun trong hạt nhân Linux
Tôi có thể dễ dàng (tương đối) làm điều này trực tiếp trong hạt nhân bằng cách chỉ cần ném mã của tôi vào các chức năng thích hợp, nhưng tôi đã tự hỏi nếu có ai biết một chút ma thuật C không phải là nhất thiết phải là nhân khủng khiếp (hoặc C) thực hành mã hóa có thể đạt được kết quả tương tự.
Suy nghĩ về #defines và typedefs đến với tâm trí, nhưng tôi không thể hoàn toàn hack nó trong đầu của tôi.
Tóm lại: có ai biết cách ghi đè hiệu quả các chức năng trong hạt nhân Linux (từ mô-đun) không? EDIT: Kể từ khi nó được hỏi, về cơ bản tôi muốn đăng nhập một số chức năng (tạo/xóa thư mục, vv) từ bên trong hạt nhân, nhưng vì lợi ích của sanity, một mô-đun có thể tải có vẻ hợp lý hơn là để viết một bản vá lớn cho mã hạt nhân và biên dịch lại trên mọi thay đổi. Một số lượng tối thiểu của mã được thêm vào hạt nhân là okay, nhưng tôi muốn giảm phần lớn công việc cho một mô-đun.
Bạn có thể làm rõ mà một trong ba bạn đang cố gắng để làm: 1) Ghi đè các cuộc gọi đến kernel chức năng từ mã hạt nhân hiện có 2) Ghi đè các cuộc gọi đến kernel chức năng từ mô-đun hạt nhân của bạn 3) Ghi đè các cuộc gọi hệ thống trong vùng người dùng gọi vào hạt nhân Trừ khi số 1 của nó, tôi khuyên bạn nên sử dụng #defines – bmdhacks
1 và 2? Tôi muốn làm cho các cuộc gọi trong hạt nhân chính nó vẫn còn nguyên vẹn, chỉ các chức năng đang được gọi (trong hạt nhân) được thay thế bởi các hàm được định nghĩa trong mô-đun của tôi. Nếu mà làm cho bất kỳ ý nghĩa. –
Không thực sự, nó có lẽ sẽ giúp nếu bạn giải thích phần "tại sao". –