草庐IT

git - 将 git post-commit 钩子(Hook)应用到所有当前和 future 的存储库

我已经编写了一个Git提交后Hook并且它可以正常工作。但是,我想添加此Hook以应用于我正在处理的所有当前(和future)Git存储库。我尝试将钩子(Hook)添加到我的~/.git/hooks/目录而不是项目目录中的hooks目录,但是,这似乎不起作用。有没有一种方法可以创建适用于我系统上所有存储库的全局GitHook(无需将它们复制到每个项目目录中)?如果不是,那么future最好的解决方案是什么——也许是git-init模板? 最佳答案 从Git1.7.1开始,您可以设置init.templatedir在你的gitconf

git - Git 钩子(Hook)脚本可以与存储库一起管理吗?

我们想制作一些我们都可以共享的基本钩子(Hook)脚本——用于预格式化提交消息之类的事情。Git有通常存储在/.git/hooks/下的钩子(Hook)脚本。.但是,当人们进行克隆并且它们不受版本控制时,这些脚本不会传播。有没有什么好的方法可以帮助大家获得合适的钩子(Hook)脚本呢?我可以让这些钩子(Hook)脚本指向我的存储库中的版本控制脚本吗? 最佳答案 在Git2.9,这配置选项core.hooksPath指定自定义Hook目录。将您的Hook移动到存储库中的hooks跟踪目录。然后,配置存储库的每个实例以使用跟踪的hook

c - 跟踪钩子(Hook)的自修改代码?

我正在寻找将跟踪/日志记录Hook插入到一些对性能非常敏感的驱动程序代码中的开销最少的方法。必须始终编译这些日志记录内容,但大多数时候什么都不做(但什么都不做非常快)。没有什么比拥有全局开/关词更简单的了,执行if(enabled){log()}。但是,如果可能的话,我什至想避免每次我命中一个钩子(Hook)时加载该词的成本。我突然想到,我可能会为此使用自修改代码——即在我调用跟踪函数的任何地方,当我想禁用Hook时,我用NOP覆盖跳转,并在需要时替换跳转启用它们。快速谷歌一下,没有找到任何这方面的现有技术——有人做过吗?这是否可行,是否有任何我没有预见到的主要障碍?(Linux,x8

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