函数定义:
void SendPackage(LPVOID lPara)
{
}代码:
InjectThread(SendPackage,&sPackage); 这句执行时SendPackage值也就是函数地址为0x009eb020读取:
void CCallManager::InjectThread(void *pFun,void *pData)
{
在这读取到pFun的值为0x009d7c6b,而不是0x009eb020,为什么?
}
void SendPackage(LPVOID lPara)
{
}代码:
InjectThread(SendPackage,&sPackage); 这句执行时SendPackage值也就是函数地址为0x009eb020读取:
void CCallManager::InjectThread(void *pFun,void *pData)
{
在这读取到pFun的值为0x009d7c6b,而不是0x009eb020,为什么?
}
jmp xxx
jmp xxx
......这个xxx就是实现这个函数的代码的实际位置。在你的例子里就是:
0x009eb020: jmp 009d7c6b(SendPackage)SendPackage开始
0x009d7c6b: push ebp
............
你在ide里看到的SendPackage显示的就是第一个地址,把它做为参数时,传递的当然就是0x009d7c6b这个地址了。
没有必要发个函数地址吧,发了估计也没用,那个地址到别的程序里是无效的,你别看有jmp指令那没用
直接双方建立一个函数索引表不就可以了嘛
至于函数参数本机可以用共享内存,远端机器可以通过网络发给它啊
===================================================================
哦你想实现代码注入功能这我没有研究过,以上算我白说了呵呵