标签: hook

如何指定在git中使用哪个SSH密钥进行git push以便将镜像作为镜像?

我有一个在git.debian.org(alioth)上托管的项目,我想在http://gitorious.org上配置一个post-receive钩子来更新存储库的镜像.

我想我必须要用 git push --mirror gitorious

现在,我需要让Alioth获得授权才能获得成功.我怎么做?

我想我需要在gitorious上配置用户并为其创建一个ssh密钥.然后当我在post-receive钩子中执行git push时,请确保使用此ssh键.

我可以使用~/.ssh/config但问题是许多用户可以推送aloth,每个人都必须登录并配置~/.ssh/config.相反,我想要一个命令行选项或环境变量来告诉ssh使用哪个键.我能这样做吗?

另外,您是否有其他想法可以实现镜像?并且,是否有可能以相反的方式配置它(有效推动阿里斯)?

git hook gitorious mirroring git-push

39
推荐指数
2
解决办法
4万
查看次数

监视应用程序对DLL的调用

简而言之:我想监视从应用程序到DLL的选定调用.

我们有一个旧的VB6应用程序,我们丢失了源代码(该公司当时没有使用源代码控制..).此应用程序使用第三方DLL.

我想在新的C++应用程序中使用此DLL.不幸的是,DLL API只是部分记录,所以我不知道如何调用某些函数.我有功能签名.

由于VB6应用程序使用此DLL,我想看看它如何调用多个函数.到目前为止,我已经尝试或看过 -

  1. APIHijack - 要求我为每个函数编写C++代码.由于我只需要记录值,这似乎是一种矫枉过正.
  2. EasyHook - 与1相同,但允许用.NET语言编写代码.
  3. 使用uHooker的OllyDbg - 我仍然需要为每个函数编写代码,这次是在Python中.此外,我必须使用该struct模块在Python中进行许多转换,因为大多数函数使用指针传递值.

由于我只需要记录函数参数,我想要一个简单的解决方案.有没有自动化工具,我可以告诉哪些功能要监控和签名,然后获取详细的日志文件?

dll hook monitoring monitor

37
推荐指数
2
解决办法
6万
查看次数

C#如何查找事件是否已连接

我希望能够找出一个事件是否被连接起来.我环顾四周,但我只找到了涉及修改包含事件的对象内部的解决方案.我不想这样做.

这是一些我认为可行的测试代码:

// Create a new event handler that takes in the function I want to execute when the event fires
EventHandler myEventHandler = new EventHandler(myObject_SomeEvent);
// Get "p1" number events that got hooked up to myEventHandler
int p1 = myEventHandler.GetInvocationList().Length;
// Now actually hook an event up
myObject.SomeEvent += m_myEventHandler;
// Re check "p2" number of events hooked up to myEventHandler
int p2 = myEventHandler.GetInvocationList().Length;
Run Code Online (Sandbox Code Playgroud)

不幸的是上面是错误的.我认为,当我将一个事件挂钩时,myEventHandler中的"invocationList"会自动更新.但不,事实并非如此.它的长度总是以一个为单位.

无论如何从包含事件的对象外面确定这个?

c# hook event-handling

37
推荐指数
4
解决办法
6万
查看次数

git post-receive hook没有运行

我有一个裸的repo服务器端,我能够成功提交并从我的本地机器推送.但是,后接收挂钩未运行.细节:

  • 使用SSH作为协议
  • 我已将标准的"post-receive.sample"重命名为"post-receive"
  • 此文件具有-rwxr-xr-x权限
  • 该文件由拥有repo的同一用户拥有,该用户与登录和推送的SSH用户相同
  • 实际的推动很顺利; 文件被更新 - 它只是不运行的钩子
  • 我尝试echo "Some text"在钩子之前和之后放置,但是没有显示(参见:Post Commit Hook Not Running).
  • 钩子脚本包含在下面,虽然这似乎不会导致问题
  • 在Ubuntu 10.04上使用git 1.7.0.4

.

user@server:/home/repos/project1/hooks# cat post-receive
#!/bin/sh
echo "Hook is running..."
export GIT_WORK_TREE=/home/web/project1/www/
git checkout -f
rm -rf /home/web/project1/www/temp/
Run Code Online (Sandbox Code Playgroud)

git hook

33
推荐指数
4
解决办法
2万
查看次数

从注入的DLL中挂接DirectX EndScene

我想绕过EndScene任意DirectX 9应用程序来创建一个小的叠加层.例如,您可以采用FRAPS的帧计数器覆盖,激活后会在游戏中显示.

我知道以下方法:

  1. 创建一个新的d3d9.dll,然后将其复制到游戏路径.由于首先搜索当前文件夹,然后转到system32等,我的修改后的DLL会被加载,执行我的附加代码.

    缺点:你必须在开始游戏之前把它放在那里.

    • 与第一种方法相同,但直接替换system32中的DLL.

    缺点:您无法添加游戏特定代码.您不能排除不希望加载DLL的应用程序.

    • 使用IDA Pro 4.9 Free等工具直接从DLL获取EndScene偏移量.由于DLL按原样加载,您可以将此偏移量添加到DLL起始地址,当它映射到游戏时,获取实际偏移量,然后将其挂钩.

    缺点:每个系统的偏移量都不相同.

    • 挂钩Direct3DCreate9以获取D3D9,然后挂钩D3D9-> CreateDevice以获取设备指针,然后通过虚拟表挂钩Device-> EndScene.

    缺点:当进程已经运行时,无法注入DLL.您必须使用CREATE_SUSPENDED标志启动进程以挂接初始Direct3DCreate9.

    • 一旦注入DLL,就在新窗口中创建新设备.然后,EndScene从该设备获取偏移量并将其挂钩,从而导致游戏使用的设备挂钩.

    缺点:从我读过的一些信息来看,创建第二个设备可能会干扰现有设备,并且可能会出现窗口与全屏模式等错误.

    • 与第三种方法相同.但是,您将进行模式扫描EndScene.

    缺点:看起来不那么可靠.

