首页
社区
课程
招聘
[旧帖] 又有一段汇编代码求教 0.00雪花
发表于: 2009-11-3 16:22 4479

[旧帖] 又有一段汇编代码求教 0.00雪花

2009-11-3 16:22
4479
在函数开始不久有一句:
mov edi,[ebp+arg_4]
cmp dword ptr [edi+8],offset sub_8746230
jz  函数结束
......

但sub_8746230为:
sub_8746230 proc near
            push ebp
            mov ebp,esp
            pop ebp
            retn
sub_8746230 endp

这种比较对应高级语言是什么意思,不知道我说清楚没有

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 233
活跃值: (43)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
cmp dword ptr [edi+8],offset sub_8746230

edi +8处存放的是一个地址, 此处用来判断这个地址是否和 sub_8746230这个函数的地址相同,如果相同,就跳转。
2009-11-3 17:10
0
雪    币: 1596
活跃值: (25)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=marxixing;707149]cmp dword ptr [edi+8],offset sub_8746230

edi +8处存放的是一个地址, 此处用来判断这个地址是否和 sub_8746230这个函数的地址相同,如果相同,就跳转。[/QUOTE]

同意!应该是用来判断某个函数的地址,可能程序之前有反调试检测,检测到调试就把sub_8746230的地址改了不让程序执行真正的sub_8746230!
2009-11-3 17:33
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
这题我帮不了你了.
请出简单一点的.
2009-11-3 18:08
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我知道是跳转,可是为什么要比较这个函数,这个函数什么也没有做,我觉得应该不是和反调试有关,但是还是很迷茫,是编译器优化的原因,还是程序本身就是这个逻辑。
不好意思,越说越糊涂
2009-11-3 20:03
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果没有得到满意的答案,可不可以不结贴
2009-11-3 20:05
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感觉不是和反调试有关,而感觉跟调试有关。感觉在debug或者某种情况下,调用这个函数;而在正式发布的时候跳过了函数,为了图省事,就改成比较了。
2009-11-3 21:34
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
可是被调用的这个函数什么也没有做,就是压栈出栈,为什么要这样比较呢,而且我在这么程序里遇到了不知一次
2009-11-4 09:43
0
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
哪位高手给帮着解答一下
我也想知道为什么,那个函数什么都没做但还要跟它的地址比较
2009-11-4 10:53
0
雪    币: 347
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
我猜测啊,这个ebp+8的函数指针在这个函数内有一个switch...case的结构,cmp dword ptr [edi+8],offset sub_8746230这个比较应该属于default下
处理方式了,
2009-11-4 11:13
0
雪    币: 173
活跃值: (132)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
看的我也不是很明白...
2009-11-4 11:13
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=asmc;707398]我猜测啊,这个ebp+8的函数指针在这个函数内有一个switch...case的结构,cmp dword ptr [edi+8],offset sub_8746230这个比较应该属于default下
处理方式了,[/QUOTE]

这么比较是在函数的一开始,也就是刚用参数赋值,就进行比较了,没有switch结构
2009-11-4 17:25
0
雪    币: 208
活跃值: (148)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
[QUOTE=kakakaka;707125]在函数开始不久有一句:
mov edi,[ebp+arg_4]
cmp dword ptr [edi+8],offset sub_8746230
jz  函数结束
......

但sub_8746230为:
sub_8746230 proc near
            pu...[/QUOTE]

你的代码贴的太少,根本没有办法分析
2009-11-5 16:48
0
游客
登录 | 注册 方可回帖
返回
//