2009-04-27 39 views
6

Tôi muốn thêm một lá cờ mới vào một tập tin elf. Cờ này sau đó sẽ có sẵn cho hạt nhân trong bộ mô tả quá trình. Ý tưởng đầu tiên của tôi là sử dụng libelf, nhưng tiếc là có vẻ như là một lỗi với nó trên Ubuntu. Elfedit có lẽ sẽ là một công cụ tốt nhưng tôi không tìm thấy một phiên bản cho Linux, đặc biệt là Ubuntu.Sửa đổi tập tin elf

Vì vậy, tôi tự hỏi nếu có ai có thể đề xuất với tôi nếu có bất kỳ công cụ hữu ích nào khác ra khỏi đó để thêm cờ tùy chỉnh vào tệp elf?

Rất cám ơn sự giúp đỡ của bạn!

+0

Bạn gặp phải lỗi nào trong libelf? –

+0

Trong tệp bao gồm từ loại.c: 3: /usr/include/libelf.h:98: lỗi: dự kiến ​​định danh-vòng loại danh sách trước 'off64_t' ... Có thể tìm thấy thêm tại đây: https://bugs.launchpad.net/ubuntu/+s...ls/+bug/201078 –

Trả lời

2

Những người có thể sửa đổi hạt nhân để tận dụng lợi thế của cờ mới có thể sẽ không hỏi cách thêm cờ vào thư viện ELF.

Vì vậy, bạn định sử dụng hạt nhân lá cờ mới này như thế nào? Mục đích của lá cờ là gì?

Vì bạn đang thêm vào tiêu chuẩn libelf, bạn không thể sửa lỗi cho Ubuntu và cho họ biết rằng bạn đã làm như vậy (làm cho bản sửa lỗi có sẵn cho họ - mặc dù họ có thể sẽ cần phải chuyển nó trở lại lên chuỗi).

+0

Vâng, bạn hoàn toàn đúng. Nếu tôi là một hacker hạt nhân thích hợp, điều này có lẽ sẽ là một nhiệm vụ đơn giản. Thật không may, tôi chỉ mới bắt đầu với một số công việc thực tế về hạt nhân. Về cơ bản, tôi muốn chỉ định một lá cờ trong tệp ELF cho Kernel biết rằng một ứng dụng cần một số "điều trị đặc biệt". Điều trị đặc biệt này sẽ xảy ra trong quá trình chuyển ngữ cảnh, và ở đó tôi muốn biết liệu nhiệm vụ đã được chuyển ra có cờ tùy chỉnh này trong Tập tin ELF hay không. Nói cách khác, tôi có 2 nhiệm vụ (1) thêm cờ tùy chỉnh để thực thi tương ứng (2) làm cho cờ tùy chỉnh này có sẵn cho Kernel –

1

Vui lòng xem ELFIO library. Nó chứa các ví dụ WriteObj và Writer. Bằng cách sử dụng thư viện, bạn sẽ có thể tạo và/hoặc sửa đổi các tệp nhị phân ELF.

+0

Tôi thực sự thích thư viện và tôi đã làm việc những ngày cuối cùng với nó (cố gắng chuyển đổi nó thành thư viện). Tôi đã nhận tất cả các nguồn với các mẫu và các macro được chuyển đổi (còn được chia thành các khai báo và các định nghĩa), mặc dù bây giờ lib bị lỗi (lol). Vâng, bạn có thể xem xét bản thân để thực hiện một thư viện "thực sự" ra khỏi nó? – lama12345

0

(mặc dù câu hỏi cũ nhưng để tham khảo Tôi viết câu trả lời dựa trên kinh nghiệm của riêng tôi)

Tôi đề nghị để đọc tập tin tinh trong bộ nhớ cấu trúc, thay đổi cờ và bộ nhớ quá trình tải với struct trong bộ nhớ của bạn. Phương pháp này sẽ cần ít efford hơn so với sửa lỗi. Để bắt đầu, hãy kiểm tra tập tin elf.c cho elf, tiêu đề chương trình, phần tiêu đề cấu trúc. bạn có thể đọc tiêu đề tập tin trong cấu trúc của bạn mà nên có ba cấu trúc thành viên cho elf, chương trình, phần. bắt đầu đọc trong cấu trúc của bạn từ tiêu đề elf. sau đó đọc tiêu đề chương trình trên offset được đưa ra trong tiêu đề elf (lặp lại cho tất cả các tiêu đề chương trình). Theo cách tương tự, bạn có thể đọc tất cả các phần thông qua phần đầu mục. đóng gói 3 tiêu đề cấu trúc trong cấu trúc của riêng bạn cũng cung cấp cho bạn oppertunity có thêm dữ liệu cần thiết trong thành viên cấu trúc khác của bạn.

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