首页
社区
课程
招聘
[旧帖] [求助]关于debug清零问题 0.00雪花
发表于: 2013-2-5 20:11 3277

[旧帖] [求助]关于debug清零问题 0.00雪花

2013-2-5 20:11
3277

我是新手,折腾了快一星期了,tp保护问题。
第2处debug 清零
TesSafe+0x22a2://IDA查看到函数头部为01002228   

应该是新的vm
有一处检测线程是往某个清零有写入,不是访问!!
而且他push [edx]..这个edx不是debuport 的地址。而是第2处清零的函数头地址01002228
我个人假设他应该是如果发现修改就写回去并且重启。
b15fba85 ff32            push    dword ptr [edx]
b15fba87 e96adcffff      jmp     TesSafe+0xcf6f6 (b15f96f6)
b15fba8c 5b              pop     ebx

应该把push 改为0他也会重启。应该如何hook才行还是我操作顺序不对

求大牛指教了,刚开始学习驱动方面。看了好多帖子都是老的。没这处新的处理

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (10)
雪    币: 64
活跃值: (60)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
我的就有 可惜你没看。
写个跳,判定edx是debug的值再压入0,否则还压入[ebx],直接压0必然重启。
2013-2-5 20:15
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=小白壹个;1141058]我的就有 可惜你没看。
写个跳,判定edx是debug的值再压入0,否则还压入[ebx],直接压0必然重启。[/QUOTE]

我看了一下你的帖子,你是只有5处,我的不是。“我的也不是dnf而是另外一个游戏不知道是否不同”

大哥,不是额。现在有3处vm了。你说的vm是以前的一处push。现在多一处了。
这处vm我都贴了代码啊。他push的根本不是debug的值。而是我贴出的第2处清零函数头地址的前4个字节。
所以就是问下该怎么处理他对函数的写入,我猜测是对他检测以后,然后写回去。

如果是debug的值我就不问咯。
2013-2-5 22:42
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
解决没,同求答案
2013-3-14 03:58
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
解决没,同求答案
2013-3-15 21:21
0
雪    币: 69
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不会OD的飘过 .
2013-3-15 21:51
0
雪    币: 129
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我也不会OD 目前还只是个临时用户好像转正呀
2013-3-15 22:27
0
雪    币: 508
活跃值: (202)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
8
学习了学习了学习了
2013-3-22 14:04
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我也困在楼主这里了,论坛里有个发过解决方法,我理解能力有问题,看不懂,如果楼主看懂了,请分享下方法
http://bbs.pediy.com/showthread.php?t=155139
2013-5-12 16:15
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
持续运行多次的时候我们还会发现有一处地方的检测
TesSafe+0x22cc2:
b0edccc2 ff32            push    dword ptr [edx]

TesSafe+0x22cc4:
b0edccc4 e98bf4ffff      jmp     TesSafe+0x22154 (b0edc154)
对于这一处的代码,因为这处的代码有VM处理。所以我们不能对这处的地址乱改。
在push的位置处,我们对代码进行hook的处理,当判断edx是检测函数首地址的时候,我们对其做一下处理,而当不是函数首地址的时候,而执行原来的代码。下面的是这一处的处理代码
__asm
{
pushfd
pushad
mov eax, g_uTpZero1
cmp edx,eax      
je Detour
popad
popfd
push dword ptr [edx]
jmp g_uTPDetourPushAddr   //这是本身程序要jmp过去的位置,jmp到tp模块里的位置处。
Detour:
popad
popfd
push 0
jmp g_uTPDetourPushAddr1
}

上面的解决方法我果真是看不明白,
以下是我的理解方法:我测试过了,不会重启,但是我不明白,为什么当 edx 是 被检测函数首地址的时候,改为 push 0 就可以跳过 校验,而且我对VMP不熟

Hook b0edccc4. 比较 edx 的值 如果是函数首地址,则esp+4 再push 0

VOID NAKED MyFunForHookCRC()
{        __asm
        {
                pushfd
                        pushad
                        mov eax, uCrc1 //uCrc1 是 被检测函数的首地址
                        cmp edx,eax      
                        je Detour
                        popad
                        popfd
                jmp uJmpCrcAddr1  //这是本身程序要jmp过去的位置= TesSafe+0x22154。
Detour:
                popad
                        popfd
                        add esp,4  //将原push 的edx值出栈
                        push 0      //用0取代原来push的edx
                jmp        uJmpCrcAddr1
        }

}
2013-5-12 16:31
0
雪    币: 135
活跃值: (2415)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
b15fba85 ff32            push    dword ptr [edx]
b15fba87 e96adcffff      jmp     TesSafe+0xcf6f6 (b15f96f6)
b15fba8c 5b              pop     ebx

这个貌似与前面两个vm的过法不一样,前两个edx就是eprocess+bc,而这个不是,不知道该怎么过,求助啊
2014-1-22 15:07
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册