1.打开 vs 创建项目
2.添加项目
3.配置 dll(exe的路径)
4.调试的时候俩个都最好生成一下 不然报错
项目与 dll 之间的参数传递(结构体 函数指针等)
如DEBUG_EVENT 结构体 map<string, pVoidFun> (pVoidFun为函数指针)
先导出一个函数
实现 这里要注意的是打印结构体时注意溢出问题
//printf("%08x %08x %08x %08x \n", hPorc, hThread, m_DebugEvent, Funmap); //产生溢出 后面打印的是结构体的数据 因为后面覆盖了
printf("%08x %08x %08x %08x \n", hPorc, hThread, &m_DebugEvent, Funmap);
5.调用 (这里用了点技巧参数为调用一个函数 函数返回值为 map)
map<string, pVoidFun> Funmap;
DWORD CCyichang::GetFunmapAddr()
{
return (DWORD)&Funmap;
}
myfun(myCCyichang->hProc, myCCyichang->hThread, myCCyichang->m_DebugEvent, (DWORD)(myCCyichang->GetFunmapAddr())); //地址与类型(DWORD,map<string, pVoidFun>**)无关32 位push4个字节 64 位push 俩遍 也就是 8 个字节 类型只是用来方便使用想怎么写就怎么写
6.注意一个溢出问题
7.最后注意的是不要懒 dll一般写也main 函数 不写可能会报错
原文地址:http://blog.51cto.com/haidragon/2115576
时间: 2024-10-16 23:53:15