首页
社区
课程
招聘
[求助]汇编语句
发表于: 2017-12-11 19:22 2814

[求助]汇编语句

2017-12-11 19:22
2814
MEMORY:2081A jz      near ptr unk_825
MEMORY:2081E or      edx, 80000000h
MEMORY:20825 cli
MEMORY:20826 lgdt    fword ptr ds:1500h
MEMORY:2082B lidt    fword ptr ds:1508h
MEMORY:20830 mov     eax, cr0
MEMORY:20833 or      eax, edx
MEMORY:20836 mov     cr0, eax
MEMORY:20839 xchg    bx, bx
MEMORY:2083B nop
MEMORY:2083C jmp     short near ptr unk_83F
MEMORY:2083C ; ---------------------------------------------------------------------------
MEMORY:2083E db  90h ; 
MEMORY:2083F ; ---------------------------------------------------------------------------
MEMORY:2083F push    50h ; 'P'
MEMORY:20841 push    845h
MEMORY:20844 retf
MEMORY:20844 ; ---------------------------------------------------------------------------
MEMORY:20845 mov     ax, 60h ; '`'
MEMORY:20848 mov     ds, ax
MEMORY:2084A assume ds:nothing
MEMORY:2084A mov     ss, ax
MEMORY:2084C assume ss:nothing
MEMORY:2084C mov     es, ax
MEMORY:2084E assume es:nothing
MEMORY:2084E mov     gs, ax


为什么EIP执行 MEMORY:2083F  (push 50 push 845h retf)    到 MEMORY:20845。

原来cs是0x2000      执行push 50h push 845h retf         cs为50h,     为什么到 MEMORY:20845

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
这段代码做了重新装入 gdt 和 idt 两个表,开启了 paging【分页机制】,从代码里看:在开分页之前已经切到保护模式了。
因为:开分页之前,必须先开保护模式,或者同时开启。(这段代码并没有看到开启 PE 位,只是开了 PG 位)
50h 只是个段选择子,和你的 eip 没直接关系(eip 只是个偏移量),执行段的基址是存放在 cs.base 里,并经过 paging 转换处理
因此,你之前的 cs 应该不是 0x2000(它已经切到保护模式了)。
2017-12-11 21:47
0
雪    币: 364
活跃值: (1736)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3

有点明白,到50:845h 后    如果word ptr[bp-4] 不知道访问那个地方的数据,
2017-12-12 09:32
0
游客
登录 | 注册 方可回帖
返回
//