char program[3] = { 0x6a, 0x0a, 0xC3 }; //push 10; ret;
char (*p)(void) = program;
printf("char = %c \n", p());
このコードはクラッシュします。どうして?x86 asmクラッシュアプリケーション
次のコードは、[OK]を動作します:
char program[3] = { 0x90, 0x90, 0xC3 }; //nop; nop; ret
void (*p)(void) = program;
p();
プッシュ+ RET ==ジャンプでx86-32上で実行しているよう。 – ruslik