Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gcc ls.s -o ls-out -l selinux -nostartfiles -O0 does not products exactly the same code signature as the original file #59

Open
gogo2464 opened this issue Mar 22, 2023 · 10 comments

Comments

@gogo2464
Copy link
Contributor

sudo apt install selinux-utils -y libselinux1-dev
gcc -nostartfiles ls.s  -o ls-out -l selinux -O0
./ls-out

diff ls ls-out -q
Files ls and ls-out differ

for more informations with radiff2, fell free to install radare2 with:
ideally:

git clone https://github.com/radareorg/radare2
cd radare2
sh sys/install.sh


#or if you can not compile, install radare2 with `sudo apt install radare2;`

$ radiff2 -U ls ls-out
File size differs 142144 vs 159320
Binary files .a and .b differ

$ radiff2 -u ls ls-out

+0x00020808:8606410e38830744 "\x86\x06A\x0e8\x83\aD\x0e@\x02\x97\n\x0e8A\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\bA\vT\n\x0e8F\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\bE\v"
-0x00020811:18420e10420e08450b000034000000a82c00002c65ffff9a00000000460e108c02 "\x18B\x0e\x10B\x0e\bE\v"
+0x00020811:4002970a0e38410e30410e28420e20420e18420e10420e08410b540a0e38460e30 "@\x02\x97\n\x0e8A\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\bA\vT\n\x0e8F\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\bE\v"
-0x00020834:188603410e208304025f0a "\x18\x86\x03A\x0e \x83\x04\x02_\n\x0e\x18A\x0e\x10B\x0e\bF\vf\x0e\x18A\x0e\x10B\x0e\b"
+0x00020834:28420e20420e18420e1042 "(B\x0e B\x0e\x18B\x0e\x10B\x0e\bE\v"
-0x00020840:18410e10420e08460b660e18410e10420e08 "\x18A\x0e\x10B\x0e\bF\vf\x0e\x18A\x0e\x10B\x0e\b"
+0x00020840:08450b004c000000e0290000f466ffffb500 "\bE\v"
-0x00020854:60000000e02c00009465ffff5501000000420e108f02420e188e03420e208d04420e288c05410e30860641 "" -0x00020880:388307440e4002970a0e38410e30410e28420e20420e18420e10420e08410b540a0e38460e30410e28420e20420e18420e10420e08450b "8\x83\aD\x0e@\x02\x97\n\x0e8A\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\bA\vT\n\x0e8F\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\bE\v" +0x00020880:18410e10420e08450b490e18410e10420e08000010000000302a00006467ffff110000000000000058000000442a00007067ffffa60000 "\x18A\x0e\x10B\x0e\bE\vI\x0e\x18A\x0e\x10B\x0e\b" -0x000208b8:4c000000442d00009066ffffb500000000420e108c02410e188603410e20830402630a "L" -0x000208dc:1841 "\x18A\x0e\x10B\x0e\bF\vZ\n\x0e\x18A\x0e\x10B\x0e\bC\vP\n\x0e\x18A\x0e\x10B\x0e\bE\vI\x0e\x18A\x0e\x10B\x0e\b" +0x000208dc:1042 "\x10B\x0e\bC\vR\n\x0e(C\x0e B\x0e\x18B\x0e\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" -0x000208df:10420e08460b5a0a "\x10B\x0e\bF\vZ\n\x0e\x18A\x0e\x10B\x0e\bC\vP\n\x0e\x18A\x0e\x10B\x0e\bE\vI\x0e\x18A\x0e\x10B\x0e\b" +0x000208df:08430b520a0e2843 "\bC\vR\n\x0e(C\x0e B\x0e\x18B\x0e\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" -0x000208e8:1841 "\x18A\x0e\x10B\x0e\bC\vP\n\x0e\x18A\x0e\x10B\x0e\bE\vI\x0e\x18A\x0e\x10B\x0e\b" +0x000208e8:2042 " B\x0e\x18B\x0e\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" -0x000208eb:10 "\x10B\x0e\bC\vP\n\x0e\x18A\x0e\x10B\x0e\bE\vI\x0e\x18A\x0e\x10B\x0e\b" +0x000208eb:18 "\x18B\x0e\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" -0x000208ee:08430b500a0e18410e10420e08450b49 "\bC\vP\n\x0e\x18A\x0e\x10B\x0e\bE\vI\x0e\x18A\x0e\x10B\x0e\b" +0x000208ee:10420e08450b540e28470e20420e1842 "\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" -0x000208ff:1841 "\x18A\x0e\x10B\x0e\b" +0x000208ff:1042 "\x10B\x0e\b" -0x00020902:10420e08 "\x10B\x0e\b" +0x00020902:08003000 "\b" -0x00020908:1000 "\x10" +0x00020908:a02a "\xa0*" -0x0002090c:942d00000067ffff110000000000000058000000a82d00000c67ffffa600000000460e108e0245 "\x94-" +0x0002090c:c467ffff4101000000460e108d02420e188c03410e208604470e70028b0a0e20410e18420e1042 "\xc4g\xff\xffA\x01" -0x00020934:188d03420e208c04410e288605470e307e0a0e28440e20420e18420e10420e08430b520a0e28430e2042 "\x18\x8d\x03B\x0e \x8c\x04A\x0e(\x86\x05G\x0e0~\n\x0e(D\x0e B\x0e\x18B\x0e\x10B\x0e\bC\vR\n\x0e(C\x0e B\x0e\x18B\x0e\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" +0x00020934:08480b0010000000d42a0000e068ffff330000000000000028000000e82a00000c69ffff650000000046 "\bH\v" -0x0002095f:18420e10420e08450b540e28470e20420e18420e10420e080034 "\x18B\x0e\x10B\x0e\bE\vT\x0e(G\x0e B\x0e\x18B\x0e\x10B\x0e\b" +0x0002095f:108c02410e188603440e208304740a0e18410e10420e08460b18 "\x10\x8c\x02A\x0e\x18\x86\x03D\x0e \x83\x04t\n\x0e\x18A\x0e\x10B\x0e\bF\v\x18" -0x0002097c:042e "\x04." +0x0002097c:142b "\x14+" -0x00020980:6067 "g\xff\xffA\x01"
+0x00020980:5069 "Pi\xff\xff\x1c"
-0x00020984:4101 "A\x01"
+0x00020984:1c00 "\x1c"
-0x00020989:46 "F\x0e\x10\x8d\x02B\x0e\x18\x8c\x03A\x0e \x86\x04G\x0ep\x02\x8b\n\x0e A\x0e\x18B\x0e\x10B\x0e\bH\v"
+0x00020989:48 "H\x0e\x10N\n\x0e\bA\v"
-0x0002098c:8d02420e188c03410e208604470e70028b0a0e20410e18420e10420e08480b "\x8d\x02B\x0e\x18\x8c\x03A\x0e \x86\x04G\x0ep\x02\x8b\n\x0e A\x0e\x18B\x0e\x10B\x0e\bH\v"
+0x0002098c:4e0a0e08410b000010000000302b00005469ffff37000000000000001c0000 "N\n\x0e\bA\v"
+0x000209ac:442b "D+"
-0x000209b0:14000000 "\x14"
+0x000209b0:8069ffff "\x80i\xff\xff<"
-0x000209b5:2e "."
-0x000209b8:7868ffff330000000000000000 "xh\xff\xff3"
-0x000209c8:2c ","
+0x000209c8:34 "4"
-0x000209cc:542e "T."
+0x000209cc:642b "d+"
-0x000209d1:68 "h\xff\xffe"
+0x000209d1:69 "i\xff\xff\x8a"
-0x000209d4:65 "e"
+0x000209d4:8a "\x8a"
-0x000209e8:74 "t\n\x0e\x18A\x0e\x10B\x0e\bF\v"
+0x000209e8:7a "z\n\x0e\x18A\x0e\x10B\x0e\bH\v\n\x0e\x18A\x0e\x10B\x0e\bM\v\x1c" -0x000209f2:46 "F\v" +0x000209f2:48 "H\v\n\x0e\x18A\x0e\x10B\x0e\bM\v\x1c"
+0x000209f4:600a0e18410e10420e084d0b1c0000009c2b "\n\x0e\x18A\x0e\x10B\x0e\bM\v\x1c" +0x00020a08:f869ffff4800000000450e1086025e0a0e084d0b530e08 "\xf8i\xff\xffH" -0x00020a20:e068ffff3700 "\xe0h\xff\xff7" +0x00020a20:28000000bc2b "(" +0x00020a28:286affff73 "(j\xff\xffs" -0x00020a30:1c000000bc2e00000869ffff3c00000000480e10610a0e08470b4b0e08 "\x1c" -0x00020a50:3400 "4" +0x00020a50:e82b "\xe8+" -0x00020a54:dc2e00002869ffff8a00000000460e108c02410e188603440e2083047a0a "\xdc." +0x00020a54:7c6affff6500000000460e108f02490e188e03450e208d04450e288c0544 "|j\xff\xffe" -0x00020a73:18410e10420e08480b600a0e18410e10420e084d0b1c000000142f00008069ffff48 "\x18A\x0e\x10B\x0e\bH\v\n\x0e\x18A\x0e\x10B\x0e\bM\v\x1c"
+0x00020a73:308606480e388307470e406e0e38410e30410e28420e20420e18420e10420e080010 "0\x86\x06H\x0e8\x83\aG\x0e@n\x0e8A\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\b"
+0x00020a98:302c0000a46affff05000000000000 "0,"
-0x00020aa8:2c ","
+0x00020aa8:14 "\x14"
-0x00020aac:342f "4/"
+0x00020aac:442c "D,"
-0x00020ab0:b069 "\xb0i\xff\xffs"
+0x00020ab0:a06a "\xa0j\xff\xff\x12"
-0x00020ab4:73 "s"
+0x00020ab4:12 "\x12"
-0x00020ab9:450e108602470e204e0a0e10440e084a0b02440a0e "E\x0e\x10\x86\x02G\x0e N\n\x0e\x10D\x0e\bJ\v\x02D\n\x0e\x10A\x0e\bA\v"
-0x00020acf:410e08410b0000 "A\x0e\bA\v"
+0x00020acf:011b0c07089001 "\x01\a\b\x90\x01"
-0x00020ad8:44 "D"
+0x00020ad8:24 "$"
-0x00020adc:642f "d/"
+0x00020adc:1c00 "\x1c"
+0x00020ae0:4035fe "@5\xfe\xff\xb0\x06"
-0x00020ae4:6500 "e"
+0x00020ae4:b006 "\xb0\x06"
-0x00020ae9:460e108f02490e188e03450e208d04450e288c05440e308606480e388307470e406e0e38410e30410e28420e20420e18420e10420e08 "F\x0e\x10\x8f\x02I\x0e\x18\x8e\x03E\x0e \x8d\x04E\x0e(\x8c\x05D\x0e0\x86\x06H\x0e8\x83\aG\x0e@n\x0e8A\x0e0A\x0e(B\x0e B\x0e\x18B\x0e\x10B\x0e\b"
+0x00020ae9:0e10460e184a0f0b770880003f1a3a2a332422000000001400000044000000c83bfeff300000000000000000000000100000005c0000 "\x0e\x10F\x0e\x18J\x0f\vw\b\x80"
-0x00020b20:14000000ac2f "\x14"
+0x00020b20:e03bfeffa006 "\xe0;\xfe\xff\xa0\x06"
-0x00020b28:286affff05 "(j\xff\xff\x05"
-0x00020b38:10 "\x10"
-0x00020b3c:c42f "\xc4/"
-0x00020b40:206affff12 " j\xff\xff\x12"
-0x00021010:b068 "\xb0h"
-0x00021018:7068 "ph"
-0x00021020:4073 "@s"
-0x00021028:a078 "\xa0x"
-0x00021030:5073 "Ps"
+0x00021030:b068 "\xb0h"
-0x00021038:6079 "y" +0x00021038:7068 "ph" -0x00021040:f06e "\xf0n" +0x00021040:3b73 ";s" +0x00021048:9b78 "\x9bx" +0x00021050:4b73 "Ks" -0x00021058:d0 "\xd0y" +0x00021058:5b "[y" -0x00021060:50c8 "P\xc8" +0x00021060:eb6e "\xebn" -0x00021068:30c9 "0\xc9" +0x00021068:fb78 "\xfbx" -0x00021070:c0c8 "\xc0\xc8" +0x00021070:fb6e "\xfbn" -0x00021078:f0c9 "\xf0\xc9" +0x00021078:cb79 "\xcby" -0x00021080:b0ca "\xb0\xca" +0x00021080:46c8 "F\xc8" -0x00021088:b0cb "\xb0\xcb" +0x00021088:26c9 "&\xc9" -0x00021090:30cb "0\xcb" +0x00021090:b6c8 "\xb6\xc8" -0x00021098:d07c "\xd0|" +0x00021098:e6c9 "\xe6\xc9" -0x000210a0:b0a5 "\xb0\xa5" +0x000210a0:a6ca "\xa6\xca" -0x000210a8:f0a5 "\xf0\xa5" +0x000210a8:a6cb "\xa6\xcb" -0x000210b0:70a7 "p\xa7" +0x000210b0:26cb "&\xcb" -0x000210b8:f0a6 "\xf0\xa6" +0x000210b8:cb7c "\xcb|" -0x000210c0:6078 "x"
+0x000210c0:aaa5 "\xaa\xa5"
-0x000210c8:70a6 "p\xa6"
+0x000210c8:eaa5 "\xea\xa5"
-0x000210d0:b0 "\xb0\xa7"
+0x000210d0:6a "j\xa7"
-0x000210d8:30a5 "0\xa5"
+0x000210d8:eaa6 "\xea\xa6"
-0x000210e0:8073 "\x80s"
+0x000210e0:5b78 "[x"
-0x000210e8:707c "p|"
+0x000210e8:6aa6 "j\xa6"
-0x000210f0:6073 "s" +0x000210f0:aaa7 "\xaa\xa7" +0x000210f8:2aa5 "*\xa5" +0x00021100:7b73 "{s" +0x00021108:6b7c "k|" +0x00021110:5b73 "[s" +0x00021118:fb7b "\xfb{" -0x00021120:b0c0 "\xb0\xc0" -0x00021128:10c2 "\x10\xc2" -0x00021130:f0c0 "\xf0\xc0" -0x00021138:20c3 " \xc3" -0x00021140:d0c4 "\xd0\xc4" +0x00021140:a6c0 "\xa6\xc0" -0x00021148:80a8 "\x80\xa8" +0x00021148:06c2 "\x06\xc2" -0x00021150:10c5 "\x10\xc5" +0x00021150:e6c0 "\xe6\xc0" -0x00021158:20c7 " \xc7" +0x00021158:16c3 "\x16\xc3" -0x00021160:60c0 "\xc0"
+0x00021160:c6c4 "\xc6\xc4"
-0x00021168:90c2 "\x90\xc2"
+0x00021168:7aa8 "z\xa8"
-0x00021170:c0bf "\xc0\xbf"
+0x00021170:06c5 "\x06\xc5"
-0x00021178:b0c3 "\xb0\xc3"
+0x00021178:16c7 "\x16\xc7"
-0x00021180:60c5 "\xc5" +0x00021180:56c0 "V\xc0" -0x00021188:f0a7 "\xf0\xa7" +0x00021188:86c2 "\x86\xc2" -0x00021190:40c6 "@\xc6" +0x00021190:b6bf "\xb6\xbf" -0x00021198:b0c7 "\xb0\xc7" +0x00021198:a6c3 "\xa6\xc3" -0x000211a0:40c1 "@\xc1" +0x000211a0:56c5 "V\xc5" -0x000211a8:50c4 "P\xc4" +0x000211a8:eaa7 "\xea\xa7" -0x000211b0:10c0 "\x10\xc0" +0x000211b0:36c6 "6\xc6" -0x000211b8:80c1 "\x80\xc1" +0x000211b8:a6c7 "\xa6\xc7" +0x000211c0:36c1 "6\xc1" -0x000211c8:807b "\x80{" +0x000211c8:46c4 "F\xc4" -0x000211d0:b0c5 "\xb0\xc5" +0x000211d0:06c0 "\x06\xc0" -0x000211d8:90c6 "\x90\xc6" +0x000211d8:76c1 "v\xc1" -0x000211e0:88c201 "\x88\xc2\x01" +0x000211e0:f6c500 "\xf6\xc5" -0x000211e8:129b01 "\x12\x9b\x01" +0x000211e8:7b7b00 "{{" -0x000211f0:169b01 "\x16\x9b\x01" +0x000211f0:a6c500 "\xa6\xc5" -0x000211f8:1c9b01 "\x1c\x9b\x01" +0x000211f8:86c600 "\x86\xc6" -0x00021200:229b "\"\x9b\x01" +0x00021200:88c2 "\x88\xc2\x01" -0x00021208:25 "%\x9b\x01" +0x00021208:12 "\x12\x9b\x01" -0x00021210:2a "*\x9b\x01" +0x00021210:16 "\x16\x9b\x01" -0x00021218:32 "2\x9b\x01" +0x00021218:1c "\x1c\x9b\x01" -0x00021220:2f "/\x9b\x01" +0x00021220:22 "\"\x9b\x01" +0x00021228:259b01 "%\x9b\x01" +0x00021230:2a9b01 "*\x9b\x01" +0x00021238:329b01 "2\x9b\x01" -0x00021240:36 "6\x9b\x01" +0x00021240:2f "/\x9b\x01" -0x00021248:bcbe01 "\xbc\xbe\x01" -0x00021250:3c9b01 "<\x9b\x01" -0x00021258:409b01 "@\x9b\x01" -0x00021260:46 "F\x9b\x01" +0x00021260:36 "6\x9b\x01" +0x00021268:bcbe01 "\xbc\xbe\x01" +0x00021270:3c9b01 "<\x9b\x01" +0x00021278:409b01 "@\x9b\x01" -0x00021280:25 "%\x9b\x01" +0x00021280:46 "F\x9b\x01" -0x00021288:b19901 "\xb1\x99\x01" -0x00021290:a39901 "\xa3\x99\x01" -0x00021298:4d9b01 "M\x9b\x01" -0x000212a0:cf97 "\xcf\x97\x01" +0x000212a0:259b "%\x9b\x01" +0x000212a8:b19901 "\xb1\x99\x01" +0x000212b0:a39901 "\xa3\x99\x01" +0x000212b8:4d9b01 "M\x9b\x01" -0x000212c0:579b "W\x9b\x01" +0x000212c0:cf97 "\xcf\x97\x01" -0x000212c8:5f9b01 "_\x9b\x01" -0x000212d0:649b01 "d\x9b\x01" -0x000212d8:6b9b01 "k\x9b\x01" -0x000212e0:76 "v\x9b\x01" +0x000212e0:57 "W\x9b\x01" -0x000212e8:7d "}\x9b\x01" +0x000212e8:5f "_\x9b\x01" -0x000212f0:86 "\x86\x9b\x01" +0x000212f0:64 "d\x9b\x01" +0x000212f8:6b9b01 "k\x9b\x01" -0x00021300:209c " \x9c\x01" +0x00021300:769b "v\x9b\x01" +0x00021308:7d9b01 "}\x9b\x01" +0x00021310:869b01 "\x86\x9b\x01" -0x00021318:61 "a" -0x00021320:74c2 "t\xc2\x01" +0x00021320:209c " \x9c\x01" -0x00021338:62 "b" +0x00021338:61 "a" -0x00021340:949b "\x94\x9b\x01" +0x00021340:74c2 "t\xc2\x01" -0x00021358:64 "d" +0x00021358:62 "b" -0x00021360:9e "\x9e\x9b\x01" +0x00021360:94 "\x94\x9b\x01" -0x00021378:44 "D" +0x00021378:64 "d" -0x00021380:a4 "\xa4\x9b\x01" +0x00021380:9e "\x9e\x9b\x01" -0x00021398:86 "\x86" +0x00021398:44 "D" -0x000213a0:ae "\xae\x9b\x01" +0x000213a0:a4 "\xa4\x9b\x01" -0x000213b8:87 "\x87" +0x000213b8:86 "\x86" -0x000213c0:c6 "\xc6\x9b\x01" +0x000213c0:ae "\xae\x9b\x01" -0x000213d8:68 "h" +0x000213d8:87 "\x87" -0x000213e0:d5 "\xd5\x9b\x01" +0x000213e0:c6 "\xc6\x9b\x01" -0x000213f8:69 "i" +0x000213f8:68 "h" -0x00021400:db "\xdb\x9b\x01" +0x00021400:d5 "\xd5\x9b\x01" -0x00021418:6b "k" +0x00021418:69 "i" -0x00021420:e5 "\xe5\x9b\x01" +0x00021420:db "\xdb\x9b\x01" -0x00021438:6e "n" +0x00021438:6b "k" -0x00021440:f5 "\xf5\x9b\x01" +0x00021440:e5 "\xe5\x9b\x01" -0x00021458:47 "G" +0x00021458:6e "n" -0x00021460:fe "\xfe\x9b\x01" +0x00021460:f5 "\xf5\x9b\x01" -0x00021478:71 "q" +0x00021478:47 "G" -0x00021480:119c "\x11\x9c\x01" +0x00021480:fe9b "\xfe\x9b\x01" -0x00021498:72 "r" +0x00021498:71 "q" -0x000214a0:a399 "\xa3\x99\x01" +0x000214a0:119c "\x11\x9c\x01" -0x000214b8:73 "s" +0x000214b8:72 "r" -0x000214c0:86 "\x86\x99\x01" +0x000214c0:a3 "\xa3\x99\x01" -0x000214c8:01 "\x01" -0x000214d8:77 "w" +0x000214d8:73 "s" -0x000214e0:199c "\x19\x9c\x01" +0x000214e0:8699 "\x86\x99\x01" +0x000214e8:01 "\x01" -0x000214f8:41 "A" +0x000214f8:77 "w" -0x00021500:24 "$\x9c\x01" +0x00021500:19 "\x19\x9c\x01" -0x00021518:42 "B" +0x00021518:41 "A" -0x00021520:33 "3\x9c\x01" +0x00021520:24 "$\x9c\x01" -0x00021538:46 "F" +0x00021538:42 "B" -0x00021540:3c "<\x9c\x01" +0x00021540:33 "3\x9c\x01" -0x00021558:84 "\x84" +0x00021558:46 "F" -0x00021560:46 "F\x9c\x01" +0x00021560:3c "<\x9c\x01" -0x00021578:8d "\x8d" +0x00021578:84 "\x84" -0x00021580:49 "I\x9c\x01" +0x00021580:46 "F\x9c\x01" -0x00021598:48 "H" +0x00021598:8d "\x8d" -0x000215a0:18be "\x18\xbe\x01" +0x000215a0:499c "I\x9c\x01" -0x000215b8:83 "\x83" +0x000215b8:48 "H" -0x000215c0:629c "b\x9c\x01" +0x000215c0:18be "\x18\xbe\x01" -0x000215c8:01 "\x01" -0x000215d8:88 "\x88" +0x000215d8:83 "\x83" -0x000215e0:67 "g\x9c\x01" +0x000215e0:62 "b\x9c\x01" -0x000215f8:49 "I" +0x000215f8:88 "\x88" -0x00021600:d599 "\xd5\x99\x01" +0x00021600:679c "g\x9c\x01" -0x00021618:8a "\x8a" +0x00021618:49 "I" -0x00021620:6e9c "n\x9c\x01" +0x00021620:d599 "\xd5\x99\x01" +0x00021628:01 "\x01" -0x00021638:4c "L" +0x00021638:8a "\x8a" -0x00021640:7a "z\x9c\x01" +0x00021640:6e "n\x9c\x01" -0x00021658:4e "N" +0x00021658:4c "L" -0x00021660:82 "\x82\x9c\x01" +0x00021660:7a "z\x9c\x01" -0x00021678:51 "Q" +0x00021678:4e "N" -0x00021680:e799 "\xe7\x99\x01" +0x00021680:829c "\x82\x9c\x01" -0x00021688:01 "\x01" -0x00021698:8b "\x8b" +0x00021698:51 "Q" -0x000216a0:8d9c "\x8d\x9c\x01" +0x000216a0:e799 "\xe7\x99\x01" +0x000216a8:01 "\x01" -0x000216b8:52 "R" +0x000216b8:8b "\x8b" -0x000216c0:b899 "\xb8\x99\x01" +0x000216c0:8d9c "\x8d\x9c\x01" -0x000216c8:01 "\x01" -0x000216d8:85 "\x85" +0x000216d8:52 "R" -0x000216e0:979c "\x97\x9c\x01" +0x000216e0:b899 "\xb8\x99\x01" +0x000216e8:01 "\x01" -0x000216f8:8c "\x8c" +0x000216f8:85 "\x85" -0x00021700:aa99 "\xaa\x99\x01" +0x00021700:979c "\x97\x9c\x01" -0x00021708:01 "\x01" -0x00021718:8e "\x8e" +0x00021718:8c "\x8c" -0x00021721:9c "\x9c\x01" +0x00021721:99 "\x99\x01" -0x00021738:54 "T" +0x00021738:8e "\x8e" -0x00021740:b199 "\xb1\x99\x01" +0x00021740:aa9c "\xaa\x9c\x01" -0x00021758:8f "\x8f" +0x00021758:54 "T" -0x00021760:b29c "\xb2\x9c\x01" +0x00021760:b199 "\xb1\x99\x01" -0x00021778:90 "\x90" +0x00021778:8f "\x8f" -0x00021780:c199 "\xc1\x99\x01" +0x00021780:b29c "\xb2\x9c\x01" -0x00021788:02 "\x02" +0x00021788:01 "\x01" -0x00021798:82 "\x82" +0x00021798:90 "\x90" -0x000217a0:c9 "\xc9\x99\x01" +0x000217a0:c1 "\xc1\x99\x01" -0x000217b8:89 "\x89" +0x000217b8:82 "\x82" -0x000217c0:bd9c "\xbd\x9c\x01" +0x000217c0:c999 "\xc9\x99\x01" -0x000217c8:01 "\x01" +0x000217c8:02 "\x02" -0x000217d8:81 "\x81" +0x000217d8:89 "\x89" -0x000217e0:c8 "\xc8\x9c\x01" +0x000217e0:bd "\xbd\x9c\x01" +0x000217e8:01 "\x01" -0x000217f8:5a "Z" +0x000217f8:81 "\x81" -0x00021800:d0 "\xd0\x9c\x01" +0x00021800:c8 "\xc8\x9c\x01" -0x00021818:80 "\x80" +0x00021818:5a "Z" -0x00021820:d7 "\xd7\x9c\x01" +0x00021820:d0 "\xd0\x9c\x01" -0x00021838:7effffff "~\xff\xff\xff" +0x00021838:80000000 "\x80" -0x00021840:cf97 "\xcf\x97\x01" +0x00021840:d79c "\xd7\x9c\x01" -0x00021858:7d "}\xff\xff\xff" +0x00021858:7e "~\xff\xff\xff" +0x00021860:cf9701 "\xcf\x97\x01" +0x00021878:7dffffff "}\xff\xff\xff" -0x00021880:469901 "F\x99\x01" -0x00021888:3b9d01 ";\x9d\x01" -0x00021890:3e9d01 ">\x9d\x01" -0x00021898:0e9c01 "\x0e\x9c\x01" -0x000218a0:229b "\"\x9b\x01" +0x000218a0:4699 "F\x99\x01" -0x000218a8:41 "A\x9d\x01" +0x000218a8:3b ";\x9d\x01" -0x000218b0:44 "D\x9d\x01" +0x000218b0:3e ">\x9d\x01" -0x000218b8:479d "G\x9d\x01" +0x000218b8:0e9c "\x0e\x9c\x01" -0x000218c0:4a9d "J\x9d\x01" +0x000218c0:229b "\"\x9b\x01" -0x000218c8:7d "}\x9d\x01" +0x000218c8:41 "A\x9d\x01" -0x000218d0:4d "M\x9d\x01" +0x000218d0:44 "D\x9d\x01" -0x000218d8:50 "P\x9d\x01" +0x000218d8:47 "G\x9d\x01" -0x000218e0:53 "S\x9d\x01" +0x000218e0:4a "J\x9d\x01" -0x000218e8:d49c "\xd4\x9c\x01" +0x000218e8:7d9d "}\x9d\x01" -0x000218f0:56 "V\x9d\x01" +0x000218f0:4d "M\x9d\x01" -0x000218f8:59 "Y\x9d\x01" +0x000218f8:50 "P\x9d\x01" -0x00021900:5c "\\\x9d\x01" +0x00021900:53 "S\x9d\x01" -0x00021908:5f9d "_\x9d\x01" +0x00021908:d49c "\xd4\x9c\x01" -0x00021910:c39b "\xc3\x9b\x01" +0x00021910:569d "V\x9d\x01" -0x00021918:62 "b\x9d\x01" +0x00021918:59 "Y\x9d\x01" -0x00021920:65 "e\x9d\x01" +0x00021920:5c "\\\x9d\x01" -0x00021928:68 "h\x9d\x01" +0x00021928:5f "_\x9d\x01" -0x00021930:6b9d "k\x9d\x01" +0x00021930:c39b "\xc3\x9b\x01" -0x00021938:6e "n\x9d\x01" +0x00021938:62 "b\x9d\x01" +0x00021940:659d01 "e\x9d\x01" +0x00021948:689d01 "h\x9d\x01" +0x00021950:6b9d01 "k\x9d\x01" +0x00021958:6e9d01 "n\x9d\x01" -0x00021960:259b01 "%\x9b\x01" -0x00021968:719d01 "q\x9d\x01" -0x00021970:3c9c01 "<\x9c\x01" -0x00021978:339c01 "3\x9c\x01" +0x00021980:259b01 "%\x9b\x01" +0x00021988:719d01 "q\x9d\x01" +0x00021990:3c9c01 "<\x9c\x01" +0x00021998:339c01 "3\x9c\x01" -0x000219a0:3d9901 "=\x99\x01" -0x000219a8:779d01 "w\x9d\x01" -0x000219b0:7c9d01 "|\x9d\x01" -0x000219b8:549901 "T\x99\x01" +0x000219c0:3d9901 "=\x99\x01" +0x000219c8:779d01 "w\x9d\x01" -0x000219d0:c69b "\xc6\x9b\x01" +0x000219d0:7c9d "|\x9d\x01" -0x000219d8:469c "F\x9c\x01" +0x000219d8:5499 "T\x99\x01" +0x000219f0:c69b01 "\xc6\x9b\x01" +0x000219f8:469c01 "F\x9c\x01" -0x00021a00:7a9c01 "z\x9c\x01" -0x00021a08:5bc201 "[\xc2\x01" -0x00021a10:61c201 "a\xc2\x01" -0x00021a18:6ec201 "n\xc2\x01" -0x00021a20:7bc2 "{\xc2\x01" +0x00021a20:7a9c "z\x9c\x01" -0x00021a28:eccc "\xec\xcc\x01" +0x00021a28:5bc2 "[\xc2\x01" -0x00021a30:8f "\x8f\xc2\x01" +0x00021a30:61 "a\xc2\x01" -0x00021a38:74 "t\xc2\x01" +0x00021a38:6e "n\xc2\x01" -0x00021a40:5499 "T\x99\x01" +0x00021a40:7bc2 "{\xc2\x01" -0x00021a48:97c2 "\x97\xc2\x01" +0x00021a48:eccc "\xec\xcc\x01" +0x00021a50:8fc201 "\x8f\xc2\x01" -0x00021a58:010000 "\x01" +0x00021a58:74c201 "t\xc2\x01" -0x00021a60:010000 "\x01" +0x00021a60:549901 "T\x99\x01" -0x00021a68:010000 "\x01" +0x00021a68:97c201 "\x97\xc2\x01" -0x00021a70:76 "v" -0x00021a78:0c "\f" +0x00021a78:01 "\x01" +0x00021a80:0100 "\x01" -0x00021a88:0d "\r" +0x00021a88:01 "\x01" -0x00021a90:747501 "tu\x01" +0x00021a90:ce0100 "\xce\x01" -0x00021aa0:10 "\x10 \x02" +0x00021aa0:30 "0 \x02" -0x00021ac0:18 "\x18 \x02" +0x00021ac0:38 "8 \x02" -0x00021ae0:a0 "\xa0\x03" +0x00021ae0:b8 "\xb8\x03" -0x00021af0:9011 "\x90\x11" +0x00021af0:8010 "\x80\x10" -0x00021b00:88 "\x88\x04" +0x00021b00:68 "h\x04" -0x00021b10:4c06 "L\x06" +0x00021b10:b405 "\xb4\x05" -0x00021b70:b82c "\xb8," +0x00021b70:f82a "\xf8*" -0x00021b80:6819 "h\x19" +0x00021b80:a817 "\xa8\x17" -0x00021bd0:f818 "\xf8\x18" +0x00021bd0:3817 "8\x17" -0x00021bf0:dc17 "\xdc\x17" +0x00021bf0:3416 "4\x16" -0x00021c58:58 "X*\x02" +0x00021c58:78 "x*\x02" -0x000221f0:d0 "\xd0\xd4" +0x000221f0:c6 "\xc6\xd4" -0x00022258:20 " D\x02" +0x00022258:80 "\x80D\x02" -0x00022260:60 "i\x01"
+0x00022260:41 "Ai\x01"
-0x00022268:31356164383336626533333339646563306532653661336336333765303865343861616362642e6465627567 "15ad836be3339dec0e2e6a3c637e08e48aacbd.debug"
-0x00022298:fb071937002e7368737472746162 "\xfb\a\x197"
-0x000222a7:2e696e74657270 ".interp"
-0x000222af:2e6e6f74652e676e752e70726f7065727479 ".note.gnu.property"
-0x000222c2:2e6e6f74652e676e752e6275696c642d6964 ".note.gnu.build-id"
-0x000222d5:2e6e6f74652e4142492d746167 ".note.ABI-tag"
-0x000222e3:2e676e752e68617368 ".gnu.hash"
-0x000222ed:2e64796e73796d ".dynsym"
-0x000222f5:2e64796e737472002e676e752e76657273696f6e ".dynstr"
-0x0002230a:2e676e752e76657273696f6e5f72002e72656c612e64796e ".gnu.version_r"
-0x00022323:2e72656c612e706c74002e696e6974 ".rela.plt"
-0x00022333:2e706c742e676f74 ".plt.got"
-0x0002233c:2e706c742e736563002e74657874 ".plt.sec"
-0x0002234b:2e66696e69 ".fini"
-0x00022351:2e726f64617461 ".rodata"
-0x00022359:2e65685f6672616d655f686472 ".eh_frame_hdr"
-0x00022367:2e65685f6672616d65 ".eh_frame"
-0x00022371:2e696e69745f6172726179 ".init_array"
-0x0002237d:2e66696e695f6172726179 ".fini_array"
-0x00022389:2e646174612e72656c2e726f ".data.rel.ro"
-0x00022396:2e64796e616d6963 ".dynamic"
-0x0002239f:2e64617461002e627373002e676e755f64656275676c696e6b ".data"
+0x000223bc:03 "\x03"
+0x000223be:0e "\x0e"
+0x000223c0:d046 "\xd0F"
+0x000223d4:03 "\x03"
+0x000223d6:0f "\x0f"
+0x000223d9:47 "G"
+0x000223ec:03 "\x03"
+0x000223ee:10 "\x10"
+0x000223f0:a04d "\xa0M"
-0x00022400:0b "\v"
-0x00022404:01 "\x01"
+0x00022404:03 "\x03"
+0x00022406:11 "\x11"
-0x00022408:020000 "\x02"
+0x00022408:647501 "du\x01"
-0x00022410:1803 "\x18\x03"
-0x00022418:1803 "\x18\x03"
+0x0002241c:03 "\x03"
+0x0002241e:12 "\x12"
-0x00022420:1c0000 "\x1c"
-0x00022430:01 "\x01"
+0x00022434:03 "\x03"
+0x00022436:13 "\x13"
+0x00022438:4cd201 "L\xd2\x01"
-0x00022440:13 "\x13"
-0x00022444:07 "\a"
-0x00022448:02 "\x02"
+0x0002244c:03 "\x03"
+0x0002244e:14 "\x14"
-0x00022450:380300 "8\x03"
+0x00022450:78db01 "x\xdb\x01"
-0x00022458:3803 "8\x03"
-0x00022460:20 " "
+0x00022464:03 "\x03"
+0x00022466:15 "\x15"
+0x00022468:302002 "0 \x02"
-0x00022470:08 "\b"
+0x0002247c:03 "\x03"
+0x0002247e:16 "\x16"
-0x00022480:260000 "&"
+0x00022480:382002 "8 \x02"
-0x00022484:07 "\a"
-0x00022488:02 "\x02"
-0x00022490:5803 "X\x03"
+0x00022494:03 "\x03"
+0x00022496:17 "\x17"
-0x00022498:580300 "X\x03"
+0x00022498:402002 "@ \x02"
-0x000224a0:24 "$"
+0x000224ac:03 "\x03"
+0x000224ae:18 "\x18"
-0x000224b0:040000 "\x04"
+0x000224b0:782a02 "x*\x02"
-0x000224c0:39 "9"
-0x000224c4:07 "\a"
+0x000224c4:03 "\x03"
+0x000224c6:19 "\x19"
-0x000224c8:020000 "\x02"
+0x000224c8:582c02 "X,\x02"
-0x000224d0:7c03 "|\x03"
-0x000224d8:7c03 "|\x03"
+0x000224dc:03 "\x03"
+0x000224de:1a "\x1a"
-0x000224e0:200000 " "
-0x000224f0:04 "\x04"
+0x000224f4:03 "\x03"
+0x000224f6:1b ""
+0x000224f8:803202 "\x802\x02"
-0x00022500:47 "G"
-0x00022504:f6ffff6f02 "\xf6\xff\xffo\x02"
+0x0002250c:04 "\x04"
+0x0002250e:f1ff0000 "\xf1\xff"
-0x00022518:a003 "\xa0\x03"
-0x00022520:e4 "\xe4"
+0x00022520:11 "\x11"
+0x00022524:02 "\x02"
+0x00022526:0c "\f"
-0x00022528:0600 "\x06"
-0x00022530:08 "\b"
+0x00022538:1a "\x1a"
+0x0002253c:02 "\x02"
+0x0002253e:10 "\x10"
-0x00022540:5100 "Q"
+0x00022540:a04d "\xa0M"
-0x00022544:0b "\v"
-0x00022548:02 "\x02"
-0x00022550:8804 "\x88\x04"
+0x00022550:2300 "#"
+0x00022554:02 "\x02"
+0x00022556:10 "\x10"
-0x00022558:8804 "\x88\x04"
+0x00022558:a54d "\xa5M"
-0x00022560:080d "\b\r"
-0x00022568:07 "\a"
+0x00022568:2c ","
-0x0002256c:01 "\x01"
+0x0002256c:02 "\x02"
+0x0002256e:10 "\x10"
-0x00022570:0800 "\b"
+0x00022570:aa4d "\xaaM"
-0x00022578:18 "\x18"
-0x00022580:59 "Y"
+0x00022580:35 "5"
-0x00022584:03 "\x03"
+0x00022584:02 "\x02"
+0x00022586:10 "\x10"
-0x00022588:0200 "\x02"
+0x00022588:af4d "\xafM"
-0x00022590:9011 "\x90\x11"
-0x00022598:9011 "\x90\x11"
+0x00022598:3e00 ">"
+0x0002259c:02 "\x02"
+0x0002259e:10 "\x10"
-0x000225a0:4c06 "L\x06"
+0x000225a0:b44d "\xb4M"
-0x000225b0:01 "\x01"
+0x000225b0:47 "G"
+0x000225b4:02 "\x02"
+0x000225b6:10 "\x10"
+0x000225b8:b94d "\xb9M"
-0x000225c0:61 "a"
-0x000225c4:ffffff6f02 "\xff\xff\xffo\x02"
+0x000225cc:02 "\x02"
+0x000225ce:10 "\x10"
-0x000225d0:dc17 "\xdc\x17"
+0x000225d0:be4d "\xbeM"
-0x000225d8:dc17 "\xdc\x17"
-0x000225e0:1601 "\x16\x01"
+0x000225e0:5900 "Y"
+0x000225e4:02 "\x02"
+0x000225e6:10 "\x10"
-0x000225e8:0600 "\x06"
+0x000225e8:c34d "\xc3M"
-0x000225f0:02 "\x02"
-0x000225f8:02 "\x02"
+0x000225f8:62 "b"
+0x000225fc:02 "\x02"
+0x000225fe:10 "\x10"
-0x00022600:6e00 "n"
+0x00022600:c84d "\xc8M"
-0x00022604:feffff6f02 "\xfe\xff\xffo\x02"
-0x00022610:f818 "\xf8\x18"
+0x00022610:6b00 "k"
+0x00022614:02 "\x02"
+0x00022616:10 "\x10"
-0x00022618:f818 "\xf8\x18"
+0x00022618:cd4d "\xcdM"
-0x00022620:70 "p"
-0x00022628:07 "\a"
+0x00022628:74 "t"
-0x0002262c:01 "\x01"
+0x0002262c:02 "\x02"
+0x0002262e:10 "\x10"
-0x00022630:0800 "\b"
+0x00022630:d24d "\xd2M"
-0x00022644:04 "\x04"
+0x00022644:02 "\x02"
+0x00022646:10 "\x10"
-0x00022648:0200 "\x02"
+0x00022648:d74d "\xd7M"
-0x00022650:6819 "h\x19"
-0x00022658:6819 "h\x19"
+0x00022658:8600 "\x86"
+0x0002265c:02 "\x02"
+0x0002265e:10 "\x10"
-0x00022660:5013 "P\x13"
+0x00022660:dc4d "\xdcM"
-0x00022668:06 "\x06"
-0x00022670:08 "\b"
+0x00022670:8f "\x8f"
+0x00022674:02 "\x02"
+0x00022676:10 "\x10"
-0x00022678:1800 "\x18"
+0x00022678:e14d "\xe1M"
-0x00022680:87 "\x87"
-0x00022684:04 "\x04"
-0x00022688:42 "B"
+0x00022688:98 "\x98"
+0x0002268c:02 "\x02"
+0x0002268e:10 "\x10"
-0x00022690:b82c "\xb8,"
+0x00022690:e64d "\xe6M"
-0x00022698:b82c "\xb8,"
-0x000226a0:f009 "\xf0\t"
+0x000226a0:a100 "\xa1"
+0x000226a4:02 "\x02"
+0x000226a6:10 "\x10"
-0x000226a8:0600 "\x06"
+0x000226a8:eb4d "\xebM"
-0x000226ac:19 "\x19"
-0x000226b0:08 "\b"
-0x000226b8:18 "\x18"
+0x000226b8:aa "\xaa"
+0x000226bc:02 "\x02"
+0x000226be:10 "\x10"
-0x000226c0:910000 "\x91"
+0x000226c0:bd3201 "\xbd2\x01"
-0x000226c4:01 "\x01"
-0x000226c8:06 "\x06"
+0x000226d0:b400 "\xb4"
+0x000226d4:02 "\x02"
+0x000226d6:10 "\x10"
+0x000226d8:d6df "\xd6\xdf"
-0x000226e0:1b ""
+0x000226e8:bd "\xbd"
+0x000226ec:02 "\x02"
+0x000226ee:10 "\x10"
-0x000226f0:040000 "\x04"
+0x000226f0:507501 "Pu\x01"
-0x00022700:8c "\x8c"
+0x00022700:c7 "\xc7"
-0x00022704:01 "\x01"
+0x00022704:02 "\x02"
+0x00022706:10 "\x10"
-0x00022708:060000 "\x06"
+0x00022708:a84801 "\xa8H\x01"
-0x00022710:2040 " @"
-0x00022718:2040 " @"
+0x00022718:d100 "\xd1"
+0x0002271c:02 "\x02"
+0x0002271e:10 "\x10"
-0x00022720:b006 "\xb0\x06"
+0x00022720:d6d4 "\xd6\xd4"
-0x00022730:10 "\x10"
+0x00022730:da "\xda"
+0x00022734:02 "\x02"
+0x00022736:10 "\x10"
-0x00022738:100000 "\x10"
+0x00022738:975d01 "\x97]\x01"
-0x00022740:97 "\x97"
-0x00022744:01 "\x01"
-0x00022748:06 "\x06"
+0x00022748:e4 "\xe4"
+0x0002274c:02 "\x02"
+0x0002274e:10 "\x10"
-0x00022750:d04600 "\xd0F"
+0x00022750:884801 "\x88H\x01"
-0x00022758:d046 "\xd0F"
-0x00022760:30 "0"
+0x00022760:ee "\xee"
+0x00022764:02 "\x02"
+0x00022766:10 "\x10"
+0x00022768:a6d7 "\xa6\xd7"
-0x00022770:10 "\x10"
-0x00022778:10 "\x10"
+0x00022778:f7 "\xf7"
+0x0002277c:02 "\x02"
+0x0002277e:10 "\x10"
-0x00022780:a00000 "\xa0"
+0x00022780:a75801 "\xa7X\x01"
-0x00022784:01 "\x01"
-0x00022788:06 "\x06"
+0x00022790:0101 "\x01\x01"
+0x00022794:02 "\x02"
+0x00022796:10 "\x10"
+0x00022798:d60901 "\xd6\t\x01"
-0x000227a0:a006 "\xa0\x06"
+0x000227a8:0b01 "\v\x01"
+0x000227ac:02 "\x02"
+0x000227ae:10 "\x10"
-0x000227b0:1000 "\x10"
+0x000227b0:ab6b "\xabk"
-0x000227b8:10 "\x10"
-0x000227c0:a900 "\xa9"
+0x000227c0:1401 "\x14\x01"
-0x000227c4:01 "\x01"
+0x000227c4:02 "\x02"
+0x000227c6:10 "\x10"
-0x000227c8:060000 "\x06"
+0x000227c8:285001 "(P\x01"
-0x000227d0:a04d "\xa0M"
-0x000227d8:a04d "\xa0M"
+0x000227d8:1e01 "\x1e\x01"
+0x000227dc:02 "\x02"
+0x000227de:10 "\x10"
-0x000227e0:d227 "\xd2'\x01"
+0x000227e0:575b "W[\x01"
-0x000227f0:1000 "\x10"
+0x000227f0:2801 "(\x01"
+0x000227f4:02 "\x02"
+0x000227f6:10 "\x10"
+0x000227f8:375701 "7W\x01"
-0x00022800:af "\xaf"
-0x00022804:01 "\x01"
-0x00022808:0600 "\x06"
+0x00022808:3201 "2\x01"
+0x0002280c:02 "\x02"
+0x0002280e:10 "\x10"
-0x00022810:7475 "tu\x01"
+0x00022810:4848 "HH\x01"
-0x00022818:747501 "tu\x01"
-0x00022820:0d00 "\r"
+0x00022820:3c01 "<\x01"
+0x00022824:02 "\x02"
+0x00022826:10 "\x10"
+0x00022828:c84801 "\xc8H\x01"
-0x00022830:04 "\x04"
+0x00022838:4601 "F\x01"
+0x0002283c:02 "\x02"
+0x0002283e:10 "\x10"
-0x00022840:b500 "\xb5"
+0x00022840:46eb "F\xeb"
-0x00022844:01 "\x01"
-0x00022848:02 "\x02"
+0x00022850:4f0100 "O\x01"
+0x00022854:02 "\x02"
+0x00022856:10 "\x10"
+0x00022858:2b6b00 "+k"
-0x00022860:4952 "IR"
+0x00022868:5801 "X\x01"
+0x0002286c:02 "\x02"
+0x0002286e:10 "\x10"
-0x00022870:2000 " "
+0x00022870:d068 "\xd0h"
-0x00022880:bd00 "\xbd"
+0x00022880:6101 "a\x01"
-0x00022884:01 "\x01"
+0x00022884:02 "\x02"
+0x00022886:10 "\x10"
-0x00022888:0200 "\x02"
+0x00022888:c068 "\xc0h"
-0x00022890:4cd201 "L\xd2\x01"
-0x00022898:4cd201 "L\xd2\x01"
+0x00022898:6a0100 "j\x01"
+0x0002289c:02 "\x02"
+0x0002289e:10 "\x10"
-0x000228a0:2c09 ",\t"
+0x000228a0:b6f4 "\xb6\xf4"
-0x000228b0:0400 "\x04"
+0x000228b0:7301 "s\x01"
+0x000228b4:02 "\x02"
+0x000228b6:10 "\x10"
+0x000228b8:406d01 "@m\x01"
-0x000228c0:cb "\xcb"
-0x000228c4:01 "\x01"
-0x000228c8:0200 "\x02"
+0x000228c8:7d01 "}\x01"
+0x000228cc:02 "\x02"
+0x000228ce:10 "\x10"
-0x000228d0:78db01 "x\xdb\x01"
+0x000228d0:6b6f00 "ko"
-0x000228d8:78db01 "x\xdb\x01"
-0x000228e0:d82f "\xd8/"
+0x000228e0:8601 "\x86\x01"
+0x000228e4:02 "\x02"
+0x000228e6:10 "\x10"
+0x000228e8:caa9 "\xca\xa9"
-0x000228f0:08 "\b"
+0x000228f8:8f01 "\x8f\x01"
+0x000228fc:02 "\x02"
+0x000228fe:10 "\x10"
-0x00022900:d500 "\xd5"
+0x00022900:bab8 "\xba\xb8"
-0x00022904:0e "\x0e"
-0x00022908:03 "\x03"
-0x00022910:102002 "\x10 \x02"
+0x00022910:980100 "\x98\x01"
+0x00022914:02 "\x02"
+0x00022916:10 "\x10"
-0x00022918:101002 "\x10\x10\x02"
+0x00022918:f6fb00 "\xf6\xfb"
-0x00022920:08 "\b"
+0x00022928:a101 "\xa1\x01"
+0x0002292c:02 "\x02"
+0x0002292e:10 "\x10"
-0x00022930:0800 "\b"
+0x00022930:16f0 "\x16\xf0"
-0x00022938:08 "\b"
-0x00022940:e100 "\xe1"
+0x00022940:aa01 "\xaa\x01"
-0x00022944:0f "\x0f"
+0x00022944:02 "\x02"
+0x00022946:10 "\x10"
-0x00022948:0300 "\x03"
+0x00022948:76f6 "v\xf6"
-0x00022950:182002 "\x18 \x02"
-0x00022958:181002 "\x18\x10\x02"
+0x00022958:b30100 "\xb3\x01"
+0x0002295c:02 "\x02"
+0x0002295e:10 "\x10"
-0x00022960:0800 "\b"
+0x00022960:7b6e "{n"
-0x00022970:0800 "\b"
+0x00022970:bc01 "\xbc\x01"
+0x00022974:02 "\x02"
+0x00022976:10 "\x10"
-0x00022978:0800 "\b"
+0x00022978:5b80 "[\x80"
-0x00022980:ed "\xed"
-0x00022984:01 "\x01"
-0x00022988:0300 "\x03"
+0x00022988:c501 "\xc5\x01"
+0x0002298c:02 "\x02"
+0x0002298e:10 "\x10"
-0x00022990:202002 " \x02"
+0x00022990:bb7d00 "\xbb}"
-0x00022998:201002 " \x10\x02"
-0x000229a0:380a "8\n"
+0x000229a0:ce01 "\xce\x01"
+0x000229a4:02 "\x02"
+0x000229a6:10 "\x10"
+0x000229a8:f75a01 "\xf7Z\x01"
-0x000229b0:20 " "
+0x000229b8:d801 "\xd8\x01"
+0x000229bc:02 "\x02"
+0x000229be:10 "\x10"
-0x000229c0:fa00 "\xfa"
+0x000229c0:1069 "\x10i"
-0x000229c4:06 "\x06"
-0x000229c8:03 "\x03"
-0x000229d0:582a02 "X*\x02"
+0x000229d0:e10100 "\xe1\x01"
+0x000229d4:02 "\x02"
+0x000229d6:10 "\x10"
-0x000229d8:581a02 "X\x1a\x02"
+0x000229d8:7b7100 "{q"
-0x000229e1:02 "\x02"
-0x000229e8:0700 "\a"
+0x000229e8:ea01 "\xea\x01"
+0x000229ec:02 "\x02"
+0x000229ee:10 "\x10"
-0x000229f0:0800 "\b"
+0x000229f0:9ba1 "\x9b\xa1"
-0x000229f8:10 "\x10"
-0x00022a00:9b00 "\x9b"
+0x00022a00:f301 "\xf3\x01"
-0x00022a04:01 "\x01"
+0x00022a04:02 "\x02"
+0x00022a06:10 "\x10"
-0x00022a08:030000 "\x03"
+0x00022a08:b75c01 "\xb7\\x01"
-0x00022a10:582c02 "X,\x02"
-0x00022a18:581c02 "X\x1c\x02"
+0x00022a18:fd0100 "\xfd\x01"
+0x00022a1c:02 "\x02"
+0x00022a1e:10 "\x10"
-0x00022a20:a003 "\xa0\x03"
+0x00022a20:eb75 "\xebu"
-0x00022a30:0800 "\b"
+0x00022a30:0602 "\x06\x02"
+0x00022a34:02 "\x02"
+0x00022a36:10 "\x10"
-0x00022a38:0800 "\b"
+0x00022a38:2b6c "+l"
-0x00022a40:0301 "\x03\x01"
-0x00022a44:01 "\x01"
-0x00022a48:0300 "\x03"
+0x00022a48:0f02 "\x0f\x02"
+0x00022a4c:02 "\x02"
+0x00022a4e:10 "\x10"
+0x00022a50:3b6b00 ";k"
-0x00022a59:2002 " \x02"
-0x00022a60:68 "h\x02"
+0x00022a60:18 "\x18\x02"
+0x00022a64:02 "\x02"
+0x00022a66:10 "\x10"
+0x00022a68:8b73 "\x8bs"
-0x00022a70:20 " "
+0x00022a78:2102 "!\x02"
+0x00022a7c:02 "\x02"
+0x00022a7e:10 "\x10"
-0x00022a80:0901 "\t\x01"
+0x00022a80:96cc "\x96\xcc"
-0x00022a84:08 "\b"
-0x00022a88:03 "\x03"
-0x00022a90:803202 "\x802\x02"
+0x00022a90:2a0200 "*\x02"
+0x00022a94:02 "\x02"
+0x00022a96:10 "\x10"
-0x00022a98:682202 "h"\x02"
+0x00022a98:e6d500 "\xe6\xd5"
-0x00022aa0:d812 "\xd8\x12"
+0x00022aa8:3302 "3\x02"
+0x00022aac:02 "\x02"
+0x00022aae:10 "\x10"
-0x00022ab0:200000 " "
+0x00022ab0:175b01 "\x17[\x01"
-0x00022ac0:0e01 "\x0e\x01"
+0x00022ac0:3d02 "=\x02"
-0x00022ac4:01 "\x01"
+0x00022ac4:02 "\x02"
+0x00022ac6:10 "\x10"
+0x00022ac8:546201 "Tb\x01"
-0x00022ad8:682202 "h"\x02"
+0x00022ad8:470200 "G\x02"
+0x00022adc:02 "\x02"
+0x00022ade:10 "\x10"
-0x00022ae0:340000 "4"
+0x00022ae0:407501 "@U\x01"
-0x00022af0:0400 "\x04"
+0x00022af0:5102 "Q\x02"
+0x00022af4:02 "\x02"
+0x00022af6:10 "\x10"
+0x00022af8:d07401 "\xd0t\x01"
-0x00022b00:01 "\x01"
-0x00022b04:03 "\x03"
+0x00022b08:5b02 "[\x02"
+0x00022b0c:02 "\x02"
+0x00022b0e:10 "\x10"
+0x00022b11:68 "h"
-0x00022b18:9c2202 "\x9c"\x02"
-0x00022b20:1d01 "\x1d\x01"
+0x00022b20:6402 "d\x02"
+0x00022b24:02 "\x02"
+0x00022b26:10 "\x10"
+0x00022b28:7068 "ph"
-0x00022b30:01 "\x01"
+0x00022b38:7a02 "z\x02"
+0x00022b3c:02 "\x02"
+0x00022b3e:10 "\x10"

