向低权限(低完整性?)进程注入的问题



向低权限(低完整性?)进程注入的问题

搬运自我的百度空间

    一个让人崩溃的bug:Chrome程序在钩子下运行失败。正常情况下,在HOOK了CreateProcessInternalW后,我的钩子会在新进程插入自己的DLL进行连环钩子。调试了几天不见端倪。在windbg中看到卡住的原因是Chrome一个子进程在创建时Terminate了自己。使用windbg追溯到是LdrInitializeProcess的初始化进程操作失败,错误码是ACCESS_DENIED。查看了好多资料,包括reactos的代码,都不见LDR会产生ACCESS_DENIED的错误。
    然后发现如果不在进程创建时用Detours插入我的DLL,就不会产生错误。发现MSDN中CreateProcess中写道: If a required DLL cannot be located or fails to initialize, the process is terminated.联想到可能是DLL插入错误。
    仍然死胡同。最后发现Chrome的CreateProcessInternalW的一个参数hToken也是决定初始化成功与否的因素。结果使用较高权限的Token来创建子进程,Chrome正常运行了

    应该是Chrome的子进程的Token是低权限的(低完整性?),连我的DLL也不允许加载,才造成这个问题。我的解决办法是先用当前进程的token创建进程,等DLL加载完毕再把低权限Token复制给新进程,完成降级。
    为什么IE也是低权限的,却没有这个问题?。。。。。。


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值