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