首页
社区
课程
招聘
[旧帖] [求助]内核编程时 memcpy失败。。求原因和解决方法 0.00雪花
发表于: 2010-5-12 09:58 6123

[旧帖] [求助]内核编程时 memcpy失败。。求原因和解决方法 0.00雪花

2010-5-12 09:58
6123
正写一个inline unhook NtOpenProcess的程序练练手
  需要将原函数被修改前五个字节改写成原来的指令(push 0xC4)
  定位到了NtOpenProcess的首地址后,就开始用memcpy进行拷贝:
(BYTE)orig_code[5] ={0x68,0xc4,0x00,0x00,0x00};
  ULONG Address = (ULONG)NtOpenProcess;

  //去除内存写保护
  memcpy((BYTE*)Address,orig_code,5)
  //恢复内存写保护
   ...

  用windbg调试的时候发现memcpy执行后,Address里面的内容并没有改变。。

  望高手能帮助下~

  ps.然后还有个问题,就是现在我这有一堆(几十上百个)内核函数被inline hook了,我需要全部还原的话,有没有什么模块化的方法,即批量还原的。

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
siz
2
#里面没有memset相关函数
strcpy可以通过=操作符实现,
E.G:
string a="";
a="12345";
memcpy可以通过Substring()方法实现
E.G:
string b = a.Substring(2,2);
这个方法可以参照MSDN.
要注意的是,c#里面char数组还有string是两个完全不同的东西,这个是没有从C/C++里面继承来的

0回答者: hisan_p -
2010-5-14 02:58
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yya
3
如果address 不可写memcpy失败会BSOD吧
即然没有那是不是有其它东西在写覆盖了你写的呢?

或者是被保护软件拦了
2010-5-14 13:07
0
游客
登录 | 注册 方可回帖
返回
//