由于项目需要,windows客户端需要做进程保护。根据网上资料和自己的整理,制定以下方案并实施成功。
利用远程线程的方法将DLL注入svchost的系统进程,在DLL中定时检查客户端进程是否存在,若不存在则开启。
遇到的问题:
1.远程线程,DLL总是注入不成功。
原因:注入到svchost是系统进程,需要先提升权限。
2.在svchost进程中开启客户端进程,无法出现界面。
原因:svchost属于系统进程,在其中使用CreateProcess打开的进程属于其子进程,用户名也是SYSTEM,这种进程失去了很多用户进程的功能,甚至没有消息的概念。
解决办法是先获得当前会话用户的令牌,使用CreateProcessAsUser创建出属于用户的进程。