开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 204|回复: 6
收起左侧

[其它求助] 写入相同字节会导致封禁是为什么?

[复制链接]
结帖率:82% (90/110)
发表于 2025-4-29 06:02:19 | 显示全部楼层 |阅读模式   香港特别行政区*
14精币
写入相同字节会导致封禁是为什么? 游戏中没有CRC效验。然后我看了改写的页面,也没有改变页面属性,但是就是会封。我用CE F5F访问地址也没出现任何信息访问这个地址。随便写任何地址都会封。不管是exe或者DLL。就算在ntdll.dll中一直写原始字节也会封。有人说是NtQueryVirtualMemory检测。但是我看了页面也没改变啊。这是我查看页面的代码
  
bool NTQUERYVIRTUALMEMORY__ (int PID)
{
BOOLEAN querySucceeded;    // cha询结果状态(未实际使用)
PVOID64 baseAddress;        // 当前cha询的内存基地址
MEMORY_BASIC_INFORMATION basicInfo; // 存储内存基础信息的结构体
// 动态加载ntdll.dll获取NtQueryVirtualMemory函数地址
HMODULE hModule = LoadLibrary (L"ntdll.dll");
auto NtQueryVirtualMemory = (NTQUERYVIRTUALMEMORY)GetProcAddress (hModule, "NtQueryVirtualMemory");
FreeLibrary (hModule);  // 立即释放DLL
baseAddress = (PVOID)0; // 从地址0开始遍历内存区域
// 打开目标进程(PID=4588),请求cha询权限和内存读取权限
HANDLE processHandle = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, PID);
std::cout << processHandle << endl;
if (NULL == processHandle) {
// 如果失败,尝试仅用cha询权限再次打开
processHandle = OpenProcess (PROCESS_QUERY_INFORMATION, 0, PID);
if (NULL == processHandle) {
std::cout << processHandle << endl;
//return -1;  // 完全失败则退出程序
}
}
// 循环遍历进程内存区域
while (NT_SUCCESS (NtQueryVirtualMemory (
processHandle,
baseAddress,
MemoryBasicInformation,       // cha询基础信息
&basicInfo,                   // 输出到basicInfo结构体
sizeof (MEMORY_BASIC_INFORMATION),
NULL
))) {
do {  // 使用do-while实现一次性循环,方便用break跳过逻辑
if ( (basicInfo.State & MEM_FREE) == MEM_FREE) {
break;  // 跳过空闲内存区域
}
// 打印内存块基本信息
printf ("基地址 :%I64x  区域大小: %x", baseAddress, basicInfo.RegionSize);
// 调试断点(当扫描到0x60000地址时触发调试器)
if ( (ULONG)baseAddress == 0x60000) {
DebugBreak ();
}
// cha询共享提交信息
MEMORY_SHARED_COMMIT_INFORMATION sharedCommitInfo;
NTSTATUS sharedStatus = NtQueryVirtualMemory (
processHandle,
baseAddress,
MemorySharedCommitInformation,
&sharedCommitInfo,
sizeof (sharedCommitInfo),
NULL
);
if (NT_SUCCESS (sharedStatus)) {
printf (" 共享页面: %I64u", sharedCommitInfo.SharedCommitUsage);
}
else {
printf (" 共享页面: N/A (0x%X)", sharedStatus);
}
// 解析内存保护属性
if ( (basicInfo.AllocationProtect & PAGE_EXECUTE_WRITECOPY) == PAGE_EXECUTE_WRITECOPY) {
printf (" PAGE_EXECUTE_WRITECOPY  可执行写入复制页");
}
if ( (basicInfo.AllocationProtect & PAGE_NOACCESS) == PAGE_NOACCESS) {
printf (" PAGE_NOACCESS 禁止访问");
}
if ( (basicInfo.AllocationProtect & PAGE_EXECUTE) == PAGE_EXECUTE) {
printf (" PAGE_EXECUTE 执行");
}
if ( (basicInfo.AllocationProtect & PAGE_READONLY) == PAGE_READONLY) {
printf (" PAGE_READONLY 只读");
}
if ( (basicInfo.AllocationProtect & PAGE_READWRITE) == PAGE_READWRITE) {
printf (" PAGE_READWRITE 读写");
}
// 解析内存状态
if ( (basicInfo.State & MEM_COMMIT) == MEM_COMMIT) {
printf (" MEM_COMMIT 已提交内存");  // 已提交内存
}
if ( (basicInfo.State & MEM_RESERVE) == MEM_RESERVE) {
printf (" MEM_RESERVE 保留内存"); // 保留内存
}
// 解析内存类型
if ( (basicInfo.Type & MEM_PRIVATE) == MEM_PRIVATE) {
printf (" MEM_PRIVATE 私有内存(进程独占)"); // 私有内存(进程独占)
}
if ( (basicInfo.Type & MEM_MAPPED) == MEM_MAPPED) {
printf (" MEM_MAPPED  内存映射文件");  // 内存映射文件
}
if ( (basicInfo.Type & MEM_IMAGE) == MEM_IMAGE) {  // 原代码有误,应为MEM_IMAGE
printf (" MEM_IMAGE 可执行镜像 ");   // 可执行镜像
}
printf ("\n\n");
} while (0);
// 移动到下一个内存区域
baseAddress = (PVOID64) ( (ULONG64)baseAddress + basicInfo.RegionSize);
}
getchar ();  // 暂停程序,防止控制台关闭
return 0;
}


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:82% (90/110)
 楼主| 发表于 2025-4-29 09:00:29 | 显示全部楼层   香港特别行政区*
而且我是直接写入物理内存的。所以根本不会触发COW
回复

使用道具 举报

发表于 2025-4-29 10:40:57 | 显示全部楼层   湖北省恩施土家族苗族自治州
84974654444444444444
回复

使用道具 举报

发表于 2025-4-29 11:22:20 | 显示全部楼层   湖北省恩施土家族苗族自治州
4657891324568132465
回复

使用道具 举报

发表于 2025-4-29 11:22:35 | 显示全部楼层   湖北省恩施土家族苗族自治州
251564154654646513245643543657
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 4 天

发表于 2025-4-29 11:38:08 | 显示全部楼层   辽宁省朝阳市
CE直接随便改  看看会不会封  
回复

使用道具 举报

结帖率:82% (90/110)
 楼主| 发表于 2025-4-29 16:42:22 | 显示全部楼层   香港特别行政区*
CigaretteWine 发表于 2025-4-29 11:38
CE直接随便改  看看会不会封

也会的。所以我就很懵、不知道什么情况。
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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