请教劫持 DLL (非 Win32 API) 的简单方法 - 有完整头文件

2021 年 9 月 3 日
 nealot
假设有一个应用程序 x.exe 在运行时会调用 y.dll ;假设 y 是用 C 语言编写的,已经拿到了 y.dll 的头文件 (.h)

现在我想在 y.dll 中的部分函数被调用时,输出函数的调用参数以便观察 (可以输出到临时文件),请问比较简单的方法有哪些?

API 中总共有七八十个函数的样子,需要打印信息函数的有两三个
2267 次点击
所在节点    程序员
9 条回复
ysc3839
2021 年 9 月 3 日
只要改其中少数几个的话,可能用 hook 更简单,但是你得在 x.exe 调用 y.dll 之前就 hook 。
codehz
2021 年 9 月 3 日
有头文件的话。。你直接把原 dll 改个名,然后你做个假的 dll 转发每个函数进去就好了。。。
janxin
2021 年 9 月 3 日
听上去 AheadLib 之类的工具就能满足你的需求
mingl0280
2021 年 9 月 3 日
函数打桩(你可以自己搜一下)就行了,这个比较简单,原理就是替换掉函数入口地址上的指令,改成 jmp 到你自己的地址处理完了再接着调用原来的函数。
typetraits
2021 年 9 月 3 日
2 楼的方法是最快的,自己写个签名相同的 wrapper 函数编译成 dll,在你自己的 dll 里调用 LoadLibrary GetProcAddress 加载 y.dll 的函数就可以了
liberize
2021 年 9 月 3 日
IsaacYoung
2021 年 9 月 3 日
微软有 detours 的库 专门 hook 用的
thedrwu
2021 年 9 月 4 日
如果不想挂函数钩子也不想 wrap 整个 dll,那就再挂个自己的 dll 把原本的函数地主改了或者设个 jmp 再跳回去。
jones2000
2021 年 9 月 4 日
一定要小心。 否则要被请去喝茶。
《刑法》第二百八十五条 [非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪;提供侵入、非法控制计算机信息系统程序、工具罪]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/799726

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX