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)();
}

 

posted @ 2018-02-17 19:50  歇马  阅读(271)  评论(0编辑  收藏  举报