corvvs / num

A program behaves like the nm on Linux.
0 stars 0 forks source link

文字列テーブルセクションがNUL-terminedではない #39

Closed corvvs closed 1 year ago

corvvs commented 1 year ago

Summary

シンボル名文字列テーブル

最後のNULを削るとこうなる:

root@9a2a0b2a4feb:/home/elfs# nm none-ill-strtable 
0000000000000278 r (null)
0000000000000278 r (null)
0000000000000600 t (null)
0000000000000784 r (null)
0000000000000730 r (null)
0000000000000634 t (null)
0000000000000634 t (null)
0000000000000580 t (null)
000000000000071c t (null)
0000000000000590 t (null)
0000000000000728 t (null)
0000000000000650 t (null)
0000000000000650 t (null)
0000000000000680 t (null)
0000000000011008 d (null)
00000000000006c0 t (null)
0000000000011010 b (null)
0000000000010da0 d (null)
0000000000010da0 d (null)
0000000000000710 t (null)
0000000000010d98 d (null)
0000000000010d98 d (null)
0000000000000798 r (null)
0000000000011010 b (null)
0000000000000714 t (null)
00000000000007f8 r (null)
000000000000080c r (null)
000000000000080c r (null)
0000000000010da8 a (null)
0000000000000734 r (null)
0000000000010fd0 a (null)
00000000000005a0 t (null)
                 U (null)
                 w (null)
0000000000011000 W (null)
0000000000011010 B (null)
                 w (null)
0000000000011018 B (null)
0000000000011010 D (null)
000000000000071c T (null)
0000000000011018 B (null)
0000000000011000 D (null)
                 w (null)
0000000000011008 D (null)
                 U (null)
0000000000000730 R (null)
0000000000011018 B (null)
0000000000000600 T (null)
0000000000011018 B (null)
0000000000011010 B (null)
0000000000000714 T (null)
0000000000011010 D (null)
                 w (null)
0000000000000580 T (null)
root@9a2a0b2a4feb:/home/elfs# 

セクション名文字列テーブルにはノータッチなので

root@9a2a0b2a4feb:/home/elfs# diff -u <(hexdump -C none) <(hexdump -C none-ill-strtable)
--- /dev/fd/63  2023-05-09 03:28:30.183230013 +0000
+++ /dev/fd/62  2023-05-09 03:28:30.184230013 +0000
@@ -330,7 +330,7 @@
 00001a30  5f 62 73 73 5f 73 74 61  72 74 00 6d 61 69 6e 00  |_bss_start.main.|
 00001a40  5f 5f 54 4d 43 5f 45 4e  44 5f 5f 00 5f 49 54 4d  |__TMC_END__._ITM|
 00001a50  5f 72 65 67 69 73 74 65  72 54 4d 43 6c 6f 6e 65  |_registerTMClone|
-00001a60  54 61 62 6c 65 00 5f 69  6e 69 74 00 00 2e 73 79  |Table._init...sy|
+00001a60  54 61 62 6c 65 00 5f 69  6e 69 74 01 00 2e 73 79  |Table._init...sy|
 00001a70  6d 74 61 62 00 2e 73 74  72 74 61 62 00 2e 73 68  |mtab..strtab..sh|
 00001a80  73 74 72 74 61 62 00 2e  69 6e 74 65 72 70 00 2e  |strtab..interp..|
 00001a90  6e 6f 74 65 2e 67 6e 75  2e 62 75 69 6c 64 2d 69  |note.gnu.build-i|
@@ -457,5 +457,5 @@
 00002230  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 00002240  6c 1a 00 00 00 00 00 00  fa 00 00 00 00 00 00 00  |l...............|
 00002250  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
