5

Linux カーネル 3.2.x に新しいシステム コールを追加しようとしていました。インターネットで有用な参考資料を検索しているときに、SO の質問のようにシステム コールをロード可能なモジュールとして実装することはできないという印象を受けました

「モジュールをラッパーとして使用してカーネルを再コンパイルせずにシステムコールを追加する方法がありますが、それはこのドキュメントの範囲を超えています」という別のリンクを見つけました。ソースhttp://hekimian-williams.com/?p=20

システム コールを静的に実装すると、変更を加えるたびにカーネル コードをコンパイルする必要があることはわかっています。上記のブログで指定されているように、モジュールとして実装できる方法はありますか。

方向性の提案や指針は大歓迎です。

4

1 に答える 1

5
  1. 見つけるsys_call_table/ia32_sys_call_table
  2. コピーを作成し、必要に応じて変更します (そのままにしておきますmy_sys_call_table)
  3. system_callエントリを見つけます(これとその他)
  4. テーブルサイズが変更された場合のNR_syscalls比較命令の変更
  5. system_callsys_call_tableの参照をを指すように変更しますmy_sys_call_table

    500        call *sys_call_table(,%eax,4)
          ->
    500        call *my_sys_call_table(,%eax,4)
    
  6. 利益?

楽しむ :)

于 2012-09-27T22:38:09.473 に答える