包含标签 CPU articles

C语言15 取地址符号&的使用

&符号是取地址符,任何变量都可以使用&来获取地址,但不能用在常量上 struct Point { int x; int y; }; char a; short b; int c; Point p; printf("%p %p %p %p \n",&a,&b,&c,&p); printf("%x %x %x %x \n",&a,&b,&c,&p); printf("%x \n",&10); 16: char a; 17: short b; 18: int c; 19: Point p; 20: 21: printf("%p %p %p %p \n",&a,&b,&c,&p); 0040D408 lea eax,[ebp-14h] 0040D40B push eax 0040D40C lea ecx,[ebp-0Ch] 0040D40F push ecx 0040D410 lea edx,[ebp-8] 0040D413 push edx 0040D414 lea eax,[ebp-4] 0040D417 push eax 0040D418 push offset string "%p %p %p %p \n" (00422e90) 0040D41D call printf (0040d6c0) 0040D422 add esp,14h 22: printf("%x %x %x %x \n",&a,&b,&c,&p); 0040D425 lea ecx,[ebp-14h] 0040D428 push……

Continue reading

6.汇编-修改EIP的指令

EIP寄存器 EIP寄存器表示CPU下次执行的位置 JMP指令 JMP指令相当于给EIP寄存器赋值 JMP后面只能是32位的 指令格式: MPV EIP,寄存器/立即数/内存 简写:JMP 寄存器/立即数/内存 JMP 0x00FF19 -> MOV EIP,0X00FF19 JMP EAX -> MOV EIP,EAX JMP DWORD PTR DS:[0x18ffa0] ->MOV EIP,DWORD PTR DS:[0x18ffa0] #这里内存指针只能用32位的 CALL指令 PUSH下一行地……

Continue reading