python dll注入 网络_python – 检测反射型DLL注入

如何挂接VirtualProtect API。因为加载本身的DLL肯定会在其内存代码范围内执行。这是因为(如您所提到的),他们使用用户访问权限,因此他们必须使用进程用户空间API。

NTSYSAPI NTSTATUS NTAPI ZwProtectVirtualMemory(

IN HANDLE ProcessHandle,

IN PVOID * BaseAddress,

IN SIZE_T * NumberOfBytesToProtect,

IN ULONG NewAccessProtection,

OUT PULONG OldAccessProtection

);

如果您在程序开始时挂钩,则可以过滤出可疑保护呼叫(启用代码执行的呼叫)。然后,我将扫描PE头或者在所请求的页面前面知道它的一个可加载的模块…注意:我认为这不是为常规DLL调用的,因为LoadLibrary处理这个内核空间。对? TODO:验证

通常,PE头位于第一个可执行代码前面的0x1000(4096)字节或一页。所以一个非常基本的方法可以扫描“MZ”标签:

char* pe = ((char*)BaseAddress) - 0x1000;

if ((NewAccessProtection == PAGE_EXECUTE || ... ) & pe[0] == 'M' && pe[0] == 'Z')

{

// do checks here

}

如果您需要有关API钩的更多信息,请在网上查询或阅读大量文章。另一个挂钩的候选人是:FlushInstructionCache(…)。但是我认为只有暴雪正在使用这个防守防骗模块,因为x86架构上没有理由称之为这个。

… 只是一个想法,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值