2022年7月10日 (日曜日)

19:06:26 # Life 絶対アドレスにジャンプしてみるコード。 なんかふと書いてみようと思ったのだが思った動きにならなかったのでメモ。 jmp 0xabeとするだけのコードを書いたらASLRっぽいなにかで相対アドレスとして扱われて0x555555554abeになった。 一回raxに代入してからジャンプするとなんか期待した挙動になった。 んーなんでだったろうか。

int main() {
  __asm__ ("jmp 0xabe");
}


$ gdb out/ripabe
(gdb) run

Program received signal SIGSEGV, Segmentation fault.
0x0000555555554abe in ?? ()
(gdb) info registers
 ..
rip            0x555555554abe      0x555555554abe
 ..


int main() {
   __asm__ ("mov $0xabe, %rax; jmp *%rax");
}

$ gdb out/ripabe
(gdb) run
Starting program: /home/dancer/git/nlp-study/hoge/c/out/ripabe 

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000abe in ?? ()
(gdb) info registers
rip            0xabe               0xabe

	
Junichi Uekawa