100分求助:关于锁定指定内存数据

xuxinmmy 2009-07-30 11:08:31
100分求助:关于锁定指定内存数据

现在有一个已经存在的数据(假设10字节),知道它的首地址了,现在需要让这10个字节变为只读的,
但是使用VirtualProtectEx修改的是整个Page页面的属性,会使其它的数据出现不可写的异常。
有没有别的办法解决这个问题,该数据是多线程访问的。

C/C++/汇编 的办法都可以
...全文
184 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2009-07-31
  • 打赏
  • 举报
回复
不妨说说你的原始需求吧。
LeonTown 2009-07-31
  • 打赏
  • 举报
回复
学习
xuxinmmy 2009-07-31
  • 打赏
  • 举报
回复
表随便说不可能撒...
superbtl 2009-07-30
  • 打赏
  • 举报
回复
帮顶 学习了
simonjay2007 2009-07-30
  • 打赏
  • 举报
回复
用Memory Management Functions (内存管理函数)

locallock锁定本地内存对象并且返回指向该内存对象的第一个字节的指针。
xuxinmmy 2009-07-30
  • 打赏
  • 举报
回复
~~~
xuxinmmy 2009-07-30
  • 打赏
  • 举报
回复
哪的函数啊,MSDN和ntdll.dll里都没找到
shen8686 2009-07-30
  • 打赏
  • 举报
回复
LinPageLock
上面打错了
shen8686 2009-07-30
  • 打赏
  • 举报
回复
LinePageLock
LZ看看这个怎么样
asksgp 2009-07-30
  • 打赏
  • 举报
回复
不会,帮顶
fallening 2009-07-30
  • 打赏
  • 举报
回复
不太可能
如果内存可以锁定,那么外挂怎么活下来的?
xuxinmmy 2009-07-30
  • 打赏
  • 举报
回复
SuspendThread(hThread);

CONTEXT cntxt = {0};
cntxt.ContextFlags = CONTEXT_FULL;
BOOL bRes = GetThreadContext(hThread, &cntxt);
cntxt.Dr0 = (DWORD)szStr;
cntxt.Dr6 = 2^14;
cntxt.Dr7 = 2^0 + 2^1 + 2^18 + 2^19;

bRes = SetThreadContext(hThread, &cntxt);

CONTEXT cntxt1 = {0};
cntxt1.ContextFlags = CONTEXT_FULL;
bRes = GetThreadContext(hThread, &cntxt1);

ResumeThread(hThread);

为什么SetThreadContext 之后 dr0 - dr7 还都是0,未生效?
slblake 2009-07-30
  • 打赏
  • 举报
回复
我的理解是不可能的,除非你整个Page页面就只存放这些数据,然后修改这个页面的属性。
yxq281426250 2009-07-30
  • 打赏
  • 举报
回复
学习~!~!
xuxinmmy 2009-07-30
  • 打赏
  • 举报
回复
LocalLock锁定的是用LocalAlloc分配的内存
haggard_hunan 2009-07-30
  • 打赏
  • 举报
回复
加锁方法很多啊!
  • 打赏
  • 举报
回复
观望

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