『ソードアート・オンライン』
映画もやるようですね。近い将来SAOのようなゲームシステムができたら、私は完全に引きこもりになるかもしれません。今はちゃんと会社行ってますが、平日は自宅との往復のみ、土日は自分を自宅に幽閉してるので半引きこもりです。ゲームの中で仕事ができる時代が来るのが本当に待ち遠しいです。そうですねえ、職業はアーチャー(弓矢使い)が良いでしょう。バーチャルな世界の中なので、安全ではあるのですが、さらにその中でも、より安全なアーチャーがいいです。こちらは相手を攻撃できるけども、相手はこちらを攻撃できません。容姿も変えられるので、美しいエルフとかになってみたいです。
ゲームといえども仕事になると、大変かもしれません。ああ、いろいろ考えたら、ゲームの中でもストレスはついてきそうです。敵は攻撃してこないけども、上司は怒ってくるに違いありません。でも、怒られそうになったら、ログアウトで避難すればいいので、心配要りませんね。
readelfっでELFファイルを読んでみましょう。まずは、-hでヘッダから。
takk@deb83:~$ readelf -h a.out ELF ヘッダ: マジック: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 クラス: ELF32 データ: 2 の補数、リトルエンディアン バージョン: 1 (current) OS/ABI: UNIX - System V ABI バージョン: 0 型: EXEC (実行可能ファイル) マシン: Intel 80386 バージョン: 0x1 エントリポイントアドレス: 0x8048300 プログラムの開始ヘッダ: 52 (バイト) セクションヘッダ始点: 10128 (バイト) フラグ: 0x0 このヘッダのサイズ: 52 (バイト) プログラムヘッダサイズ: 32 (バイト) プログラムヘッダ数: 8 セクションヘッダ: 40 (バイト) セクションヘッダサイズ: 35 セクションヘッダ文字列表索引: 32 takk@deb83:~$
-sでシンボルが表示されます。
takk@deb83:~$ readelf -s a.out
シンボルテーブル '.dynsym' は 5 個のエントリから構成されています:
番号: 値 サイズ タイプ Bind Vis 索引名
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FUNC GLOBAL DEFAULT UND printf@GLIBC_2.0 (2)
2: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
3: 00000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.0 (2)
4: 080493ac 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used
シンボルテーブル '.symtab' は 84 個のエントリから構成されています:
番号: 値 サイズ タイプ Bind Vis 索引名
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 08048134 0 SECTION LOCAL DEFAULT 1
2: 08048148 0 SECTION LOCAL DEFAULT 2
3: 08048168 0 SECTION LOCAL DEFAULT 3
4: 0804818c 0 SECTION LOCAL DEFAULT 4
5: 080481ac 0 SECTION LOCAL DEFAULT 5
6: 080481fc 0 SECTION LOCAL DEFAULT 6
7: 08048248 0 SECTION LOCAL DEFAULT 7
8: 08048254 0 SECTION LOCAL DEFAULT 8
9: 08048274 0 SECTION LOCAL DEFAULT 9
10: 0804827c 0 SECTION LOCAL DEFAULT 10
11: 08048294 0 SECTION LOCAL DEFAULT 11
12: 080482c0 0 SECTION LOCAL DEFAULT 12
13: 08048300 0 SECTION LOCAL DEFAULT 13
14: 08049394 0 SECTION LOCAL DEFAULT 14
15: 080493a8 0 SECTION LOCAL DEFAULT 15
16: 080493c0 0 SECTION LOCAL DEFAULT 16
17: 0804943c 0 SECTION LOCAL DEFAULT 17
18: 0804a634 0 SECTION LOCAL DEFAULT 18
19: 0804a638 0 SECTION LOCAL DEFAULT 19
20: 0804a63c 0 SECTION LOCAL DEFAULT 20
21: 0804a640 0 SECTION LOCAL DEFAULT 21
22: 0804a728 0 SECTION LOCAL DEFAULT 22
23: 0804a72c 0 SECTION LOCAL DEFAULT 23
24: 0804a744 0 SECTION LOCAL DEFAULT 24
25: 0804a74c 0 SECTION LOCAL DEFAULT 25
26: 00000000 0 SECTION LOCAL DEFAULT 26
27: 00000000 0 SECTION LOCAL DEFAULT 27
28: 00000000 0 SECTION LOCAL DEFAULT 28
29: 00000000 0 SECTION LOCAL DEFAULT 29
30: 00000000 0 SECTION LOCAL DEFAULT 30
31: 00000000 0 SECTION LOCAL DEFAULT 31
32: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
33: 0804a63c 0 OBJECT LOCAL DEFAULT 20 __JCR_LIST__
34: 08048340 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones
35: 08048370 0 FUNC LOCAL DEFAULT 13 register_tm_clones
36: 080483b0 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux
37: 0804a74c 1 OBJECT LOCAL DEFAULT 25 completed.6279
38: 0804a638 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fin
39: 080483d0 0 FUNC LOCAL DEFAULT 13 frame_dummy
40: 0804a634 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_
41: 00000000 0 FILE LOCAL DEFAULT ABS hello.c
42: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
43: 08049630 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__
44: 0804a63c 0 OBJECT LOCAL DEFAULT 20 __JCR_END__
45: 00000000 0 FILE LOCAL DEFAULT ABS
46: 0804a638 0 NOTYPE LOCAL DEFAULT 18 __init_array_end
47: 0804a640 0 OBJECT LOCAL DEFAULT 21 _DYNAMIC
48: 0804a634 0 NOTYPE LOCAL DEFAULT 18 __init_array_start
49: 0804a72c 0 OBJECT LOCAL DEFAULT 23 _GLOBAL_OFFSET_TABLE_
50: 08049390 2 FUNC GLOBAL DEFAULT 13 __libc_csu_fini
51: 0804907c 47 FUNC GLOBAL DEFAULT 13 clcd_print
52: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab
53: 08048330 4 FUNC GLOBAL HIDDEN 13 __x86.get_pc_thunk.bx
54: 0804a744 0 NOTYPE WEAK DEFAULT 24 data_start
55: 00000000 0 FUNC GLOBAL DEFAULT UND printf@@GLIBC_2.0
56: 0804a74c 0 NOTYPE GLOBAL DEFAULT 24 _edata
57: 0804912c 80 FUNC GLOBAL DEFAULT 13 get_clock_string
58: 08049394 0 FUNC GLOBAL DEFAULT 14 _fini
59: 08048881 2043 FUNC GLOBAL DEFAULT 13 clcd_init
60: 0804a744 0 NOTYPE GLOBAL DEFAULT 24 __data_start
61: 0804878b 246 FUNC GLOBAL DEFAULT 13 write_data
62: 080490ab 129 FUNC GLOBAL DEFAULT 13 to_string
63: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
64: 0804a748 0 OBJECT GLOBAL HIDDEN 24 __dso_handle
65: 08048416 27 FUNC GLOBAL DEFAULT 13 _delay_ms
66: 080493ac 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used
67: 08048552 268 FUNC GLOBAL DEFAULT 13 display_clear
68: 080483fb 27 FUNC GLOBAL DEFAULT 13 _delay_us
69: 08048431 289 FUNC GLOBAL DEFAULT 13 display_onoff
70: 00000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@@GLIBC_
71: 0804865e 301 FUNC GLOBAL DEFAULT 13 entry_mode_set
72: 0804a74d 1 OBJECT GLOBAL DEFAULT 25 PORTB
73: 08049320 97 FUNC GLOBAL DEFAULT 13 __libc_csu_init
74: 0804a750 0 NOTYPE GLOBAL DEFAULT 25 _end
75: 08048300 0 FUNC GLOBAL DEFAULT 13 _start
76: 080493a8 4 OBJECT GLOBAL DEFAULT 15 _fp_hw
77: 0804a74e 1 OBJECT GLOBAL DEFAULT 25 DDRB
78: 0804a74c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start
79: 0804917c 410 FUNC GLOBAL DEFAULT 13 main
80: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
81: 0804a74c 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__
82: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable
83: 08048294 0 FUNC GLOBAL DEFAULT 11 _init
takk@deb83:~$
関数一覧を抽出するには、FUNCでフィルタリングすれば良いです。
takk@deb83:~$ readelf -s a.out | awk '/FUNC/{print $8}'
printf@GLIBC_2.0
__libc_start_main@GLIBC_2.0
deregister_tm_clones
register_tm_clones
__do_global_dtors_aux
frame_dummy
__libc_csu_fini
clcd_print
__x86.get_pc_thunk.bx
printf@@GLIBC_2.0
get_clock_string
_fini
clcd_init
write_data
to_string
_delay_ms
display_clear
_delay_us
display_onoff
__libc_start_main@@GLIBC_
entry_mode_set
__libc_csu_init
_start
main
_init
takk@deb83:~$



コメント