问题标签 [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.
c - 如何挂钩 __usercall、__userpurge (__spoils) 函数?
有人知道钩子__usercall
类型的函数吗?我成功挂机__thiscall
,__stdcall
并__cdecl
打电话,但这对我来说已经足够了。
知道有人为 's 挂钩库或__usercall
如何使用翻译来挂钩这种类型的函数吗?__stdcall
__cdecl
我首先必须挂钩的功能是:
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 起作用:
c++ - 我的用户调用函数的 stdcall 包装器是否正确?
我需要将以下 __usercall 函数包装到 _ cdecl/ _stdcall:
a1 是整数,a2 实际上是一个整数数组('int args[10]')
它是否正确?<al>
sub_4017B0 背后的含义是什么?
调用 sub_4017B0 的包装器会是什么样子?
包装器应该有这个签名:
c++ - 如何使用 eax 和 esi 中的参数调用函数。GCC C++
我需要使用 gcc 调用我无法在 c++ 中 typedef 的函数指针。我不擅长asm,所以我会很感激你的帮助。
该函数在 eax 中传递 arg1,在 esi 中传递 arg2。args 从右向左推送,调用者清理堆栈
编辑:谢谢威廉。我成功地这样称呼它:
edit2:将“内存”添加到破坏列表
c++ - C++ __usercall 挂钩
你好在 IDA 我有一个函数
我想从我的 C++ 注入的 dll 中挂钩/调用它这就是我尝试调用它的方式,但是 .exe 崩溃
这就是exe调用这个函数的方式
在功能上似乎有几次
这意味着有更多的参数或 IDA 有错误的参数类型?
driver - Minispy 驱动程序 - 用户模式调用
在花费数小时安装驱动程序之后,我开始研究 minispy 驱动程序:
Windows-driver-samples/filesys/miniFilter/minispy/
我试图捕捉用户打开文件的所有调用。我试图用它打印的所有参数(如 Opr、Major Operation ...)来完成它,但我无法以精确的方式过滤它。
如何仅过滤用户呼叫(打开文件)?如果用户调用了事务,我如何在代码中确定?
非常感谢您的帮助。