找回密码
 立即注册
查看: 506|回复: 0

[易语言] R3保护自己的代码段不被修改 直接废掉WriteMemory

[复制链接]
发表于 2022-10-5 12:39:56 | 显示全部楼层 |阅读模式
download.jpg

修改步骤
利用NtCreateSection创建一块和欲保护的地址大小相同的Section,然后将数据拷贝到改Section中,最后用NtMapViewOfSection重新映射回去(此时便可添加SEC_NO_CHANGE属性)
添加映射出的内存页被添加SEC_NO_CHANGE属性后,R3下NtProtectVirtualMemory就不能修改这个内存区域的内存属性了,只读的代码段不能被修改为可写。
接着R3下的写入改内存页的命令基本就废了。

注意事项
由于NtMapViewOfSection要求映射内容64KB对齐,这里可能让少部分只读属性的内存页变成可读可写。
不能尝试去保护kernel32.dll(它的内存映射情况非常奇怪),程序不能去保护ntdll.dll(因为NtMapViewOfSection在ntdll中,除非重写NtMapViewOfSection,不过这也不难,我就不实现了)
保护exe代码区段需要一个Dll来完成(显然,运行中代码区段不能解除自己的映射,这会导致程序直接崩溃),且需要编译出来才有效

思路来源:代码页防止更改,核心就是用NtMapViewOfSection给代码页添加SEC_NO_CHANGE属性

游客,如果您要查看本帖隐藏内容请回复






上一篇:X64程序DLL注入器附易语言源码
下一篇:快手主页/视频解析软件附易语言源码
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|27CaT资源论坛

GMT+8, 2024-11-22 21:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表