取函数地址的一点疑问

yiyilove97 yiyilove97 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
ULONG myfuncaddr;
myfuncaddr=*(ULONG*)((byte*)mymessageboxa+1)+(ULONG)mymessageboxa+5;
mymessageboxa是一个自定义的API函数 定义如下:
__declspec(naked) int mymessageboxa(HWND hwnd, LPCTSTR lptext, LPCTSTR lpcaption, UINT utype)
{
printf("mymessageboxa is called\r\n");
_asm
{
pop head
pop hwnd
pop lptext
pop lpcaption
pop utype
}
myfunc();//可以加入函数过程
_asm
{
//压栈过程
push utype
push lpcaption
push lptext
push hwnd
push head
//跳回messageboxa 入口点
jmp jmp_back;
ret;
}
}

小弟想知道为什么经过那样的转换 myfuncaddr 就得到了 mymessageboxa的实际地址呢?
...全文
评论 3
收藏 已收藏
分享
返回顶部
yiyilove97
VC/MFC 16,550 成员 421,606 内容