首页
社区
课程
招聘
关于内存指令加密的问题
发表于: 2007-4-18 16:52 6787

关于内存指令加密的问题

2007-4-18 16:52
6787
用VC写了个链接库,用于将内存中一段指令加密

写了个测试工程,在VC环境下直接F5运行,调用dll功能后用WinHex查看内存数据,正常.

在Windows下直接运行测试工程生成的exe文件,调用dll功能后用WinHex查看,数据没有改变.

请各位高手指点迷津,我想大概跟VC启动程序有关吧.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 58782
活跃值: (21915)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
开始理解错了。
你加密前,先将被加密代码设成可读写。

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);

//此处调用你的函数:CryptMemRange(DWORD dwMemBase, DWORD dwMemSize)

DWORD dwOldProtect;
VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize, mbi_thunk.Protect, &dwOldProtect);
2007-4-18 17:04
0
雪    币: 235
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
DLL导出函数CryptMemRange(DWORD dwMemBase, DWORD dwMemSize)

在应用程序中调用它是为了加密应用程序自身的内存
2007-4-18 17:13
0
雪    币: 235
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
程序执行时我用Winhex查看调用时的 dwMemBase 位置的内存

在VC环境中执行后就OK,否则就不行,我是把程序代码区的属性改为执行/读写的
2007-4-18 17:16
0
雪    币: 235
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我是这样写的,在VC环境中执行是对的

就是单独执行不行.
2007-4-18 21:06
0
雪    币: 58782
活跃值: (21915)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
6
OD单步跟一下,看看哪步出问题了。
2007-4-19 09:23
0
雪    币: 235
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢提醒,问题前几天找到了,嘿嘿,是构造的密钥文件放错路径了,导致DLL不能成功加载

不过很奇怪,在开发环境里执行却没有问题??????
2007-4-23 10:49
0
游客
登录 | 注册 方可回帖
返回