PWN_2 x86汇编
2018-02-17 18:50:11
Register | Accumulator | Counter | Data | Base | Stack Pointer | Stack Base Pointer | Source | Destination |
64-bit | RAX | RCX | RDX | RBX | RSP | RBP | RSI | RDI |
32-bit | EAX | ECX | EDX | EBX | ESP | EBP | ESI | EDI |
16-bit | AX | CX | DX | BX | SP | BP | SI | DI |
8-bit | AH AL | CH CL | DH DL | BH BL |
ESP 栈顶指针 EBP 栈底指针
int a=0 #初始化全局变量 存放在data段中
#最常见的写法
保证ebx中字符串最后一位是0
xor ecx,ecx #实现对ecx的间接赋值为0
objcopy -O binary a.o code #把生成的二进制文件生成code文件
xxd code #以十六进制的形式查看code
xxd -i shellcode 自动提取
一个模板
gedit shell.c
编译过程
gcc shell.c -o shell -m32 -zexestack
zexestack 去掉执行保护
总的流程!!
test.c xxd -i code >code.h #生成一个头文件再包含进去
#include "shellcode.h"
typedef int (*CODE)();
int main(){
((CODE)code)();
}
Minds overflow