- UID
- 1
- 精华
- 积分
- 76361
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
原理很简单。弄一个导出表和原dsound.dll一致的自定义DLL,里面的函数就都可以劫持了。
dsound.dll是使用DirectSound必不可少的DLL,通过使用它,游戏可以播放各种各样的音效。就比如《光环2》这个游戏,它就是使用DirectSound进行声音的播放的。
我觉得《光环2》的精英战士长得比较萌,而且声音也铿锵有力(虽然四个下颌让它们吐字不清)。通过劫持dsound.dll可以实现游戏音效的截取。
当然不能急,要一步一步来。写的函数名字和调用约定以及参数个数必须和原DLL完全一致,才能保证完全加载。
我这里给的源代码是自己写了个dsound.dll,然后它引用了原始的dsound.dll。做法就是用LoadLibrary加载原始DLL,调用原始的函数,然后对其进行处理。
先看ds.def- LIBRARY
- EXPORTS
- DirectSoundCreate @1
- DirectSoundEnumerateA @2
- DirectSoundEnumerateW @3
- DllCanUnloadNow @4
- DllGetClassObject @5
- DirectSoundCaptureCreate @6
- DirectSoundCaptureEnumerateA @7
- DirectSoundCaptureEnumerateW @8
- GetDeviceID @9
- DirectSoundFullDuplexCreate @10
- DirectSoundCreate8 @11
- DirectSoundCaptureCreate8 @12
复制代码 你会发现它和原始的dsound.dll一致。然后就是源码部分。因为是汇编写的所以代码略丑。这个源码需要用nasm编译,然后用link链接(VC6的link),你需要链接的库是kernel32.lib
SRC:
DummyDS.7z
(587.41 KB, 下载次数: 9, 售价: 2 个宅币)
我这个帖子只是举一个举一反三的作用。大家看了可以编写别的DLL的劫持程序。 |
|