如何挂钩EndScene注入的DLL,可以在游戏运行时加载,而不必在其他系统上处理不同的d3d9.dll,并使用可靠的方法?例如,FRAPS如何执行它的DirectX挂钩?DLL不应该适用于所有游戏,只适用于我通过注入它的特定进程CreateRemoteThread.

c++ directx hook dll-injection

31
推荐指数
3
解决办法
5万
查看次数

如何在C/C++中挂钩Windows功能?

如果我有一个foo()windows已经在kernel32.dll中实现的函数并且它总是返回true,我可以使用我的程序:"bar.exe"挂钩/绕过Windows函数并使其为所有进程返回false吗?

所以,如果我的svchost,例如,调用foo(),它将返回false而不是true.对于当前运行的所有其他进程,应该应该执行相同的操作.

如果是这样,怎么样?我想我正在寻找一个系统范围的钩子或东西.

c c++ windows hook

30
推荐指数
3
解决办法
5万
查看次数

钩子和回调有什么区别?

通过阅读一些文本,特别是关于委托的iOS文档,所有协议方法都被称为自定义委托对象需要实现的钩子.但是其他一些书籍,将这些钩子命名为回调,它们之间有什么区别?它们只是不同的名称,但机制相同吗?除了对象-一些其他编程语言,如C,也得到了钩,同样的情况用的OBJ-C?

hook callback

29
推荐指数
4
解决办法
1万
查看次数

git-clone和post-checkout hook

根据手册,post-checkout钩子在a git checkout(正如预期)之后运行,但也在a之后运行git clone(除非你通过--no-checkout).

很好,现在,考虑以下因素:

  • 你之前没有本地存储库 git clone
  • 钩子不在遥控器之间同步
  • 存储在与之一起使用的自定义模板目录中的钩子--template被复制为不可执行,因此之后不执行git clone(实际上不是Jefromi在他的回答中所说的那样,但钩子仍然没有被执行)

一个post-checkout钩子似乎不可能在一个之后被执行git clone.尽管如此,http: //git-scm.com/docs/githooks上的githooks手册页明确说明了一种避免执行的方法,并且在执行时也传递了参数,这表明可以执行自定义钩子经过.git-clone

那么,怎么可能呢?我显然在这里遗漏了一些东西.

结果

git hook git-clone

28
推荐指数
2
解决办法
2万
查看次数

Git提交消息中的Jira问题编号

在我们公司,我们正在从svn转向git.对于问题跟踪,我们使用Atlassian的JIRA.

现在我们要强制执行每个提交消息都包含一个问题编号(就像我们使用svn一样).

我们找到了commit-msg钩子,如果它不包含问题编号,我们用它来拒绝提交.

JIRA使用Fisheye扫描git repo.如果提交消息包含问题编号,则更改将显示在该问题下.

问题是克隆git存储库时不会复制钩子.因此,不会强制执行提交消息中的问题编号.这意味着当向上推送新提交时,Jira可能不会列出问题下的更改.

问题是; 我们以某种方式以错误的方式使用Git并且有没有办法在提交消息中真正强制执行问题编号?或者是否有任何人只有一个脚本/钩子(除了commit-msg钩子)来完成这个?

git hook push jira issue-tracking

28
推荐指数
3
解决办法
3万
查看次数

Linux X11 - 全局键盘钩

是否有可能(或如何)创建一个与Windows中的全局钩子(SetWindowsHookEx())类似的机制(在Linux X11,C++中)?

我希望能够抓住关键事件,但有可能进一步传播.我正在尝试使用XGrabKey解决方案(就像在xbindkeys中一样),但是当我设置捕获键事件时,此事件被"消耗".

该机制的要求如下:

  1. 全局/系统范围 - 无论具有焦点的窗口如何都捕获事件
  2. "抓住"和"抓住通过"的可能性
  3. 它一定很快

示例代码如下所示:

bool myFlagIsSet = false;
XEvent event;
while (true) {
    while (XPending(display) > 0) {
        usleep(SLEEP_TIME);
    }

    XNextEvent(display, &event);
    switch (e.type) {
        case KeyPress:
            if (myFlagIsSet) {
                //do not propagate
            }
            // propagate
            break;
        case KeyRelease:
            if (myFlagIsSet) {
                //do not propagate
            }
            // propagate
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在Windows上我简单地写道:

if(event.isConsumed()) {
    return LRESULT(1);
}
//...
return CallNextHookEx(hookHandle, nCode, wParam, lParam);
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用XUngrabKey和XSendEvent:

switch (event.type) {
    case …
Run Code Online (Sandbox Code Playgroud)

c++ linux x11 hook

27
推荐指数
2
解决办法
1万
查看次数