日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux钩子拦截删除文件,在Linux中保存钩子文件

發布時間:2025/3/8 linux 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux钩子拦截删除文件,在Linux中保存钩子文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

您可以嘗試FILE_PRELOAD utility,它們會生成帶鉤子的C++代碼,編譯和LD_PRELOAD它。在簡短的看了一下之后,你可以感覺到如何輕松地掛接linux。起點是this tutorial。

例如,如果你想改變文件/ tmp的“公開征集” /一些帶有的/ tmp/replace_with:

#: FILE_PRELOAD -C "A+f:/tmp/some:/tmp/replace_with" -- bash

#: echo "HaHa" >> /tmp/some

#: ll /tmp/some

ls: cannot access /tmp/some: No such file or directory

#: cat /tmp/replace_with

HaHa

如果你想看到的生成的代碼源,只需加上“-p “選項。

#: FILE_PRELOAD -p -C "A+f:/tmp/some:/tmp/replace_with" -- bash

在另外的所有generated.cpp文件,你可以找到在/ tmp/$ USER/FILE_PRELOAD/CPP。

與Linux的鉤一個漂亮的打)

生成的代碼看起來是這樣的:

#include

#include

#include

#include

#include

#define I int

#define C char

#define S string

#define P printf

#define R return

using std::map;

using std::string;

typedef map MAP;

static I (*old_open)(const C *p, I flags, mode_t mode);

extern "C"

I open (const C *p, I flags, mode_t mode){

old_open = dlsym(RTLD_NEXT, "open");

P("open hook\n");

MAP files;

files[p]=p;

files["/tmp/some"]="/tmp/replace_with";

S newpath = files[S(p)];

R old_open(newpath.c_str(), flags, mode);

}

# &compile

gcc -w -fpermissive -fPIC -c -Wall file.cpp

gcc -shared file.o -ldl -lstdc++ -o wrap_loadfile.so

LD_PRELOAD=./wrap_loadfile.so bash

nm -D /lib/libc.so.6 | grep open # we hook this syscall

總結

以上是生活随笔為你收集整理的Linux钩子拦截删除文件,在Linux中保存钩子文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。