DLL 代理

playboxer 2019-04-12 04:33:38
最近工作需要,对一个DLL,写一个代理,从而获取其调用的参数。
基本工作正常,但是怎么可以拿到其参数值 呢?


extern "C" int Proxy_windowsfont(int a1, int a2, int a3, int a4, int a5, char a6, LPCSTR lpString2, LPCSTR lpString)
{
MessageBox(NULL, (LPCWSTR)a1, _T("Hi"), NULL);

typedef int(__stdcall *pS)(int a1, int a2, int a3, int a4, int a5, char a6, LPCSTR lpString2, LPCSTR lpString);
pS pps = (pS)p[0 * 4];
int rv = pps(a1, a2, a3, a4, a5, a6, lpString2, lpString);
MessageBox(NULL, (LPCWSTR)a1, _T("Hi"), NULL);
return rv;
}

感谢
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongshou 2019-04-12
  • 打赏
  • 举报
回复
extern "C" int Proxy_windowsfont(int a1, int a2, int a3, int a4, int a5, char a6, LPCSTR lpString2, LPCSTR lpString)
这里是 缺省调用方式: _Cdecl 调用

typedef int(__stdcall *pS)(int a1, int a2, int a3, int a4, int a5, char a6, LPCSTR lpString2, LPCSTR lpString);
为什么这里的调用方式 是 _stdcall调用 ?

playboxer 2019-04-12
  • 打赏
  • 举报
回复
不能呀,可以的话,我就不会麻烦到这里来了。
stherix 2019-04-12
  • 打赏
  • 举报
回复
引用 2 楼 playboxer 的回复:
但是还是拿不到呀,打印不出来。
用sprintf转成字符串,写到文件里不就能打印了
playboxer 2019-04-12
  • 打赏
  • 举报
回复
但是还是拿不到呀,打印不出来。
stherix 2019-04-12
  • 打赏
  • 举报
回复
不明白 你弄了一个伪造的dll,不是已经弄到调用的参数了吗 用保存到文件之类的手段就可以了啊

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