Linux Ubuntu下的绕道功能
Detour function under Linux Ubuntu
我在Windows下使用Detours (http://research.microsoft.com/en-us/projects/detours/),但现在我使用Linux Ubuntu,我想要Detour/Hook一个函数。我想绕过这个函数,然后再调用原来的函数。(我可以钩子函数,但我不能使用原来的)。
所以,我决定写一个绕道函数。首先,我把函数复制到另一个地方,但是我不能执行它。你能帮我,为什么我执行不了吗?分割错误 我代码:int (* h_Com_Printf)(const char *fmt, ...);
...
void *memBuffer;
int size = 0x4F; // size of the function
memBuffer = (void*)malloc(size);
memcpy(memBuffer, (void*)0x08060DEA, size); // copy the function
h_Com_Printf = (int (*)(const char *fmt, ...))memBuffer;
h_Com_Printf("print function: %dn", 1); // segmentation fault HERE
谢谢!
Com_Printf在"executable file" (IDA Pro)中:图片:http://kepfeltoltes.hu/150818/ida_printf_www.kepfeltoltes.hu_.png
Linux在VirtualBox中运行。(这是问题吗?)
仅仅复制函数字节是不够的,即使您知道if的确切大小(并非总是如此),因为有许多指令是相对于EIP的(例如,在您的示例中调用_vsnprintf)。因此,通常所做的(事实上,Detours正在做的)是只复制被钩子代码(JMP或CALL)覆盖的字节,并重新计算与eip相关的偏移量。为此,您需要能够解码指令并在必要时重新计算相对偏移量的反汇编器。弯路实际上包括一个。我建议您查看Detours源代码,以便更好地理解放置钩子需要做些什么。
希望能有所帮助
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 在Ubuntu 16.04上安装Cilk时出现问题
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在Ubuntu中使用cmake设置qt4
- 如何在C++中获得"静态纯虚拟"功能?
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- Ubuntu命令在C 程序中获取所有功能
- 无法解决的功能'srand'?(我正在使用 Ubuntu OS 和 Eclipse)
- 如何将按钮连接到ubuntu sdk中的FileDialog功能
- Linux Ubuntu下的绕道功能
- 使用地图功能ubuntu