找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 4509|回复: 1

手逆RtlpWalkFrameChain

[复制链接]

307

主题

228

回帖

7333

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5583 个
贡献
253 次
宅之契约
0 份
在线时间
947 小时
注册时间
2014-1-25
发表于 2015-7-31 15:22:18 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
只是一部分,因此不分析了
ULONG
RtlpWalkFrameChain (
    OUT PVOID *Callers,
    IN ULONG Count,
    IN ULONG Flags,
    )
ULONG LowLimit;[ebp-20h]
ULONG HightLimit;[ebp-24h]
ULONG* ebp;[ebp-28h]
int i;[ebp-2Ch]
PETHREAD thread;[ebp-30h][ebp-3Ch]
PKTRAP_FRAME frame;[ebp-34h]
PTEB teb;[ebp-38h]

if(!Flags)
{
        ebp=EBP
        if(!RtlpCaptureStackLimits(&LowLimit,&HighLimit))
                return 0;
}
if(Flags == 1)
{
        thread=PsGetCurrentThread();
        frame=thread->TrapFrame
        teb=thread->Teb;
        if(!teb || frame < MmSystemRangeStart || frame <= thread.StackLimit || thread->ApcStateIndex == 1)
                return 0;
        if(KeGetCurrentIrql()?=2)
                return 0;
        LowLimit = teb->NtTib.StackLimit;
        HightLimit = teb->NtTib.StackBase;
        ebp=teb->ebp;
        if(LowLimit>=HightLimit)
                return 0;
        if(HightLimit<=MmUserProbeAddress (805599d4))
                ....
}
for(i=0;i<Count;i++)
{
        if(ebp>=HightLimit)
                break;
        ............
        ULONG nextebp=[ebp];
        Callers[i]=[ebp+4];
        ebp=nextebp;
}
       
回复

使用道具 举报

0

主题

41

回帖

45

积分

用户组: 初·技术宅

UID
3351
精华
0
威望
2 点
宅币
0 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2018-1-14
发表于 2018-1-14 16:05:03 | 显示全部楼层
可以可以!!
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-18 19:14 , Processed in 0.036586 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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