存放在VirtualAllocEx分配的空间中的代码,执行出错

[复制链接]
查看11 | 回复1 | 2021-1-27 05:41:34 | 显示全部楼层 |阅读模式
在对WindowsService服务做一次C++封装,使用Thunk的方式。
用VirtualAllocEx分配PAGE_EXECUTE_READWRITE属性的空间,在其中存放两部分ASM代码,
一份是注册给StartServiceCtrlDispatcher的代码,一份是注册给RegisterServiceCtrlHandler的代码。
服务启动后,注册给StartServiceCtrlDispatcher的ASM能正常的被执行到,并跳转的我希望的函数中;
但注册给RegisterServiceCtrlHandler的AMS没有被执行到,而且执行“scstop”服务无法正常被关闭。
debug信息里有看到:
(sechost.dll)(Service.exe中)处的第一机会异常:0xC0000005:读取位置0x0000000000000038时发生访问冲突。
做了一个尝试,把我用C写的,可以正确执行的,注册给RegisterServiceCtrlHandler的函数,直接复制到VirtualAllocEx分配的空间中去,也是会出现上面的问题。
请问,这里有什么限制吗?还是需要注意什么?大家给我一点意见,谢谢~
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:41:34 | 显示全部楼层
搜“Session0穿透”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行