-00002260  00 00 00 00 00 00 00 00                           |........|
-00002268
+00002260  00 00 00 00 00 00 00 00  0a                       |.........|
+00002269
root@9a2a0b2a4feb:/home/elfs# nm -a none-ill-strtable 
0000000000000000 a 
0000000000000278 r (null)
0000000000000278 r (null)
0000000000000600 t (null)
0000000000000784 r (null)
0000000000000730 r (null)
0000000000000000 a (null)
0000000000000634 t (null)
0000000000000634 t (null)
0000000000000580 t (null)
000000000000071c t (null)
0000000000000000 a (null)
0000000000000590 t (null)
0000000000000728 t (null)
0000000000000000 a (null)
0000000000000650 t (null)
0000000000000650 t (null)
0000000000000680 t (null)
0000000000011008 d (null)
00000000000006c0 t (null)
0000000000011010 b (null)
0000000000010da0 d (null)
0000000000010da0 d (null)
0000000000000710 t (null)
0000000000010d98 d (null)
0000000000010d98 d (null)
0000000000000798 r (null)
0000000000011010 b (null)
0000000000000000 a (null)
0000000000000714 t (null)
00000000000007f8 r (null)
0000000000000000 a (null)
000000000000080c r (null)
000000000000080c r (null)
0000000000010da8 a (null)
0000000000000734 r (null)
0000000000010fd0 a (null)
00000000000005a0 t (null)
                 U (null)
                 w (null)
0000000000011000 W (null)
0000000000011010 B (null)
                 w (null)
0000000000011018 B (null)
0000000000011010 D (null)
000000000000071c T (null)
0000000000011018 B (null)
0000000000011000 D (null)
                 w (null)
0000000000011008 D (null)
                 U (null)
0000000000000730 R (null)
0000000000011018 B (null)
0000000000000600 T (null)
0000000000011018 B (null)
0000000000011010 B (null)
0000000000000714 T (null)
0000000000011010 D (null)
                 w (null)
0000000000000580 T (null)
0000000000011010 b .bss
0000000000000000 n .comment
0000000000011000 d .data
0000000000010da8 d .dynamic
0000000000000390 r .dynstr
00000000000002b8 r .dynsym
0000000000000770 r .eh_frame
0000000000000734 r .eh_frame_hdr
000000000000071c t .fini
0000000000010da0 d .fini_array
0000000000000298 r .gnu.hash
000000000000041e r .gnu.version
0000000000000430 r .gnu.version_r
0000000000010f98 d .got
0000000000000580 t .init
0000000000010d98 d .init_array
0000000000000238 r .interp
0000000000000278 r .note.ABI-tag
0000000000000254 r .note.gnu.build-id
00000000000005a0 t .plt
0000000000000460 r .rela.dyn
0000000000000520 r .rela.plt
0000000000000730 r .rodata
0000000000000600 t .text
0000000000000000 a Scrt1.o
root@9a2a0b2a4feb:/home/elfs# 

セクション名文字列テーブル

こっちは最後のNULを削るとエラーになる。

root@9a2a0b2a4feb:/home/elfs# diff -u <(hexdump -C none) <(hexdump -C none-ill-strtable)
--- /dev/fd/63  2023-05-09 03:27:25.288681011 +0000
+++ /dev/fd/62  2023-05-09 03:27:25.289681011 +0000
@@ -346,7 +346,7 @@
 00001b30  74 5f 61 72 72 61 79 00  2e 66 69 6e 69 5f 61 72  |t_array..fini_ar|
 00001b40  72 61 79 00 2e 64 79 6e  61 6d 69 63 00 2e 67 6f  |ray..dynamic..go|
 00001b50  74 00 2e 64 61 74 61 00  2e 62 73 73 00 2e 63 6f  |t..data..bss..co|
-00001b60  6d 6d 65 6e 74 00 00 00  00 00 00 00 00 00 00 00  |mment...........|
+00001b60  6d 6d 65 6e 74 01 00 00  00 00 00 00 00 00 00 00  |mment...........|
 00001b70  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 *
 00001ba0  00 00 00 00 00 00 00 00  1b 00 00 00 01 00 00 00  |................|
@@ -457,5 +457,5 @@
 00002230  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 00002240  6c 1a 00 00 00 00 00 00  fa 00 00 00 00 00 00 00  |l...............|
 00002250  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
-00002260  00 00 00 00 00 00 00 00                           |........|
-00002268
+00002260  00 00 00 00 00 00 00 00  0a                       |.........|
+00002269
root@9a2a0b2a4feb:/home/elfs# nm -a none-ill-strtable 
nm: none-ill-strtable: file format not recognized
root@9a2a0b2a4feb:/home/elfs# 

(0aがついてるのはvimのせいです)

corvvs commented 1 year ago

セクション名のほうやってねえや