and much more differences on the top.

Ideally I would like to have no difference with the original binary with diff ls ls-out.

@adamjseitz
Copy link
Contributor

adamjseitz commented Mar 22, 2023

Generating byte-for-byte identical binaries after reassembly is not currently a design goal of ddisasm - instead it is to produce GTIRB IR and assembly that can be used to build functionally equivalent binaries.

I expect it would be impossible to reliably generate byte-for-byte identical binaries with the current approach of generating assembly and re-assembling it with gcc - we'd likely need to directly generate binaries without the help of an external toolchain to achieve this.

@gogo2464
Copy link
Contributor Author

I think having a such tool sounds very interesting for malware analysis because it requires to document a malware that must not be altered.

Sounds also interesting to create tests that check the signature of the recompiled binary.

I may create this tool when I will finish the documentation.

@gogo2464
Copy link
Contributor Author

I passed the -O0 to gcc to tell to not optimize the binary.

@gogo2464
Copy link
Contributor Author

gogo2464 commented Mar 22, 2023

EDIT: no. I do not need to create the tool.

But yes I may need to create the tool to generate binaries.

@gogo2464
Copy link
Contributor Author

@adamjseitz hi.

I digged a lot and a lot of.

Point 1: the sections

First point, gcc create and remove some sections:

$ diff <(radare2 -e bin.cache=true -qc 'iS~[7]' ls) <(radare2 -e bin.cache=true -qc 'iS~[7]' ls-new )
< .gnu_debugaltlink
< .gnu_debuglink
---
> .symtab
> .strtab

