相关疑难解决方法(0)

什么是LD_PRELOAD技巧?

我最近在proggit看到了它的引用,并且(截至目前)它没有被解释.

我怀疑可能是它,但我不确定.

c linux environment-variables

321
推荐指数
6
解决办法
29万
查看次数

端口Win32 DLL挂钩到Linux

我有一个程序(NWShader)挂钩到第二个程序的OpenGL调用(NWN)来做后处理效果和诸如此类的东西.

NWShader最初是为Windows构建的,通常是现代版本(win32),并使用DLL导出(让Windows加载它并获取一些OpenGL函数)和Detours(挂钩到其他函数).我正在使用Win在查看sysdir之前在当前目录中查找任何DLL的技巧,因此它会加载我的.我在DLL上使用此方法重定向:

#pragma comment(linker, "/export:oldFunc=nwshader.newFunc)
Run Code Online (Sandbox Code Playgroud)

将它们发送到我自己的DLL中的不同命名函数.然后我做任何处理并从系统DLL调用原始函数.

我需要将NWShader移植到Linux(NWN存在于两种版本中).据我所知,我需要做的是一个共享库(.so文件).如果这是在NWN可执行文件之前预加载的(我找到了一个shell脚本来处理它),我的函数将被调用.唯一的问题是我需要调用原始函数(我会使用各种DLL动态加载方法,我认为)并且需要能够像Detour一样进行内部函数挂钩.

目前我正在使用Ubuntu 9.10 x64(使用32位编译器标志).我无法在Google上找到太多帮助,但我不确切地知道*nix社区所指的是什么.我可以编写C++代码,但我更习惯于Windows.作为OpenGL,需要修改以与Linux兼容的唯一部分是挂钩代码和调用.有没有一种简单易行的方法,或者它是否涉及重新创建Detours并动态加载原始函数地址?

c++ linux dll hook winapi

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

标签 统计

linux ×2

c ×1

c++ ×1

dll ×1

environment-variables ×1

hook ×1

winapi ×1