首页
社区
课程
招聘
[求助]恢复NtReadVirtualMemory的几个问题
发表于: 2011-2-13 23:15 7208

[求助]恢复NtReadVirtualMemory的几个问题

2011-2-13 23:15
7208
最近正在学习驱动
问几个问题


这个是没被HOOK的


这个是被HOOK的

只要是
mov    eax, 0B120B308
jmp    eax
替换成
push   1C
push   804DA4E0
就能恢复次HOOK了

但是这里面的 push   804DA4E0
我在虚拟机里和本机里看到的都是这个 804DA4E0
这个push的数值是不是每台机子都一样的,如果不一样,被HOOK了以后怎么找到这个数值?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
  • 1.jpg (31.58kb,130次下载)
  • 2.jpg (27.73kb,128次下载)
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
如果代码形式不变,而且能在下一行下断的话,[esp]就是你想找到的那个数值。
2011-2-14 00:20
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=justlovemm;924862]如果代码形式不变,而且能在下一行下断的话,[esp]就是你想找到的那个数值。[/QUOTE]

这里的[esp] 是怎么获得的   
如果用OD下端的话 [esp]就是我所要的那个push值是吗?
2011-2-14 04:35
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
从文件解析PE
2011-2-14 13:30
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
文件是不是c:\windows\system32\ntoskrnl.exe?
具体是怎么分析 ?用工具吗?
2011-2-14 16:43
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
大牛正解。

另外,那个地址是8开头的,你在OD里是看不到的。
2011-2-14 22:42
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
正解? 额  好吧 正解~~
2011-2-15 04:29
0
雪    币: 193
活跃值: (64)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
你用IDA 逆向ntoskrnl.exe,就能发现NtReadVirtualMemory,不过这个函数加载到内核中后好多偏移都变化了,需要重新定位。我看过NtReadVirtualMemory这个函数,第二个PUSH,好像是一个结构体的地址入栈了,如果程序加载到内核中,那么这个结构体的地址是会变化的,然后如果把立即数入栈,就不存在偏移了。
  因此有两种方法,一种比较假单,就是在你那有没还没有启动的时候,扫描一下NtReadVirtualMemory,把没有被HOOK的数据保存下来,然后运行程序,这样就被HOOK了,然后你在把保存起来的数据恢复就行了。
还有一种复杂一点,不用再开始的时候扫描,自己分析ntkrnlpa.exe和win32k.sys文件了。
2011-2-15 09:14
0
雪    币: 4343
活跃值: (4328)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
如果我说的没错的话, jmp eax 是跳到自己的函数  那么在那个函数返回的地方找到原形不可以吗?

mov eax, myFunction
jmp eax

myFunction:
   xxxxx
  //做完后一定会
  push 1c
   push xxxx
   ....
   jmp NtReadVirtualMemory+8
2011-2-15 10:56
0
游客
登录 | 注册 方可回帖
返回
//