草庐IT

lifecycle-hooks

全部标签

c - 如何在linux内核的memcpy函数中添加一个hook?

以下是我的步骤,但没有按预期工作。linux-3.16-rc2\arch\x86\lib\memcpy_64.S:改变了ENTRY(__memcpy)ENTRY(memcpy)...CFI_ENDPROCENDPROC(memcpy)ENDPROC(__memcpy)到:ENTRY(__memcpy)ENTRY(x86_memcpy)...CFI_ENDPROCENDPROC(x86_memcpy)ENDPROC(__memcpy)linux-3.16-rc2\lib\string.c:改变了#ifndef__HAVE_ARCH_MEMCPYvoid*memcpy(void*dest,

linux - Linux文件系统的钩子(Hook)函数

我想在将数据写入硬盘之前做一些事情。我不知道任何解决方案。为避免编辑内核源代码,是否有任何位置可以将钩子(Hook)函数用作可加载模块?更新:谢谢大家,LSM非常适合APIHook。但我想找到其他提供机制Hook读/写数据block的解决方案。它可以避免在更新文件后重新加密所有文件。我认为我可以在文件系统(ext2、ext3、...)和缓冲区缓存之间修改某些内容。 最佳答案 使用LinuxSecurityModules.这些是可加载的内核模块,它们提供Hook来调解对内核中各种内部对象的访问。您可以根据需要使用文件系统或inode的

c - Hook SIGSEGV 时强制内核转储进程

我为一个RAM值非常有限的系统编写应用程序。由于应用程序崩溃总是可能的,并且它使用动态内存分配,我为应用程序可以停止的所有可能方式创建了回调,并在那里清理所有缓冲区,如下所示:sigaddset(&sigact.sa_mask,SIGSEGV);sigaction(SIGSEGV,&sigact,(structsigaction*)NULL);它会触发一些通知操作并多次尝试自行重启。但我仍然想知道是什么导致了崩溃,所以我需要crashdump。GDB不适合这么小的系统,只有内核级核心转储是可能的。但是由于应用程序拦截了这样的信号并最终自行退出,内核没有收到信号-没有创建核心。我发不了k

linux - 将 whatis Hook 添加到 bash 脚本中

我刚刚发现了whatis并想将信息添加到我的bash脚本中。将信息添加到bash脚本中的最佳方法是什么whatis去接? 最佳答案 whatis从whatis数据库中获取所有信息,这些信息是使用命令makewhatis生成的。有两种方法可以将条目添加到数据库中。为您的程序或脚本创建并安装手册页,然后运行makewhatis。手动编辑whatis数据库。(不建议)makewhatis从命令手册页的NAME部分选取第一行。whatis数据库在我的机器上的位置是/usr/share/man/whatis,这是它的样子..ABORT(7)-

c++ - 将 Win32 DLL Hook 移植到 Linux

我有一个程序(NWShader),它连接到第二个程序的OpenGL调用(NWN)中以执行后期处理效果等。NWShader最初是为Windows构建的,通常是现代版本(win32),并使用DLL导出(让Windows加载它并获取一些OpenGL函数)和Detours(挂接到其他函数)。我正在使用Win将在检查sysdir之前在当前目录中查找任何DLL的技巧,因此它会加载我的。我有使用此方法重定向的DLL:#pragmacomment(linker,"/export:oldFunc=nwshader.newFunc)将它们发送到我自己的DLL中的不同命名函数。然后我进行任何处理并从系统DL

python - 为什么我的 post-receive Hook 不能运行 virtualenv source 命令?

我有一个以用户“git”身份运行的接收后Hook。我有一个git可读的virtualenv/python/ve//bin/activate。运行:source/python/ve//bin/activate适用于git组中的用户。当它在推送后作为接收后Hook运行时,我收到错误“source:notfound”。我不确定还有什么地方可以看-非常感谢任何提示。 最佳答案 这是一个猜测,因为您还没有引用完整的post-receive钩子(Hook),但我怀疑您没有shebangline指向顶部的/bin/bash。您的post-rece

c - Linux 内核 : System call hooking example

我正在尝试编写一些简单的测试代码作为Hook系统调用表的演示。“sys_call_table”在2.6中不再导出,所以我只是从System.map文件中抓取地址,我可以看到它是正确的(在我找到的地址翻内存,我可以看到指向系统调用的指针)。但是,当我尝试修改此表时,内核给出“糟糕”消息“无法处理虚拟地址c061e4f4处的内核分页请求”,并且机器重新启动。这是运行2.6.18-164.10.1.el5的CentOS5.4。有某种保护措施还是我只是有一个错误?我知道它随SELinux一起提供,我已经尝试将它设置为宽容模式,但这并没有什么不同这是我的代码:#include#include#i

linux - 如何对 git 和 gitolite 钩子(Hook)进行版本控制?

是否有可能很好地版本化和跟踪githooks?我可以在服务器上的hook文件夹下安全地拥有另一个(嵌套的)git存储库吗? 最佳答案 没有什么能阻止您将gitolite服务器Hook添加到adminrepo(甚至是gitoliteadminrepo,您​​要在其中添加公共(public)sshkey和所有repos和相关权限的配置文件).然而,将该管理repo推送回gitolite服务器不会触发任何hook-wise。您仍然需要转到服务器上的Hook文件夹并:有一个钩子(Hook)可以检查该管理仓库的内容从您服务器文件夹中的每个Ho

qt4 - 使用 Qt 4.6 从键盘 Hook 键和组合键

假设我有一个无窗口应用程序,它在任务栏上只有一个图标(Windows、MacOSX和Linux)。我希望它捕获一些键和组合键,比方说RightControl+RightShift。在输入正确的组合后,它会做一些事情,比如截屏。我可以做无窗口应用程序、任务栏上的图标和屏幕截图,但我不知道如何全局监控键盘的组合键。请指教。非常感谢任何帮助或提示!提前致谢! 最佳答案 系统范围的key抓取是一个棘手的主题,但系统范围的keyHook甚至更棘手。每个OS/GUI都有自己的解决方案,至少是为了抓取。Qt4没有公开这样的功能,但是QteXTen

linux - 如何在二进制执行期间 Hook 所有 linux 系统调用

我正在尝试修改linux系统调用的默认行为。目前,我正试图在它们实际被调用之前Hook并添加一个简单的打印语句。我知道GCC链接器的标准“wrap”选项以及它如何用于Hook包装器LinktoGCCLinkeroptions.这非常适用于open()、fstat()、fwrite()等(我实际上是在挂接libc包装器)。更新:限制是并非所有系统调用都与这种方法Hook。为了说明这一点,让我们采用一个简单的静态编译二进制文件。当我们尝试添加包装器时,它们会受到我们在main()之后引入的调用的影响(请参阅下面显示的strace输出)>strace./sampleexecve("./sam