then so the sections:

< .gnu_debugaltlink
< .gnu_debuglink

have been deleted

and the sections:

< .gnu_debugaltlink
< .gnu_debuglink

have been created.

Point 2 : the GOT

All the differences found on the rewritten elf are from know issues about GOT.

https://github.com/GrammaTech/ddisasm/blob/main/doc/AuxData.md#got-references

According to the doc:

The linker will then take care of creating a new GOT entry based on this symbolic expression.

If you want to check you can do radiff2 -u ls new-ls.

Others:

I also see difference in the rodata. I absolutely entierely misunderstand this point.

@aeflores
Copy link
Collaborator

In general, it is expected that there will be lots of differences at the byte level:

  • Point 1: Ddisasm does not necessarily keep sections that are not loaded at runtime (like .gnu_debuglink) so those might disappear (these do not generally affect execution). You might also get extra sections like .strtab if that was not present in the original binary, but you could remove those with strip.
  • Point 2: Since we emit assembly and reassemble and relink, some sections are completely regenerated like .plt or .got.
  • Others: There are other things that are regenerated, such as COPY relocations (https://github.com/GrammaTech/ddisasm/blob/main/doc/AuxData.md#copy-relocations). This could cause small differences in .rodata.

Other than that, different versions of the compiler or linker could decide to arrange sections differently, which would result in further differences.

Note that we perform symbolization, i.e. we create labels for symbolic references, which allows us to make changes in the assembly without breaking functionality. This will likely amplify the differences at the byte level. For example, my copy of ls has some jump tables in the .rodata section that look like this:

.L_18020:
          .long .L_6a61-.L_18020
          .long .L_6a61-.L_18020
...

The bytes in .long .L_6a61-.L_18020 will be resolved to the difference between the location of labels .L_6a61 and .L_18020. If those location change in the reassembled binary, the resulting bytes of the expression .long .L_6a61-.L_18020 will be different. This will often happen. In this case L_18020 points to the current location in .rodata and .L_6a61 points somewhere .text section.

Finally, I have found some differences in the .text section that should not be there. It looks like some notrack jmpq *%rax instructions that we interpret as just jmpq *%rax which is a shorter instruction (2 bytes instead of 3) and is probably exacerbating differences (by shifting the subsequent code).

@gogo2464
Copy link
Contributor Author

gogo2464 commented Mar 29, 2023

I would like to make some pull requests to:

-generate .plt and .got at the right place
-have a way to tell the linker to generate a copy relocation for the existing slot at the old address

The idea is to keep symbolization to avoid breaking changes but still try to kee the same signature of the malware.

My wish is to be able to document malwares with no need to beak these signatures. Else we could not ensure that we did document these correctly.

I do not plan to help the user to find the good linker / compiler version. There could be other tools which will do that. One tool, one objective. It is the linux philosophy.

the sections could be removed with compiler options. it is not my own priority.

Should I add a PR directly in the core or should I add it in an option? Like --keep-signature maybe.

@aeflores
Copy link
Collaborator

-generate .plt and .got at the right place
-have a way to tell the linker to generate a copy relocation for the existing slot at the old address

These would be definitely nice to have!

Should I add a PR directly in the core or should I add it in an option? Like --keep-signature maybe.

I am not sure what approach you are planning to take for this. Would these be changes to gtirb-pprinter? For what is worth, I tried to find a better way to deal with COPY relocations, but I couldn't find a nice way to do it. I would think we want these things on by default, but it would depend on the specific approach (and whether is general enough).

My wish is to be able to document malwares with no need to beak these signatures.

I am not sure I understand what you are trying to do, will you be annotating the assembly listings with comments? adding symbols to the rewritten binaries, or something else?

@gogo2464
Copy link
Contributor Author

I am not sure what approach you are planning to take for this. Would these be changes to gtirb-pprinter? For what is worth, I tried to find a better way to deal with COPY relocations, but I couldn't find a nice way to do it. I would think we want these things on by default, but it would depend on the specific approach (and whether is general enough).

I am currently watching.

I am not sure I understand what you are trying to do, will you be annotating the assembly listings with comments? adding symbols to the rewritten binaries, or something else?

Yes absolutely I may in the future, use ddisasm on malwares in order to document malware with comments, to rename labels and functions. And if I have a great great time, I might spend time to rewrites asm to c with the exact compiler and linker version. Seems pretty long to do of course.

@gogo2464
Copy link
Contributor Author

I am very busy. I may start this PR this week. I will push a pr fro documentation ion ddisasm before.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants