问题标签 [usercall]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5680 浏览

c - 如何挂钩 __usercall、__userpurge (__spoils) 函数?

有人知道钩子__usercall类型的函数吗?我成功挂机__thiscall__stdcall__cdecl打电话,但这对我来说已经足够了。

知道有人为 's 挂钩库或__usercall如何使用翻译来挂钩这种类型的函数吗?__stdcall__cdecl

我首先必须挂钩的功能是:

0 投票
1 回答
1020 浏览

c - 这个 __usercall 包装器有什么问题?

0 投票
1 回答
5196 浏览

c - 挂钩用户调用功能?

我有一个虚拟机,它在 VM_Create 上将函数的地址(systemCalls)传递给虚拟机。

所以我挂钩 VM_Create 并窃取 syscalls 地址,将其放入备份函数指针中,并将修改后的 systemCalls 函数的地址传递给原始 VM_Create,我可以从中更改参数,添加或删除调用,然后调用备份的- up 系统调用函数。效果很好,直到游戏发布新版本。

我相信已经发现了问题:

这是未修改的 systemCalls 函数的开始:

这是我修改后的系统调用函数:

问题是从修改后的函数中调用原始函数:

已经失败了。

从反汇编的伪代码可以看出,CL_CgameSystemCalls的新定义似乎是:

这意味着他们通过添加 __usercall 属性并将第一个参数放入寄存器 ebx 来更改函数,如果我解释了反编译正确的话。

现在我的问题:

如何将 *args (args[0]) 检索到变量中?

我怎样才能从修改后的函数中调用未修改的函数,它现在使用__usercall?

这是使用 usercall 对系统调用的反汇编:

这是从 hexrays 反编译器创建的伪代码:

您可以在此处找到 CL_CgameSystemCalls 函数的完整(最后一个官方)源代码(复制粘贴太多):

http://ioqsrc.vampireducks.com/da/d3b/cl__cgame_8c-source.html

这是旧版本的反汇编,其中从修改后的 syscall 调用 orig_syscall 起作用:

0 投票
1 回答
1886 浏览

c++ - 我的用户调用函数的 stdcall 包装器是否正确?

我需要将以下 __usercall 函数包装到 _ cdecl/ _stdcall:

a1 是整数,a2 实际上是一个整数数组('int args[10]')

它是否正确?<al>sub_4017B0 背后的含义是什么?

调用 sub_4017B0 的包装器会是什么样子?
包装器应该有这个签名:

0 投票
1 回答
1071 浏览

c++ - 如何使用 eax 和 esi 中的参数调用函数。GCC C++

我需要使用 gcc 调用我无法在 c++ 中 typedef 的函数指针。我不擅长asm,所以我会很感激你的帮助。

该函数在 eax 中传递 arg1,在 esi 中传递 arg2。args 从右向左推送,调用者清理堆栈

编辑:谢谢威廉。我成功地这样称呼它:

edit2:将“内存”添加到破坏列表

0 投票
1 回答
2747 浏览

c++ - C++ __usercall 挂钩

你好在 IDA 我有一个函数

我想从我的 C++ 注入的 dll 中挂钩/调用它这就是我尝试调用它的方式,但是 .exe 崩溃

这就是exe调用这个函数的方式

在功能上似乎有几次

这意味着有更多的参数或 IDA 有错误的参数类型?

0 投票
1 回答
331 浏览

driver - Minispy 驱动程序 - 用户模式调用

在花费数小时安装驱动程序之后,我开始研究 minispy 驱动程序:

Windows-driver-samples/filesys/miniFilter/minispy/

我试图捕捉用户打开文件的所有调用。我试图用它打印的所有参数(如 Opr、Major Operation ...)来完成它,但我无法以精确的方式过滤它。

如何仅过滤用户呼叫(打开文件)?如果用户调用了事务,我如何在代码中确定?

非常感谢您的帮助。