首页
社区
课程
招聘
[菜鸟求助]如何读写代码段数据?
发表于: 2008-6-29 16:01 4186

[菜鸟求助]如何读写代码段数据?

2008-6-29 16:01
4186
普通的程序代码段地址都是可执行可读的但不可写,如何在运行中修改成可写的?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好像不行吧
2008-6-29 17:18
0
雪    币: 427
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
改下段属性啊
easy
2008-6-29 17:24
0
雪    币: 47147
活跃值: (20405)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
给你一个例子:

//《加密与解密》第三版
void Decrypt (DWORD* pData,DWORD Size,DWORD value)
{
//首先要做的是改变这一块虚拟内存的内存保护状态,以便可以自由存取代码
MEMORY_BASIC_INFORMATION mbi_thunk;
//查询页信息
VirtualQuery(pData, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));
//改变页保护属性为读写。
VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize,PAGE_READWRITE, &mbi_thunk.Protect);

Size=Size/0x4; //对数据共需要异或的次数
//解密begindecrypt与enddecrypt标签处的数据
while(Size--)
{
*pData=(*pData)^value;
pData++;
}

//恢复页的原保护属性。
DWORD dwOldProtect;
VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize, mbi_thunk.Protect, &dwOldProtect);

}


2008-6-29 20:05
0
游客
登录 | 注册 方可回帖
返回
//