查看: 487|回复: 2

[源码] C语言内联汇编动态获取kernel32.dll基址

[复制链接]

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1598
人气
179
分享
17

最佳新人活跃会员

发表于 2022-5-21 22:01:29 | 显示全部楼层 |阅读模式
本帖最后由 hackerbob 于 2022-5-22 09:23 编辑

源码如下,__asm中的为汇编代码,通过PEB获取kernel32.dll基址
获取这个基址有利于隐形调用api,用来编写shellcode,增加分析难度
我直接使用了B站上有人总结的公式,不然代码量更大
PEB结构体里面有几十个成员,这里只用了其中的几个
代码:
[C] 纯文本查看 复制代码
#include<stdio.h>
int main()
{
        unsigned kjz;
        __asm 
        {
                mov eax,fs:[30h]
                mov eax,[eax+0ch]
                mov eax,[eax+14h]
                mov eax,[eax]
                mov eax,[eax]
                mov eax,[eax+10h]
                mov kjz,eax
        }
        printf("%u\n", kjz);
        return 0;
}

结果:
[C] 纯文本查看 复制代码
1981087744


0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
4557
人气
126
分享
5
发表于 2022-5-22 07:57:48 | 显示全部楼层
调用Windows原生的api?
Manners maketh man

2

技术

6

魅力

2

原创

病毒研究组

Rank: 8Rank: 8

积分
1598
人气
179
分享
17

最佳新人活跃会员

 楼主| 发表于 2022-5-22 09:31:39 | 显示全部楼层
xiaomeng 发表于 2022-5-22 07:57
调用Windows原生的api?

PEB是进程环境模块,我觉得不算api
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表