首页
社区
课程
招聘
[讨论]大侠们:怎么写一个程序获得 获取Kernel32基地址
发表于: 2010-5-4 12:25 4483

[讨论]大侠们:怎么写一个程序获得 获取Kernel32基地址

2010-5-4 12:25
4483
GetK32Base:
    mov eax, [esp+04h]     ;得到kernel32的返回地址
    and eax, ffff0000h
Search:
    cmp WORD ptr [eax], IMAGE_DOS_SIGNATURE   ;判断是否为ImageBase
    jnz @f
    mov edx, [eax+3ch]
    add edx, eax
    cmp WORD ptr [edx], IMAGE_NT_SIGNATURE   ;判断是否为PE头
    jnz @f
    ret
@@:
    dec eax     ;按64KB递减搜索
    xor ax, ax
    cmp eax, 70000000h
    ja Search
    ret

拿C语言怎么实现啦。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
C语言不成。最主要是seh链没有办法挂上,另外就是重定位,这两个都需用汇编才能完成。真的用C语言+汇编的话,反而不如汇编清爽干脆。
2010-5-4 14:38
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
扫描导入表就可以获得获取Kernel32基地址 。
2010-5-4 23:51
0
雪    币: 378
活跃值: (702)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
内联汇编可以!你可以跟一下GetModuleHandle的实现就明白了!
2010-5-5 00:05
0
雪    币: 217
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
__asm
        {
                        mov eax, fs:0x30                ;PEB的地址
                        mov eax, [eax + 0x0c]        ;Ldr的地址
                        mov esi, [eax + 0x1c]        ;Flink地址
                        lodsd               
                        mov eax, [eax + 0x08]        ;eax就是kernel32.dll的地址
        }
2010-5-5 13:28
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
2010-5-5 16:13
0
游客
登录 | 注册 方可回帖
返回
//