-
-
[旧帖]
[求助]if后面的为什么会执行(c和汇编代码)
0.00雪花
-
发表于:
2015-7-2 19:36
1409
-
[旧帖] [求助]if后面的为什么会执行(c和汇编代码)
0.00雪花
#include "stdio.h"
2:
3: void main()
4: {
0040D420 push ebp
0040D421 mov ebp,esp
0040D423 sub esp,48h
0040D426 push ebx
0040D427 push esi
0040D428 push edi
0040D429 lea edi,[ebp-48h]
0040D42C mov ecx,12h
0040D431 mov eax,0CCCCCCCCh
0040D436 rep stos dword ptr [edi]
5: char****** p1;
6: char****** p2;
7: p1=(char******)3;
0040D438 mov dword ptr [ebp-4],3
8: p2=(char******)5;
0040D43F mov dword ptr [ebp-8],5
9: if (p2-p1==0)
0040D446 mov eax,dword ptr [ebp-8]
0040D449 sub eax,dword ptr [ebp-4]
0040D44C sar eax,2
//这里将其置为0
0040D44F test eax,eax
0040D451 jne main+4Eh (0040d46e)
10: {
11: p2=0;
0040D453 mov dword ptr [ebp-8],0
12: p1=0;
0040D45A mov dword ptr [ebp-4],0
13: printf("aa");
0040D461 push offset string "aa" (0042201c)
0040D466 call printf (0040dc10)
0040D46B add esp,4
14: }
15: getch();
0040D46E call _getch (0040d590)
16: }
0040D473 pop edi
0040D474 pop esi
0040D475 pop ebx
0040D476 add esp,48h
0040D479 cmp ebp,esp
0040D47B call __chkesp (0040dbd0)
0040D480 mov esp,ebp
0040D482 pop ebp
0040D483 ret
为什么会执行?是指针类型的什么特性?
char****** p1;
char****** p2;
p1=(char******)3;
p2=(char******)5;
if (p2-p1==0)
{
p2=0;
p1=0;
}//c代码
知道的说下啊
[课程]FART 脱壳王!加量不加价!FART作者讲授!