首页
社区
课程
招聘
[讨论]反编译ntopenprcess的一个疑惑.
发表于: 2012-7-18 21:42 4038

[讨论]反编译ntopenprcess的一个疑惑.

2012-7-18 21:42
4038
以NtOpenProcess为例.工具为windbg.

lkd> uf NtOpenProcess
nt!NtOpenProcess:
805cc456 68c4000000      push    0C4h
805cc45b 68c0b44d80      push    offset nt!ObWatchHandles+0x25c (804db4c0)

......

nt!NtOpenProcess+0xa4:
805cc4fa 834dfcff        or      dword ptr [ebp-4],0FFFFFFFFh
805cc4fe eb42            jmp     nt!NtOpenProcess+0xec (805cc542)

nt!NtOpenProcess+0xc0:
805cc516 8b5d10          mov     ebx,dword ptr [ebp+10h]
......

注意805cc4fe,之后的指令行地址为805cc516.
但是805cc4fe的指令长度为2,那么805cc500-805c515到哪里去了?

lkd> uf 805cc500
nt!NtOpenProcess+0xaa:
805cc500 8b45ec          mov     eax,dword ptr [ebp-14h]
805cc503 8b00            mov     eax,dword ptr [eax]
805cc505 8b00            mov     eax,dword ptr [eax]
805cc507 8945c4          mov     dword ptr [ebp-3Ch],eax
805cc50a 33c0            xor     eax,eax
805cc50c 40              inc     eax
805cc50d c3              ret

直接反编译805cc500,结果如上,自己写的简单的反编译引擎,也可以得到如上的反编译结果,但是出现了ret,那么就无法继续反编译后继的真实的函数内容了.

疑问:windbg是如何从805cc4fe+2跳到805cc516的?判断依据是什么?

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2242
活跃值: (488)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
2
在构建基本块控制流向图的时候,那些基本块并未产生节点.
你看看IDA的Graph view就明白了
2012-7-19 10:38
0
雪    币: 103
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看来无法简单快速的分析一个函数了.:(
2012-7-19 12:11
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
嗯,许多函数到用的时候才解密,静态反编译是没用的。
2012-7-19 12:33
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码