首页
社区
课程
招聘
[旧帖] [求助]下面的这三句代码是什么意思啊 0.00雪花
发表于: 2008-7-4 06:50 5777

[旧帖] [求助]下面的这三句代码是什么意思啊 0.00雪花

2008-7-4 06:50
5777
MOV ECX,DWORD PTR FS:[18]
AND BYTE PTR DS:[ECX+FB4],0
CMP DWORD PTR SS:[ESP+4],DCBAABCD         
到底什么意思啊???????郁闷中

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
MOV ECX,DWORD PTR FS:[18] 把18转为双字节送到ECX去
AND BYTE PTR DS:[ECX+FB4],0  将ECX+FB4与0相与
CMP DWORD PTR SS:[ESP+4],DCBAABCD        这个当然就是比较拉
2008-7-4 10:25
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
二楼的回答有问题啊  误人子弟了
MOV ECX,DWORD PTR FS:[18]    是把从fs:【18】 开始的 双字送入 EAX
AND BYTE PTR DS:[ECX+FB4],0      是 把从 ds:【ecx+FB4】开始的 字节 和 0  相与
CMP DWORD PTR SS:[ESP+4],DCBAABCD  是 栈堆中的从 ss:【esp+4】开始的双字 与DCBAABCD 结果置标志位。。。。
2008-7-4 21:03
0
雪    币: 334
活跃值: (247)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
4
把 TEB.SafeThunkCall 设为0
2008-7-5 01:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
把 TEB.SafeThunkCall 设为0,但什么要和DCBAABCD 比较啊?? DCBAABCD这个值有什么用啊??我看过两个软件都有和这个值比较的语句。
2008-7-5 02:13
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
6
CMP DWORD PTR SS:[ESP+4],DCBAABCD
这一句代码跟前面两句是没有直接关系的。
关键看esp+4处保存的是什么,必须把这个函数从整体上看才知道,如果只看单独的这一句,只能像3楼那样解释了。
印象中这似乎类似一个安全cookie,用于对溢出的防御。
即函数开始时将这个数保存在堆栈的局部变量中,而在函数返回前重新查一下这个局部变量值是否与原来相同。如果函数执行过程中因为缓冲区溢出,返回地址被覆盖,则局部变量值必定先于返回地址被覆盖,而不会跟原来相同,通过返回前重新检测这个值就可以发现被溢出。
当然实际上是不是,还是必须看到整个函数的代码才能下结论。
注意,就像你不能把一个汉字拆成几个笔画,来单独理解一样,一个函数只有从整体上理解,你才会明白这些寄存器操作到底在干什么。
2008-7-5 12:04
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=ilovewf;475624]
CMP DWORD PTR SS:[ESP+4],DCBAABCD         
到底什么意思啊???????郁闷中[/QUOTE]

User32.dll 内层的东西.
一些如 DispatchMessage'CallWindowProc'SendMessage'DispatchMessage...
之类会转移控制权的API最后会呼叫到.

(原程序码我列在最下面)
77DF2E95  call [ebp+8] 可能会转移控制权到你的程式
靠着 DCBAABCD 标志, 至少可处理如下的被调用者:

  1.  ret 10h        (四个参数)
  2.  ret 14h   (五个参数)
  3.  ret        (直接返回)
  
我只遇过正常的第1种.  2 '3 未遇过.
PS. 乱来的话, 似乎比找  jmp esp 容易多了.

77DF2E80   push    ebp
77DF2E81   mov     ebp,esp
77DF2E83   push    DCBAABCD
77DF2E88   push    esi
77DF2E89   push    dword ptr [ebp+18]
77DF2E8C   push    dword ptr [ebp+14]
77DF2E8F   push    dword ptr [ebp+10]
77DF2E92   push    dword ptr [ebp+C]
77DF2E95   call    [ebp+8]
77DF2E98   cmp     dword ptr [esp+4],DCBAABCD
77DF2EA0   jnz     77E2AE1E
77DF2EA6   add     esp,8
77DF2EA9   pop     ebp
77DF2EAA   retn    14

77E2AE1E   cmp     dword ptr [esp],DCBAABCD
77E2AE25   jnz     short 77E2AE2F
77E2AE27   sub     esp,4
77E2AE2A   jmp     77DF2EA6
77E2AE2F   add     esp,10
77E2AE32   jmp     77DF2EA6
2008-7-5 14:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看了大牛们的解释,还是不懂啊。看来汇编要好好学了。
2008-7-5 20:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢大家的回答,我似乎有点理解了
2008-7-6 06:04
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
恩,我的解释有点肤浅了。。。。。。受教,受教
2008-7-6 09:56
0
雪    币: 6
活跃值: (1201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
呵呵,我和楼主差不多,只能看懂汇编代码,但不知道是在干什么,比如takelie一看就知道是在设置xxxxx为0,我要多少功底才能一步看穿那???
2008-7-6 13:41
0
雪    币: 173
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习,积极学习。!!!!!!!!!!!!!
2008-7-7 19:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习一下,谢谢
2008-7-7 22:57
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
越看就越不明了
2008-7-8 00:14
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
今天也遇到了这种情况
2008-8-20 00:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
真是学无止境啊!!!谢谢!!!
2008-8-20 09:06
0
游客
登录 | 注册 方可回帖
返回
//