├── src ├── x32 │ ├── mod.rs │ ├── symtab.rs │ ├── section_elf.rs │ └── header_elf.rs ├── x64 │ ├── mod.rs │ ├── symtab.rs │ ├── section_elf.rs │ └── header_elf.rs ├── main.rs └── header_elf.rs ├── target ├── debug │ └── incremental │ │ └── rusty_Elf_parser-sa3tpws77n6u │ │ ├── s-gv922iyury-1cej123.lock │ │ └── s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy │ │ ├── dep-graph.bin │ │ ├── query-cache.bin │ │ ├── 12vyxfrg8s1il8tl.o │ │ ├── 1494r4oo3sx5tir1.o │ │ ├── 16fo9l19w4txf189.o │ │ ├── 1dpyr3hd43jx09cv.o │ │ ├── 1ewa0ghezu04iz5i.o │ │ ├── 1gz1wnu0m8d9fc9j.o │ │ ├── 1hz8sewzz1o3kwzv.o │ │ ├── 1iryfj63hzetijoq.o │ │ ├── 1m8s005uz24d0nmw.o │ │ ├── 1oep5302kqlypwhw.o │ │ ├── 1oesvzahse33cttz.o │ │ ├── 1xkle6u69xllfvcg.o │ │ ├── 1z28dqkli66o8nf6.o │ │ ├── 2255dokrybje7ld6.o │ │ ├── 25z2edu0csnuj5bf.o │ │ ├── 2d551amo8tu9ploa.o │ │ ├── 2eeo455brxqs3jao.o │ │ ├── 2eqetmocvqk1m3b2.o │ │ ├── 2gv5b7sxeix5azpd.o │ │ ├── 2hzw02bmlpbpiysx.o │ │ ├── 2nggdsm6x2l6zckq.o │ │ ├── 2plai8yp56ohhpx0.o │ │ ├── 2rgxhd8yqlee7z2y.o │ │ ├── 2rmqlewvjr8xjmue.o │ │ ├── 2st2vfxbwcy02d0k.o │ │ ├── 2y1w1w4i1qhe5mfk.o │ │ ├── 3025n3mkuo1c6rh.o │ │ ├── 30w9s217d6lqsuzl.o │ │ ├── 3261gvruljsbn4k8.o │ │ ├── 36ajdm8jw9buuhrj.o │ │ ├── 39h7qj0t6rrtz29p.o │ │ ├── 3hhjyerh0kpjp50y.o │ │ ├── 3iyn7lq8wfzkqjjd.o │ │ ├── 3op97x1tf1cxlfpi.o │ │ ├── 3sahewnjktuy6mgm.o │ │ ├── 3y4i5a2a1nxn810c.o │ │ ├── 46oi1mti2zdknwdc.o │ │ ├── 4bqvz6mit3zxhvhk.o │ │ ├── 4c0vlea83r4uk0f5.o │ │ ├── 4ct9hexcixeebmd0.o │ │ ├── 4lw4iz5u95qr332t.o │ │ ├── 4my2pwy8anxkd5i9.o │ │ ├── 4p4iq3ras87nzv4f.o │ │ ├── 4rk5c1gstcfwt373.o │ │ ├── 4uxxy4t6f82oa2h7.o │ │ ├── 4wxvzx9v2wc3kdbx.o │ │ ├── 4yj5fct4ynv1tl70.o │ │ ├── 54afdjwc45g7icjt.o │ │ ├── 56aufuyz1kk4bo31.o │ │ ├── 5a27zpa8sgri3drs.o │ │ ├── 5c7q3wmb6tnbzdp6.o │ │ ├── 5ep1ih5tiovjuxkd.o │ │ ├── 5ml1ku683gut2qy.o │ │ ├── 5ombxfzdob1zgep.o │ │ ├── 9s162vf27ju64y2.o │ │ ├── asy7qm2meqffxy2.o │ │ ├── awi4jdv4y60fi0c.o │ │ ├── baunc4vbq6wjbxk.o │ │ ├── bpnmz2azbcu771y.o │ │ ├── e0jc2v6qy1zl6yy.o │ │ ├── e553627breij87b.o │ │ ├── h5hlsekq4jvsw7x.o │ │ ├── iz0jeakwf13zr3r.o │ │ ├── lpwlyn0tgmbzpjs.o │ │ ├── m2tvup4djkr4clp.o │ │ ├── mtct8cxds6nwpdc.o │ │ ├── n98a0uywmy1pw2d.o │ │ ├── qljolag0f57tna9.o │ │ ├── qsxva8c6y0jj9vv.o │ │ ├── uldgswdsx1tsby2.o │ │ ├── work-products.bin │ │ ├── ws3abnae8kiobl5.o │ │ └── ynlkyo3vaiwfjsq.o └── CACHEDIR.TAG ├── Cargo.lock ├── Cargo.toml └── README.md /src/x32/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod header_elf; 2 | pub mod section_elf; 3 | pub mod symtab; -------------------------------------------------------------------------------- /src/x64/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod section_elf; 2 | pub mod symtab; 3 | pub mod header_elf; -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123.lock: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "rusty_Elf_parser" 7 | version = "0.1.0" 8 | -------------------------------------------------------------------------------- /target/CACHEDIR.TAG: -------------------------------------------------------------------------------- 1 | Signature: 8a477f597d28d172789f06886806bc55 2 | # This file is a cache directory tag created by cargo. 3 | # For information about cache directory tags see https://bford.info/cachedir/ 4 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rusty_Elf_parser" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | 9 | -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/dep-graph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/dep-graph.bin -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/query-cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/query-cache.bin -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/12vyxfrg8s1il8tl.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/12vyxfrg8s1il8tl.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1494r4oo3sx5tir1.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1494r4oo3sx5tir1.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/16fo9l19w4txf189.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/16fo9l19w4txf189.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1dpyr3hd43jx09cv.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1dpyr3hd43jx09cv.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1ewa0ghezu04iz5i.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1ewa0ghezu04iz5i.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1gz1wnu0m8d9fc9j.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1gz1wnu0m8d9fc9j.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1hz8sewzz1o3kwzv.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1hz8sewzz1o3kwzv.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1iryfj63hzetijoq.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1iryfj63hzetijoq.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1m8s005uz24d0nmw.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1m8s005uz24d0nmw.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1oep5302kqlypwhw.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1oep5302kqlypwhw.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1oesvzahse33cttz.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1oesvzahse33cttz.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1xkle6u69xllfvcg.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1xkle6u69xllfvcg.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1z28dqkli66o8nf6.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/1z28dqkli66o8nf6.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2255dokrybje7ld6.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2255dokrybje7ld6.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/25z2edu0csnuj5bf.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/25z2edu0csnuj5bf.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2d551amo8tu9ploa.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2d551amo8tu9ploa.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2eeo455brxqs3jao.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2eeo455brxqs3jao.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2eqetmocvqk1m3b2.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2eqetmocvqk1m3b2.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2gv5b7sxeix5azpd.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2gv5b7sxeix5azpd.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2hzw02bmlpbpiysx.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2hzw02bmlpbpiysx.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2nggdsm6x2l6zckq.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2nggdsm6x2l6zckq.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2plai8yp56ohhpx0.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2plai8yp56ohhpx0.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2rgxhd8yqlee7z2y.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2rgxhd8yqlee7z2y.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2rmqlewvjr8xjmue.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2rmqlewvjr8xjmue.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2st2vfxbwcy02d0k.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2st2vfxbwcy02d0k.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2y1w1w4i1qhe5mfk.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/2y1w1w4i1qhe5mfk.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3025n3mkuo1c6rh.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3025n3mkuo1c6rh.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/30w9s217d6lqsuzl.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/30w9s217d6lqsuzl.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3261gvruljsbn4k8.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3261gvruljsbn4k8.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/36ajdm8jw9buuhrj.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/36ajdm8jw9buuhrj.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/39h7qj0t6rrtz29p.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/39h7qj0t6rrtz29p.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3hhjyerh0kpjp50y.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3hhjyerh0kpjp50y.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3iyn7lq8wfzkqjjd.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3iyn7lq8wfzkqjjd.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3op97x1tf1cxlfpi.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3op97x1tf1cxlfpi.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3sahewnjktuy6mgm.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3sahewnjktuy6mgm.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3y4i5a2a1nxn810c.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/3y4i5a2a1nxn810c.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/46oi1mti2zdknwdc.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/46oi1mti2zdknwdc.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4bqvz6mit3zxhvhk.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4bqvz6mit3zxhvhk.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4c0vlea83r4uk0f5.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4c0vlea83r4uk0f5.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4ct9hexcixeebmd0.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4ct9hexcixeebmd0.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4lw4iz5u95qr332t.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4lw4iz5u95qr332t.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4my2pwy8anxkd5i9.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4my2pwy8anxkd5i9.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4p4iq3ras87nzv4f.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4p4iq3ras87nzv4f.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4rk5c1gstcfwt373.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4rk5c1gstcfwt373.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4uxxy4t6f82oa2h7.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4uxxy4t6f82oa2h7.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4wxvzx9v2wc3kdbx.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4wxvzx9v2wc3kdbx.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4yj5fct4ynv1tl70.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/4yj5fct4ynv1tl70.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/54afdjwc45g7icjt.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/54afdjwc45g7icjt.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/56aufuyz1kk4bo31.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/56aufuyz1kk4bo31.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5a27zpa8sgri3drs.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5a27zpa8sgri3drs.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5c7q3wmb6tnbzdp6.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5c7q3wmb6tnbzdp6.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5ep1ih5tiovjuxkd.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5ep1ih5tiovjuxkd.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5ml1ku683gut2qy.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5ml1ku683gut2qy.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5ombxfzdob1zgep.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/5ombxfzdob1zgep.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/9s162vf27ju64y2.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/9s162vf27ju64y2.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/asy7qm2meqffxy2.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/asy7qm2meqffxy2.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/awi4jdv4y60fi0c.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/awi4jdv4y60fi0c.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/baunc4vbq6wjbxk.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/baunc4vbq6wjbxk.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/bpnmz2azbcu771y.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/bpnmz2azbcu771y.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/e0jc2v6qy1zl6yy.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/e0jc2v6qy1zl6yy.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/e553627breij87b.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/e553627breij87b.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/h5hlsekq4jvsw7x.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/h5hlsekq4jvsw7x.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/iz0jeakwf13zr3r.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/iz0jeakwf13zr3r.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/lpwlyn0tgmbzpjs.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/lpwlyn0tgmbzpjs.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/m2tvup4djkr4clp.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/m2tvup4djkr4clp.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/mtct8cxds6nwpdc.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/mtct8cxds6nwpdc.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/n98a0uywmy1pw2d.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/n98a0uywmy1pw2d.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/qljolag0f57tna9.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/qljolag0f57tna9.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/qsxva8c6y0jj9vv.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/qsxva8c6y0jj9vv.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/uldgswdsx1tsby2.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/uldgswdsx1tsby2.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/work-products.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/work-products.bin -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/ws3abnae8kiobl5.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/ws3abnae8kiobl5.o -------------------------------------------------------------------------------- /target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/ynlkyo3vaiwfjsq.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xryw32/Rusty-elf-x86-parser/HEAD/target/debug/incremental/rusty_Elf_parser-sa3tpws77n6u/s-gv922iyury-1cej123-8qjqblmj8w67cmmufw1ya3vpy/ynlkyo3vaiwfjsq.o -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use std::{env, io}; 2 | use std::io::Write; 3 | mod header_elf; 4 | mod x64; 5 | mod x32; 6 | 7 | 8 | fn main() { 9 | let args: Vec = env::args().collect(); 10 | if args.len() > 1 { 11 | let filepath = args[1].as_str(); 12 | match header_elf::read_elf_headers(filepath) { 13 | Ok(_) => {}, 14 | Err(e) => { 15 | eprintln!("{e}"); 16 | } 17 | }; 18 | }else { 19 | loop { 20 | let mut filepath = String::new(); 21 | print!("enter the path of elf : "); 22 | io::stdout().flush().unwrap(); 23 | io::stdin().read_line(&mut filepath).unwrap(); 24 | let filepath = filepath.trim().trim_matches('"'); 25 | match header_elf::read_elf_headers(filepath) { 26 | Ok(_) => {}, 27 | Err(e) => { 28 | eprintln!("{e}"); 29 | } 30 | }; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/x32/symtab.rs: -------------------------------------------------------------------------------- 1 | use std::io; 2 | use std::fs::File; 3 | use std::io::{Error, Read, Seek, SeekFrom}; 4 | use std::mem; 5 | use crate::x32::section_elf::SectionHeader32; 6 | 7 | #[repr(C)] 8 | #[derive(Default)] 9 | struct Elf32Sym { 10 | st_name: u32, 11 | st_value: u32, 12 | st_size: u32, 13 | st_info: u8, 14 | st_other: u8, 15 | st_shndx: u16, 16 | } 17 | 18 | 19 | 20 | pub fn parse_symb(file: &mut File, elf_header: Vec) -> Result<(), Error> { 21 | let mut dynstr_off = 0; 22 | let mut dynsym_off = 0; 23 | let mut dynsym_sz = 0; 24 | 25 | for shdr in elf_header { 26 | match shdr.s_type { 27 | 2 | 3 => { 28 | if dynstr_off == 0 { 29 | println!("string table offset: {:#x} - size: {:#x}", shdr.offset, shdr.size); 30 | dynstr_off = shdr.offset as usize; 31 | } 32 | } 33 | 11 => { 34 | dynsym_off = shdr.offset as usize; 35 | dynsym_sz = shdr.size as usize; 36 | println!("dynsym table offset: {:#x} - size: {:#x}", shdr.offset, shdr.size); 37 | } 38 | _ => {} 39 | } 40 | } 41 | 42 | if dynstr_off == 0 { 43 | return Err(Error::new(io::ErrorKind::Other, "dynstr is empty")) 44 | }else if dynsym_off == 0 { 45 | return Err(Error::new(io::ErrorKind::Other, "dynsym is empty")) 46 | } 47 | 48 | let mut i = 0; 49 | while i * mem::size_of::() < dynsym_sz { 50 | let mut sym = Elf32Sym::default(); 51 | let absoffset = dynsym_off + i * mem::size_of::(); 52 | file.seek(SeekFrom::Start(absoffset as u64))?; 53 | file.read_exact(unsafe { std::slice::from_raw_parts_mut(&mut sym as *mut Elf32Sym as *mut u8, mem::size_of::())})?; 54 | println!("\n-----------------------------------"); 55 | println!(" SYH: {i}"); 56 | println!(" offset of sym: {:#x}", absoffset); 57 | println!(" address offset name = {:#x}", sym.st_name); 58 | if sym.st_name != 0 { 59 | let mut name_buffer = vec![0u8; 256]; 60 | file.seek(SeekFrom::Start((dynstr_off + sym.st_name as usize) as u64))?; 61 | file.read_exact(&mut name_buffer)?; 62 | let name: String = name_buffer.iter().take_while(|&&c| c != 0).map(|&c| c as char).collect(); 63 | println!(" name: ('{name}') - offset: {:#x}", dynstr_off + sym.st_name as usize); 64 | } 65 | println!(" st_infos = {:#x}", sym.st_info); 66 | println!(" st_other = {:#x} - st_shndx = {}", sym.st_other, sym.st_shndx); 67 | println!(" st_value = {:#x} - st_size = {}", sym.st_value, sym.st_size); 68 | i += 1; 69 | } 70 | println!("\n"); 71 | Ok(()) 72 | } -------------------------------------------------------------------------------- /src/x64/symtab.rs: -------------------------------------------------------------------------------- 1 | use std::io; 2 | use std::fs::File; 3 | use std::io::{Error, Read, Seek, SeekFrom}; 4 | use std::mem; 5 | use crate::x64::section_elf::SectionHeader64; 6 | 7 | #[repr(C)] 8 | #[derive(Default)] 9 | struct Elf64Sym { 10 | st_name: u32, 11 | st_info: u8, 12 | st_other: u8, 13 | st_shndx: u16, 14 | st_value: u64, 15 | st_size: u64, 16 | } 17 | 18 | 19 | 20 | pub fn parse_symb(file: &mut File, elf_header: Vec) -> Result<(), Error> { 21 | let mut dynstr_off = 0; 22 | let mut dynsym_off = 0; 23 | let mut dynsym_sz = 0; 24 | 25 | for shdr in elf_header { 26 | match shdr.s_type { 27 | 2 | 3 => { 28 | if dynstr_off == 0 { 29 | println!("string table offset: {:#x} - size: {:#x}", shdr.offset, shdr.size); 30 | dynstr_off = shdr.offset as usize; 31 | } 32 | } 33 | 11 => { 34 | dynsym_off = shdr.offset as usize; 35 | dynsym_sz = shdr.size as usize; 36 | println!("dynsym table offset: {:#x} - size: {:#x}", shdr.offset, shdr.size); 37 | } 38 | _ => {} 39 | } 40 | } 41 | 42 | if dynstr_off == 0 { 43 | return Err(Error::new(io::ErrorKind::Other, "dynstr is empty")) 44 | }else if dynsym_off == 0 { 45 | return Err(Error::new(io::ErrorKind::Other, "dynsym is empty")) 46 | } 47 | 48 | let mut i = 0; 49 | while i * mem::size_of::() < dynsym_sz { 50 | let mut sym = Elf64Sym::default(); 51 | let absoffset = dynsym_off + i * mem::size_of::(); 52 | file.seek(SeekFrom::Start(absoffset as u64))?; 53 | file.read_exact(unsafe { std::slice::from_raw_parts_mut(&mut sym as *mut Elf64Sym as *mut u8, mem::size_of::())})?; 54 | println!("\n-----------------------------------"); 55 | println!(" SYH: {i}"); 56 | println!(" offset of sym: {:#x}", absoffset); 57 | println!(" address offset name = {:#x}", sym.st_name); 58 | if sym.st_name != 0 { 59 | let mut name_buffer = vec![0u8; 256]; 60 | file.seek(SeekFrom::Start((dynstr_off + sym.st_name as usize) as u64))?; 61 | file.read_exact(&mut name_buffer)?; 62 | let name: String = name_buffer.iter().take_while(|&&c| c != 0).map(|&c| c as char).collect(); 63 | println!(" name: ('{name}') - offset: {:#x}", dynstr_off + sym.st_name as usize); 64 | } 65 | println!(" st_infos = {:#x}", sym.st_info); 66 | println!(" st_other = {:#x} - st_shndx = {}", sym.st_other, sym.st_shndx); 67 | println!(" st_value = {:#x} - st_size = {}", sym.st_value, sym.st_size); 68 | i += 1; 69 | } 70 | println!("\n"); 71 | Ok(()) 72 | } 73 | -------------------------------------------------------------------------------- /src/x32/section_elf.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | use std::{io, mem}; 3 | use std::io::{Read, Seek, SeekFrom}; 4 | use crate::x32::header_elf::ElfHeader32; 5 | use crate::x32::symtab; 6 | 7 | 8 | #[repr(C)] 9 | #[derive(Clone, Default)] 10 | pub struct SectionHeader32 { 11 | pub name: u32, 12 | pub s_type: u32, 13 | pub flags: u32, 14 | pub l_addr: u32, 15 | pub offset: u32, 16 | pub size: u32, 17 | pub link: u32, 18 | pub info: u32, 19 | pub align: u32, 20 | pub entsize: u32, 21 | } 22 | 23 | 24 | fn print_h32(sh_table: &[SectionHeader32], sh_str: &[u8], file: &mut File) { 25 | println!("======================================================================================================================================"); 26 | 27 | for (i, sh) in sh_table.iter().enumerate() { 28 | println!("\n-----------------------------------"); 29 | println!(" SEH: {i}"); 30 | println!(" Name: {}", crate::x64::section_elf::get_section_name(sh.name as usize, sh_str)); 31 | println!(" offset: {:#x} - load-addr: {:#x}", sh.offset, sh.l_addr); 32 | println!(" size: {:#x}", sh.size); 33 | println!(" algn: {}", sh.align); 34 | println!(" flag: {} - {}", sh.flags, crate::x64::section_elf::get_flag_description(sh.flags as u64)); 35 | println!(" types: {:#x} - {}", sh.s_type, crate::x64::section_elf::get_type_description(sh.s_type)); 36 | let mut data_section = vec![0u8; sh.size as usize]; 37 | file.seek(SeekFrom::Start(sh.offset as u64)).unwrap(); 38 | file.read_exact(&mut data_section).unwrap(); 39 | } 40 | println!("\n========================================================================================================================"); 41 | } 42 | 43 | 44 | 45 | 46 | pub fn pars_section(file: &mut File, elf_header: ElfHeader32) -> Result<(), io::Error>{ 47 | let mut section_header = vec![SectionHeader32::default(); elf_header.sh_num as usize]; 48 | file.seek(SeekFrom::Start(elf_header.sh_offset as u64))?; 49 | for i in 0..elf_header.sh_num { 50 | file.read_exact(unsafe { 51 | std::slice::from_raw_parts_mut(&mut section_header[i as usize] as *mut SectionHeader32 as *mut u8, mem::size_of::()) 52 | })?; 53 | } 54 | let mut section_str = Vec::new(); 55 | let sh_str_index = elf_header.shstrndx as usize; 56 | if sh_str_index < elf_header.sh_num as usize { 57 | let sh_str_offset = section_header[sh_str_index].offset as usize; 58 | file.seek(SeekFrom::Start(sh_str_offset as u64))?; 59 | file.read_to_end(&mut section_str)?; 60 | print_h32(§ion_header, §ion_str, file); 61 | } else { 62 | return Err(io::Error::new(io::ErrorKind::Other, "Invalid section header string table index")) 63 | } 64 | Ok(symtab::parse_symb(file, section_header)?) 65 | } -------------------------------------------------------------------------------- /src/header_elf.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | use std::io; 3 | use std::io::{Read}; 4 | use crate::{x32, x64}; 5 | 6 | 7 | 8 | pub fn get_type_file(types: u16) -> &'static str { 9 | match types { 10 | 1 => "Relocatable file", 11 | 2 => "Executable file", 12 | 3 => "Shared object file", 13 | 4 => "Core file", 14 | 0xfe00 | 0xfeff => "Operating system-specific", 15 | 0xff00 | 0xffff => "Processor-specific", 16 | _ => "unknown", 17 | } 18 | } 19 | 20 | pub fn get_machine(machine: u16) -> &'static str { 21 | match machine { 22 | 3 => "x86-32", 23 | 5 => "Motorola 88000", 24 | 6 => "Reserved for future use was EM_486", 25 | 7 => "Intel 80860", 26 | 8 => "MIPS I", 27 | 9 => "IBM System/370", 28 | 10..=14 => "Reserved for future use", 29 | 15 => "Hewlett-Packard PA-RISC", 30 | 16 => "Reserved for future use", 31 | 17 => "Fujitsu VPP500", 32 | 18 => "Enhanced instruction set SPARC", 33 | 19 => "x32", 34 | 20 => "PowerPC", 35 | 40 => "ARM", 36 | 50 => "IA64", 37 | 62 => "x86-64", 38 | 243 => "RISC-V", 39 | _ => "unknown", 40 | } 41 | } 42 | 43 | 44 | pub(crate) fn type_head(p_type: u32) -> &'static str { 45 | match p_type { 46 | 0 => "PT_NULL", 47 | 1 => "PT_LOAD", 48 | 2 => "PT_DYNAMIC", 49 | 3 => "PT_INTERP", 50 | 4 => "PT_NOTE", 51 | 5 => "PT_SHLIB", 52 | 6 => "PT_PHDR", 53 | 7 => "PT_TLS", 54 | 0x60000000 => "PT_LOOS", 55 | 0x6474E550 => "EH_FRAME", 56 | 0x6474E551 => "PT_STACK", 57 | 0x6474E552 => "RO-AFTER", 58 | 0x6FFFFFFF => "PT_HIOS", 59 | 0x70000000 => "PT_LOPROC", 60 | 0x7FFFFFFF => "PT_HIPROC", 61 | _ => "UNKNOW", 62 | } 63 | } 64 | 65 | pub(crate) fn flag_peh_desc(flags: u32) -> &'static str{ 66 | match flags { 67 | 1 => "PF_X (Execute)", 68 | 2 => "PF_W (Write)", 69 | 3 => "PF_W + PF_X (Write, execute)", 70 | 4 => "PF_R (Read)", 71 | 5 => "PF_R + PF_X (Read, execute)", 72 | 6 => "PF_R + PF_W (Read, write)", 73 | 7 => "PF_R + PF_W + PF_X (Read, write, execute)", 74 | 0xf0000000 => "Unspecified", 75 | _ => "unknow" 76 | } 77 | } 78 | 79 | 80 | 81 | 82 | 83 | pub fn read_elf_headers(filepath: &str) -> Result<(), io::Error> { 84 | let mut file = File::open(filepath)?; 85 | 86 | let mut header_data = [0u8; 64]; 87 | file.read_exact(&mut header_data)?; 88 | 89 | if &header_data[0..4] != b"\x7FELF" { 90 | return Err(io::Error::new(io::ErrorKind::Other, "invalid elf file")); 91 | } 92 | let machine = u16::from_le_bytes([header_data[18], header_data[19]]); 93 | if machine == 3 { 94 | Ok(x32::header_elf::header_elf(header_data, &mut file)?) 95 | }else if machine == 62 { 96 | Ok(x64::header_elf::pars_header(header_data, &mut file)?) 97 | }else { 98 | return Err(io::Error::new(io::ErrorKind::Other, "the architcture is not supported (".to_owned() + get_machine(machine) + ")")) 99 | } 100 | } 101 | 102 | 103 | -------------------------------------------------------------------------------- /src/x64/section_elf.rs: -------------------------------------------------------------------------------- 1 | use std::{io, mem}; 2 | use std::fs::File; 3 | use std::io::{Read, Seek, SeekFrom}; 4 | use crate::x64::header_elf::ElfHeader64; 5 | use crate::x64::symtab; 6 | 7 | 8 | #[repr(C)] 9 | #[derive(Clone, Default)] 10 | pub struct SectionHeader64 { 11 | pub name: u32, 12 | pub s_type: u32, 13 | pub flags: u64, 14 | pub l_addr: u64, 15 | pub offset: u64, 16 | pub size: u64, 17 | pub link: u32, 18 | pub info: u32, 19 | pub align: u64, 20 | pub entsize: u64, 21 | } 22 | 23 | 24 | pub(crate) fn print_h(sh_table: &[SectionHeader64], sh_str: &[u8], file: &mut File) { 25 | println!("======================================================================================================================================"); 26 | 27 | for (i, sh) in sh_table.iter().enumerate() { 28 | println!("\n-----------------------------------"); 29 | println!(" SEH: {i}"); 30 | println!(" Name: {}", get_section_name(sh.name as usize, sh_str)); 31 | println!(" offset: {:#x} - load-addr: {:#x}", sh.offset, sh.l_addr); 32 | println!(" size: {:#x}", sh.size); 33 | println!(" algn: {}", sh.align); 34 | println!(" flag: {} - {}", sh.flags, get_flag_description(sh.flags)); 35 | println!(" types: {:#x} - {}", sh.s_type, get_type_description(sh.s_type)); 36 | let mut data_section = vec![0u8; sh.size as usize]; 37 | file.seek(SeekFrom::Start(sh.offset)).unwrap(); 38 | file.read_exact(&mut data_section).unwrap(); 39 | } 40 | println!("\n========================================================================================================================"); 41 | } 42 | 43 | 44 | pub(crate) fn get_flag_description(flag_value: u64) -> &'static str { 45 | match flag_value { 46 | 0x1 => "SHF_WRITE (writable)", 47 | 0x2 => "SHF_ALLOC (readable)", 48 | 0x4 => "SHF_EXECINSTR (executable)", 49 | 0x10 => "SHF_MERGE", 50 | 0x20 => "SHF_STRINGS", 51 | 0x40 => "SHF_INFO_LINK", 52 | 0x80 => "SHF_LINK_ORDER", 53 | 0x100 => "SHF_OS_NONCONFORMING", 54 | 0x200 => "SHF_GROUP", 55 | 0x400 => "SHF_TLS", 56 | 0x0FF00000 => "SHF_MASKOS", 57 | 0xF0000000 => "SHF_MASKPROC", 58 | 0x4000000 => "SHF_ORDERED", 59 | 0x8000000 => "SHF_EXCLUDE", 60 | _ => "", 61 | } 62 | } 63 | 64 | 65 | pub(crate) fn get_type_description(types: u32) -> &'static str { 66 | match types { 67 | 0x0 => "SHT_NULL", 68 | 0x1 => "SHT_PROGBITS", 69 | 0x2 => "SHT_SYMTAB (initialized data)", 70 | 0x3 => "SHT_STRTAB (initialized data)", 71 | 0x4 => "SHT_RELA", 72 | 0x5 => "SHT_HASH (initialized data)", 73 | 0x6 => "SHT_DYNAMIC (initialized data)", 74 | 0x7 => "SHT_NOTE", 75 | 0x8 => "SHT_NOBITS (uninitialized data)", 76 | 0x9 => "SHT_REL", 77 | 0x0a => "SHT_SHLIB", 78 | 0x0b => "SHT_DYNSYM (initialized data)", 79 | _ => "unknown", 80 | } 81 | } 82 | 83 | pub(crate) fn get_section_name(offset: usize, sh_str: &[u8]) -> String { 84 | sh_str[offset..] 85 | .iter() 86 | .take_while(|&&c| c != 0) 87 | .map(|&c| c as char) 88 | .collect() 89 | } 90 | 91 | 92 | pub fn pars_section(file: &mut File, elf_header: ElfHeader64) -> Result<(), io::Error>{ 93 | let mut section_header = vec![SectionHeader64::default(); elf_header.sh_num as usize]; 94 | file.seek(SeekFrom::Start(elf_header.sh_offset))?; 95 | for i in 0..elf_header.sh_num { 96 | file.read_exact(unsafe { 97 | std::slice::from_raw_parts_mut(&mut section_header[i as usize] as *mut SectionHeader64 as *mut u8, mem::size_of::()) 98 | })?; 99 | } 100 | let mut section_str = Vec::new(); 101 | let sh_str_index = elf_header.shstrndx as usize; 102 | if sh_str_index < elf_header.sh_num as usize { 103 | let sh_str_offset = section_header[sh_str_index].offset as usize; 104 | file.seek(SeekFrom::Start(sh_str_offset as u64))?; 105 | file.read_to_end(&mut section_str)?; 106 | print_h(§ion_header, §ion_str, file); 107 | } else { 108 | return Err(io::Error::new(io::ErrorKind::Other, "Invalid section header string table index")) 109 | } 110 | symtab::parse_symb(file, section_header)?; 111 | Ok(()) 112 | } 113 | 114 | 115 | -------------------------------------------------------------------------------- /src/x32/header_elf.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | use std::io; 3 | use std::io::{Read, Seek, SeekFrom}; 4 | use std::mem::size_of; 5 | use crate::header_elf::{flag_peh_desc, type_head}; 6 | use crate::x32::section_elf; 7 | 8 | pub struct ElfHeader32 { 9 | pub(crate) ident: [u8; 16], 10 | pub(crate) etype: u16, 11 | pub(crate) machine: u16, 12 | pub(crate) version: u32, 13 | pub(crate) entry: u32, 14 | pub(crate) ph_offset: u32, 15 | pub(crate) sh_offset: u32, 16 | pub(crate) flags: u32, 17 | pub(crate) eh_size: u16, 18 | pub(crate) ph_entry_size: u16, 19 | pub(crate) ph_num: u16, 20 | pub(crate) sh_entry_size: u16, 21 | pub(crate) sh_num: u16, 22 | pub(crate) shstrndx: u16, 23 | } 24 | 25 | 26 | #[repr(C)] 27 | pub struct Peh32 { 28 | pub p_type: u32, 29 | pub p_offset: u32, 30 | pub p_vaddr: u32, 31 | pub p_paddr: u32, 32 | pub p_filesz: u32, 33 | pub p_memsz: u32, 34 | pub p_flags: u32, 35 | pub p_align: u32, 36 | } 37 | 38 | 39 | 40 | pub fn header_elf(header_data: [u8; 64], file: &mut File) -> Result<(), io::Error>{ 41 | let elf_header = ElfHeader32 { 42 | ident: [ 43 | header_data[0], header_data[1], header_data[2], header_data[3], header_data[4], 44 | header_data[5], header_data[6], header_data[7], header_data[8], header_data[9], 45 | header_data[10], header_data[11], header_data[12], header_data[13], header_data[14], 46 | header_data[15], 47 | ], 48 | etype: u16::from_le_bytes([header_data[16], header_data[17]]), 49 | machine: u16::from_le_bytes([header_data[18], header_data[19]]), 50 | version: u32::from_le_bytes([header_data[20], header_data[21], header_data[22], header_data[23]]), 51 | entry: u32::from_le_bytes([header_data[24], header_data[25], header_data[26], header_data[27]]), 52 | ph_offset: u32::from_le_bytes([header_data[28], header_data[29], header_data[30], header_data[31]]), 53 | sh_offset: u32::from_le_bytes([header_data[32], header_data[33], header_data[34], header_data[35]]), 54 | flags: u32::from_le_bytes([header_data[36], header_data[37], header_data[38], header_data[39]]), 55 | eh_size: u16::from_le_bytes([header_data[40], header_data[41]]), 56 | ph_entry_size: u16::from_le_bytes([header_data[42], header_data[43]]), 57 | ph_num: u16::from_le_bytes([header_data[44], header_data[45]]), 58 | sh_entry_size: u16::from_le_bytes([header_data[46], header_data[47]]), 59 | sh_num: u16::from_le_bytes([header_data[48], header_data[49]]), 60 | shstrndx: u16::from_le_bytes([header_data[50], header_data[51]]), 61 | }; 62 | print_header32(&elf_header); 63 | pht32(file, elf_header.ph_num as usize)?; 64 | Ok(section_elf::pars_section(file, elf_header)?) 65 | } 66 | 67 | 68 | 69 | 70 | fn pht32(file: &mut File, count: usize) -> Result<(), io::Error> { 71 | let phdr_size = size_of::(); 72 | file.seek(SeekFrom::Start(0x34))?; 73 | for i in 0..count { 74 | let mut buffer = vec![0; phdr_size]; 75 | file.read_exact(&mut buffer)?; 76 | let phdr: Peh32 = unsafe { std::ptr::read(buffer.as_ptr() as *const _) }; 77 | println!("--------------------------------"); 78 | println!(" PHT: {}", i); 79 | println!(" type: {:#x} - {}", phdr.p_type, type_head(phdr.p_type)); 80 | println!(" flags: {:#x} - {}", phdr.p_flags, flag_peh_desc(phdr.p_flags)); 81 | println!(" Offset: {:#x}", phdr.p_offset); 82 | println!(" VA: {:#x} - PA: {:#x}", phdr.p_vaddr, phdr.p_paddr); 83 | println!(" File Size: {:#x} - Memory Size: {:#x}", phdr.p_filesz, phdr.p_memsz); 84 | println!(" Alignment: {:#x}", phdr.p_align); 85 | println!(); 86 | } 87 | Ok(()) 88 | } 89 | 90 | 91 | 92 | fn print_header32(elf_header: &ElfHeader32) { 93 | print!(" ELF Identification: ["); 94 | for b in elf_header.ident{ 95 | print!("{:#x}, ", b); 96 | } 97 | println!("]"); 98 | println!(" Type: {} ({})", elf_header.etype, crate::header_elf::get_type_file(elf_header.etype)); 99 | println!(" Machine: {} ;{}", elf_header.machine, crate::header_elf::get_machine(elf_header.machine)); 100 | println!(" Version: {}", elf_header.version); 101 | println!(" Entry point : {:#x}", elf_header.entry); 102 | println!(" program headers offset: {:#x}", elf_header.ph_offset); 103 | println!(" sh offset: {:#x}", elf_header.sh_offset); 104 | println!(" Flags: {}", elf_header.flags); 105 | println!(" Size of this header: {}", elf_header.eh_size); 106 | println!(" Size of pht: {}", elf_header.ph_entry_size); 107 | println!(" Number of pht: {}", elf_header.ph_num); 108 | println!(" Size of sh: {}", elf_header.sh_entry_size); 109 | println!(" Number of sh: {}", elf_header.sh_num); 110 | println!(" Sh string table index: {}", elf_header.shstrndx); 111 | } -------------------------------------------------------------------------------- /src/x64/header_elf.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | use std::io; 3 | use std::io::{Read, Seek, SeekFrom}; 4 | use std::mem::size_of; 5 | use crate::header_elf; 6 | use crate::header_elf::{get_machine, get_type_file}; 7 | use crate::x64::section_elf; 8 | 9 | pub struct ElfHeader64 { 10 | pub(crate) ident: [u8; 16], 11 | pub(crate) etype: u16, 12 | pub(crate) machine: u16, 13 | pub(crate) version: u32, 14 | pub(crate) entry: u64, 15 | pub(crate) ph_offset: u64, 16 | pub(crate) sh_offset: u64, 17 | pub(crate) flags: u32, 18 | pub(crate) eh_size: u16, 19 | pub(crate) ph_entry_size: u16, 20 | pub(crate) ph_num: u16, 21 | pub(crate) sh_entry_size: u16, 22 | pub(crate) sh_num: u16, 23 | pub(crate) shstrndx: u16, 24 | } 25 | 26 | #[repr(C)] 27 | #[derive(Debug)] 28 | pub struct Peh { 29 | p_type: u32, 30 | p_flags: u32, 31 | p_offset: u64, 32 | p_vaddr: u64, 33 | p_paddr: u64, 34 | p_filesz: u64, 35 | p_memsz: u64, 36 | p_align: u64, 37 | } 38 | 39 | 40 | 41 | pub fn pars_header(header_data: [u8;64], file: &mut File) -> Result<(), io::Error>{ 42 | let elf_header = ElfHeader64 { 43 | ident: [ 44 | header_data[0], header_data[1], header_data[2], header_data[3], header_data[4], 45 | header_data[5], header_data[6], header_data[7], header_data[8], header_data[9], 46 | header_data[10], header_data[11], header_data[12], header_data[13], header_data[14], 47 | header_data[15], 48 | ], 49 | etype: u16::from_le_bytes([header_data[16], header_data[17]]), 50 | machine: u16::from_le_bytes([header_data[18], header_data[19]]), 51 | version: u32::from_le_bytes([header_data[20], header_data[21], header_data[22], header_data[23]]), 52 | entry: u64::from_le_bytes([header_data[24], header_data[25], header_data[26], header_data[27], header_data[28], 53 | header_data[29], header_data[30], header_data[31] 54 | ]), 55 | ph_offset: u64::from_le_bytes([ 56 | header_data[32], header_data[33], header_data[34], header_data[35], header_data[36], 57 | header_data[37], header_data[38], header_data[39] 58 | ]), 59 | sh_offset: u64::from_le_bytes([header_data[40], header_data[41], header_data[42], header_data[43], header_data[44], 60 | header_data[45], header_data[46], header_data[47] 61 | ]), 62 | flags: u32::from_le_bytes([header_data[48], header_data[49], header_data[50], header_data[51]]), 63 | eh_size: u16::from_le_bytes([header_data[52], header_data[53]]), 64 | ph_entry_size: u16::from_le_bytes([header_data[54], header_data[55]]), 65 | ph_num: u16::from_le_bytes([header_data[56], header_data[57]]), 66 | sh_entry_size: u16::from_le_bytes([header_data[58], header_data[59]]), 67 | sh_num: u16::from_le_bytes([header_data[60], header_data[61]]), 68 | shstrndx: u16::from_le_bytes([header_data[62], header_data[63]]), 69 | }; 70 | print_header(&elf_header); 71 | pht(file, elf_header.ph_num as usize)?; 72 | section_elf::pars_section(file, elf_header)?; 73 | Ok(()) 74 | } 75 | 76 | 77 | 78 | 79 | fn pht(file: &mut File, count: usize) -> Result<(), io::Error>{ 80 | let phdr_size = size_of::(); 81 | file.seek(SeekFrom::Start(0x40))?; 82 | for i in 0..count { 83 | let mut buffer = vec![0; phdr_size]; 84 | file.read_exact(&mut buffer)?; 85 | let phdr: Peh = unsafe { std::ptr::read(buffer.as_ptr() as *const _) }; 86 | println!("--------------------------------"); 87 | println!(" PHT: {i}"); 88 | println!(" type: {:#x} - {}", phdr.p_type, header_elf::type_head(phdr.p_type)); 89 | println!(" flags: {:#x} - {}", phdr.p_flags, header_elf::flag_peh_desc(phdr.p_flags)); 90 | println!(" Offset: {:#x}", phdr.p_offset); 91 | println!(" VA: {:#x} - PA: {:#x}", phdr.p_vaddr, phdr.p_paddr); 92 | println!(" File Size: {:#x} - Memory Size: {:#x}", phdr.p_filesz, phdr.p_memsz); 93 | println!(" Alignment: {:#x}", phdr.p_align); 94 | println!(); 95 | } 96 | Ok(()) 97 | } 98 | 99 | 100 | pub fn print_header(elf_header: &ElfHeader64) { 101 | print!(" ELF Identification: ["); 102 | for b in elf_header.ident{ 103 | print!("{:#x}, ", b); 104 | } 105 | println!("]"); 106 | println!(" Type: {} ({})", elf_header.etype, get_type_file(elf_header.etype)); 107 | println!(" Machine: {} ;{}", elf_header.machine, get_machine(elf_header.machine)); 108 | println!(" Version: {}", elf_header.version); 109 | println!(" Entry point : {:#x}", elf_header.entry); 110 | println!(" program headers offset: {:#x}", elf_header.ph_offset); 111 | println!(" sh offset: {:#x}", elf_header.sh_offset); 112 | println!(" Flags: {}", elf_header.flags); 113 | println!(" Size of this header: {}", elf_header.eh_size); 114 | println!(" Size of pht: {}", elf_header.ph_entry_size); 115 | println!(" Number of pht: {}", elf_header.ph_num); 116 | println!(" Size of sh: {}", elf_header.sh_entry_size); 117 | println!(" Number of sh: {}", elf_header.sh_num); 118 | println!(" Sh string table index: {}", elf_header.shstrndx); 119 | } 120 | 121 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rusty-elf64-parser 2 | it's a small program written in rust with only the standard library to analyze the headers of an elf64 or elf32 file 3 | 4 | ## output 5 | ``` 6 | C:\code\rust\rusty_Elf_parser\target\debug> C:\code\rust\rusty_Elf_parser\target\debug\rusty_Elf_parser.exe "C:\test\main" 7 | ELF Identification: [0x7f, 0x45, 0x4c, 0x46, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ] 8 | Type: 3 (Shared object file) 9 | Machine: 62 ;x86-64 10 | Version: 1 11 | Entry point : 0x8a40 12 | program headers offset: 0x40 13 | sh offset: 0xc4c1d8 14 | Flags: 0 15 | Size of this header: 64 16 | Size of pht: 56 17 | Number of pht: 14 18 | Size of sh: 64 19 | Number of sh: 43 20 | Sh string table index: 42 21 | ``` 22 | ``` 23 | -------------------------------- 24 | PHT: 0 25 | type: 0x6 - PT_PHDR 26 | flags: 0x4 - PF_R (Read) 27 | Offset: 0x40 28 | VA: 0x40 - PA: 0x40 29 | File Size: 0x310 - Memory Size: 0x310 30 | Alignment: 0x8 31 | 32 | -------------------------------- 33 | PHT: 1 34 | type: 0x3 - PT_INTERP 35 | flags: 0x4 - PF_R (Read) 36 | Offset: 0x350 37 | VA: 0x350 - PA: 0x350 38 | File Size: 0x1c - Memory Size: 0x1c 39 | Alignment: 0x1 40 | 41 | -------------------------------- 42 | PHT: 2 43 | type: 0x1 - PT_LOAD 44 | flags: 0x4 - PF_R (Read) 45 | Offset: 0x0 46 | VA: 0x0 - PA: 0x0 47 | File Size: 0x5548 - Memory Size: 0x5548 48 | Alignment: 0x1000 49 | 50 | -------------------------------- 51 | PHT: 3 52 | type: 0x1 - PT_LOAD 53 | flags: 0x5 - PF_R + PF_X (Read, execute) 54 | Offset: 0x6000 55 | VA: 0x6000 - PA: 0x6000 56 | File Size: 0x38e3d - Memory Size: 0x38e3d 57 | Alignment: 0x1000 58 | 59 | -------------------------------- 60 | PHT: 4 61 | type: 0x1 - PT_LOAD 62 | flags: 0x4 - PF_R (Read) 63 | Offset: 0x3f000 64 | VA: 0x3f000 - PA: 0x3f000 65 | File Size: 0xe6c0 - Memory Size: 0xe6c0 66 | Alignment: 0x1000 67 | 68 | -------------------------------- 69 | PHT: 5 70 | type: 0x1 - PT_LOAD 71 | flags: 0x6 - PF_R + PF_W (Read, write) 72 | Offset: 0x4e0d0 73 | VA: 0x4e0d0 - PA: 0x4e0d0 74 | File Size: 0x2f60 - Memory Size: 0x3068 75 | Alignment: 0x1000 76 | 77 | -------------------------------- 78 | PHT: 6 79 | type: 0x2 - PT_DYNAMIC 80 | flags: 0x6 - PF_R + PF_W (Read, write) 81 | Offset: 0x50738 82 | VA: 0x50738 - PA: 0x50738 83 | File Size: 0x210 - Memory Size: 0x210 84 | Alignment: 0x8 85 | 86 | -------------------------------- 87 | PHT: 7 88 | type: 0x4 - PT_NOTE 89 | flags: 0x4 - PF_R (Read) 90 | Offset: 0x370 91 | VA: 0x370 - PA: 0x370 92 | File Size: 0x20 - Memory Size: 0x20 93 | Alignment: 0x8 94 | 95 | -------------------------------- 96 | PHT: 8 97 | type: 0x4 - PT_NOTE 98 | flags: 0x4 - PF_R (Read) 99 | Offset: 0x390 100 | VA: 0x390 - PA: 0x390 101 | File Size: 0x44 - Memory Size: 0x44 102 | Alignment: 0x4 103 | 104 | -------------------------------- 105 | PHT: 9 106 | type: 0x7 - PT_TLS 107 | flags: 0x4 - PF_R (Read) 108 | Offset: 0x4e0d0 109 | VA: 0x4e0d0 - PA: 0x4e0d0 110 | File Size: 0x28 - Memory Size: 0x4a 111 | Alignment: 0x8 112 | 113 | -------------------------------- 114 | PHT: 10 115 | type: 0x6474e553 - UNKNOW 116 | flags: 0x4 - PF_R (Read) 117 | Offset: 0x370 118 | VA: 0x370 - PA: 0x370 119 | File Size: 0x20 - Memory Size: 0x20 120 | Alignment: 0x8 121 | 122 | -------------------------------- 123 | PHT: 11 124 | type: 0x6474e550 - EH_FRAME 125 | flags: 0x4 - PF_R (Read) 126 | Offset: 0x43c34 127 | VA: 0x43c34 - PA: 0x43c34 128 | File Size: 0x150c - Memory Size: 0x150c 129 | Alignment: 0x4 130 | 131 | -------------------------------- 132 | PHT: 12 133 | type: 0x6474e551 - PT_STACK 134 | flags: 0x6 - PF_R + PF_W (Read, write) 135 | Offset: 0x0 136 | VA: 0x0 - PA: 0x0 137 | File Size: 0x0 - Memory Size: 0x0 138 | Alignment: 0x10 139 | 140 | -------------------------------- 141 | PHT: 13 142 | type: 0x6474e552 - RO-AFTER 143 | flags: 0x4 - PF_R (Read) 144 | Offset: 0x4e0d0 145 | VA: 0x4e0d0 - PA: 0x4e0d0 146 | File Size: 0x2f30 - Memory Size: 0x2f30 147 | Alignment: 0x1 148 | 149 | ``` 150 | ``` 151 | ====================================================================================================================================== 152 | 153 | ----------------------------------- 154 | SEH: 0 155 | Name: 156 | offset: 0x0 - load-addr: 0x0 157 | size: 0x0 158 | algn: 0 159 | flag: 0 - 160 | types: 0x0 - SHT_NULL 161 | 162 | ----------------------------------- 163 | SEH: 1 164 | Name: .interp 165 | offset: 0x350 - load-addr: 0x350 166 | size: 0x1c 167 | algn: 1 168 | flag: 2 - SHF_ALLOC (readable) 169 | types: 0x1 - SHT_PROGBITS 170 | 171 | ----------------------------------- 172 | SEH: 2 173 | Name: .note.gnu.property 174 | offset: 0x370 - load-addr: 0x370 175 | size: 0x20 176 | algn: 8 177 | flag: 2 - SHF_ALLOC (readable) 178 | types: 0x7 - SHT_NOTE 179 | 180 | ----------------------------------- 181 | SEH: 3 182 | Name: .note.gnu.build-id 183 | offset: 0x390 - load-addr: 0x390 184 | size: 0x24 185 | algn: 4 186 | flag: 2 - SHF_ALLOC (readable) 187 | types: 0x7 - SHT_NOTE 188 | 189 | ----------------------------------- 190 | SEH: 4 191 | Name: .note.ABI-tag 192 | offset: 0x3b4 - load-addr: 0x3b4 193 | size: 0x20 194 | algn: 4 195 | flag: 2 - SHF_ALLOC (readable) 196 | types: 0x7 - SHT_NOTE 197 | 198 | ----------------------------------- 199 | SEH: 5 200 | Name: .gnu.hash 201 | offset: 0x3d8 - load-addr: 0x3d8 202 | size: 0x24 203 | algn: 8 204 | flag: 2 - SHF_ALLOC (readable) 205 | types: 0x6ffffff6 - unknown 206 | 207 | ----------------------------------- 208 | SEH: 6 209 | Name: .dynsym 210 | offset: 0x400 - load-addr: 0x400 211 | size: 0x618 212 | algn: 8 213 | flag: 2 - SHF_ALLOC (readable) 214 | types: 0xb - SHT_DYNSYM (initialized data) 215 | 216 | ----------------------------------- 217 | SEH: 7 218 | Name: .dynstr 219 | offset: 0xa18 - load-addr: 0xa18 220 | size: 0x3ec 221 | algn: 1 222 | flag: 2 - SHF_ALLOC (readable) 223 | types: 0x3 - SHT_STRTAB (initialized data) 224 | 225 | ----------------------------------- 226 | SEH: 8 227 | Name: .gnu.version 228 | offset: 0xe04 - load-addr: 0xe04 229 | size: 0x82 230 | algn: 2 231 | flag: 2 - SHF_ALLOC (readable) 232 | types: 0x6fffffff - unknown 233 | 234 | ----------------------------------- 235 | SEH: 9 236 | Name: .gnu.version_r 237 | offset: 0xe88 - load-addr: 0xe88 238 | size: 0x100 239 | algn: 8 240 | flag: 2 - SHF_ALLOC (readable) 241 | types: 0x6ffffffe - unknown 242 | 243 | ----------------------------------- 244 | SEH: 10 245 | Name: .rela.dyn 246 | offset: 0xf88 - load-addr: 0xf88 247 | size: 0x4590 248 | algn: 8 249 | flag: 2 - SHF_ALLOC (readable) 250 | types: 0x4 - SHT_RELA 251 | 252 | ----------------------------------- 253 | SEH: 11 254 | Name: .rela.plt 255 | offset: 0x5518 - load-addr: 0x5518 256 | size: 0x30 257 | algn: 8 258 | flag: 66 - 259 | types: 0x4 - SHT_RELA 260 | 261 | ----------------------------------- 262 | SEH: 12 263 | Name: .init 264 | offset: 0x6000 - load-addr: 0x6000 265 | size: 0x17 266 | algn: 4 267 | flag: 6 - 268 | types: 0x1 - SHT_PROGBITS 269 | 270 | ----------------------------------- 271 | SEH: 13 272 | Name: .plt 273 | offset: 0x6020 - load-addr: 0x6020 274 | size: 0x30 275 | algn: 16 276 | flag: 6 - 277 | types: 0x1 - SHT_PROGBITS 278 | 279 | ----------------------------------- 280 | SEH: 14 281 | Name: .plt.got 282 | offset: 0x6050 - load-addr: 0x6050 283 | size: 0x8 284 | algn: 8 285 | flag: 6 - 286 | types: 0x1 - SHT_PROGBITS 287 | 288 | ----------------------------------- 289 | SEH: 15 290 | Name: .text 291 | offset: 0x6060 - load-addr: 0x6060 292 | size: 0x38dd4 293 | algn: 16 294 | flag: 6 - 295 | types: 0x1 - SHT_PROGBITS 296 | 297 | ----------------------------------- 298 | SEH: 16 299 | Name: .fini 300 | offset: 0x3ee34 - load-addr: 0x3ee34 301 | size: 0x9 302 | algn: 4 303 | flag: 6 - 304 | types: 0x1 - SHT_PROGBITS 305 | 306 | ----------------------------------- 307 | SEH: 17 308 | Name: .rodata 309 | offset: 0x3f000 - load-addr: 0x3f000 310 | size: 0x4c34 311 | algn: 16 312 | flag: 2 - SHF_ALLOC (readable) 313 | types: 0x1 - SHT_PROGBITS 314 | 315 | ----------------------------------- 316 | SEH: 18 317 | Name: .eh_frame_hdr 318 | offset: 0x43c34 - load-addr: 0x43c34 319 | size: 0x150c 320 | algn: 4 321 | flag: 2 - SHF_ALLOC (readable) 322 | types: 0x1 - SHT_PROGBITS 323 | 324 | ----------------------------------- 325 | SEH: 19 326 | Name: .eh_frame 327 | offset: 0x45140 - load-addr: 0x45140 328 | size: 0x7660 329 | algn: 8 330 | flag: 2 - SHF_ALLOC (readable) 331 | types: 0x1 - SHT_PROGBITS 332 | 333 | ----------------------------------- 334 | SEH: 20 335 | Name: .gcc_except_table 336 | offset: 0x4c7a0 - load-addr: 0x4c7a0 337 | size: 0xf20 338 | algn: 4 339 | flag: 2 - SHF_ALLOC (readable) 340 | types: 0x1 - SHT_PROGBITS 341 | 342 | ----------------------------------- 343 | SEH: 21 344 | Name: .tdata 345 | offset: 0x4e0d0 - load-addr: 0x4e0d0 346 | size: 0x28 347 | algn: 8 348 | flag: 1027 - 349 | types: 0x1 - SHT_PROGBITS 350 | 351 | ----------------------------------- 352 | SEH: 22 353 | Name: .tbss 354 | offset: 0x4e0f8 - load-addr: 0x4e0f8 355 | size: 0x22 356 | algn: 8 357 | flag: 1027 - 358 | types: 0x8 - SHT_NOBITS (uninitialized data) 359 | 360 | ----------------------------------- 361 | SEH: 23 362 | Name: .init_array 363 | offset: 0x4e0f8 - load-addr: 0x4e0f8 364 | size: 0x10 365 | algn: 8 366 | flag: 3 - 367 | types: 0xe - unknown 368 | 369 | ----------------------------------- 370 | SEH: 24 371 | Name: .fini_array 372 | offset: 0x4e108 - load-addr: 0x4e108 373 | size: 0x8 374 | algn: 8 375 | flag: 3 - 376 | types: 0xf - unknown 377 | 378 | ----------------------------------- 379 | SEH: 25 380 | Name: .data.rel.ro 381 | offset: 0x4e110 - load-addr: 0x4e110 382 | size: 0x2628 383 | algn: 8 384 | flag: 3 - 385 | types: 0x1 - SHT_PROGBITS 386 | 387 | ----------------------------------- 388 | SEH: 26 389 | Name: .dynamic 390 | offset: 0x50738 - load-addr: 0x50738 391 | size: 0x210 392 | algn: 8 393 | flag: 3 - 394 | types: 0x6 - SHT_DYNAMIC (initialized data) 395 | 396 | ----------------------------------- 397 | SEH: 27 398 | Name: .got 399 | offset: 0x50948 - load-addr: 0x50948 400 | size: 0x6b8 401 | algn: 8 402 | flag: 3 - 403 | types: 0x1 - SHT_PROGBITS 404 | 405 | ----------------------------------- 406 | SEH: 28 407 | Name: .data 408 | offset: 0x51000 - load-addr: 0x51000 409 | size: 0x30 410 | algn: 8 411 | flag: 3 - 412 | types: 0x1 - SHT_PROGBITS 413 | 414 | ----------------------------------- 415 | SEH: 29 416 | Name: .bss 417 | offset: 0x51030 - load-addr: 0x51030 418 | size: 0x108 419 | algn: 8 420 | flag: 3 - 421 | types: 0x8 - SHT_NOBITS (uninitialized data) 422 | 423 | ----------------------------------- 424 | SEH: 30 425 | Name: .comment 426 | offset: 0x51030 - load-addr: 0x0 427 | size: 0x1f 428 | algn: 1 429 | flag: 48 - 430 | types: 0x1 - SHT_PROGBITS 431 | 432 | ----------------------------------- 433 | SEH: 31 434 | Name: .debug_aranges 435 | offset: 0x5104f - load-addr: 0x0 436 | size: 0x10e20 437 | algn: 1 438 | flag: 0 - 439 | types: 0x1 - SHT_PROGBITS 440 | 441 | ----------------------------------- 442 | SEH: 32 443 | Name: .debug_pubnames 444 | offset: 0x61e6f - load-addr: 0x0 445 | size: 0x10c58c 446 | algn: 1 447 | flag: 0 - 448 | types: 0x1 - SHT_PROGBITS 449 | 450 | ----------------------------------- 451 | SEH: 33 452 | Name: .debug_info 453 | offset: 0x16e3fb - load-addr: 0x0 454 | size: 0x384733 455 | algn: 1 456 | flag: 0 - 457 | types: 0x1 - SHT_PROGBITS 458 | 459 | ----------------------------------- 460 | SEH: 34 461 | Name: .debug_abbrev 462 | offset: 0x4f2b2e - load-addr: 0x0 463 | size: 0xd248 464 | algn: 1 465 | flag: 0 - 466 | types: 0x1 - SHT_PROGBITS 467 | 468 | ----------------------------------- 469 | SEH: 35 470 | Name: .debug_line 471 | offset: 0x4ffd76 - load-addr: 0x0 472 | size: 0x8bec6 473 | algn: 1 474 | flag: 0 - 475 | types: 0x1 - SHT_PROGBITS 476 | 477 | ----------------------------------- 478 | SEH: 36 479 | Name: .debug_str 480 | offset: 0x58bc3c - load-addr: 0x0 481 | size: 0x1bdc33 482 | algn: 1 483 | flag: 48 - 484 | types: 0x1 - SHT_PROGBITS 485 | 486 | ----------------------------------- 487 | SEH: 37 488 | Name: .debug_loc 489 | offset: 0x74986f - load-addr: 0x0 490 | size: 0x2d9733 491 | algn: 1 492 | flag: 0 - 493 | types: 0x1 - SHT_PROGBITS 494 | 495 | ----------------------------------- 496 | SEH: 38 497 | Name: .debug_pubtypes 498 | offset: 0xa22fa2 - load-addr: 0x0 499 | size: 0x1197bb 500 | algn: 1 501 | flag: 0 - 502 | types: 0x1 - SHT_PROGBITS 503 | 504 | ----------------------------------- 505 | SEH: 39 506 | Name: .debug_ranges 507 | offset: 0xb3c75d - load-addr: 0x0 508 | size: 0xf41e0 509 | algn: 1 510 | flag: 0 - 511 | types: 0x1 - SHT_PROGBITS 512 | 513 | ----------------------------------- 514 | SEH: 40 515 | Name: .symtab 516 | offset: 0xc30940 - load-addr: 0x0 517 | size: 0x7410 518 | algn: 8 519 | flag: 0 - 520 | types: 0x2 - SHT_SYMTAB (initialized data) 521 | 522 | ----------------------------------- 523 | SEH: 41 524 | Name: .strtab 525 | offset: 0xc37d50 - load-addr: 0x0 526 | size: 0x142d2 527 | algn: 1 528 | flag: 0 - 529 | types: 0x3 - SHT_STRTAB (initialized data) 530 | 531 | ----------------------------------- 532 | SEH: 42 533 | Name: .shstrtab 534 | offset: 0xc4c022 - load-addr: 0x0 535 | size: 0x1b6 536 | algn: 1 537 | flag: 0 - 538 | types: 0x3 - SHT_STRTAB (initialized data) 539 | 540 | ``` 541 | ``` 542 | ======================================================================================================================== 543 | 544 | dynsym table offset: 0x400 - size: 0x618 545 | string table offset: 0xa18 - size: 0x3ec 546 | 547 | ----------------------------------- 548 | SYH: 0 549 | offset of sym: 0x400 550 | address offset name = 0x0 551 | st_infos = 0x0 552 | st_other = 0x0 - st_shndx = 0 553 | st_value = 0x0 - st_size = 0 554 | 555 | ----------------------------------- 556 | SYH: 1 557 | offset of sym: 0x418 558 | address offset name = 0x269 559 | name: ('mprotect') - offset: 0xc81 560 | st_infos = 0x12 561 | st_other = 0x0 - st_shndx = 0 562 | st_value = 0x0 - st_size = 0 563 | 564 | ----------------------------------- 565 | SYH: 2 566 | offset of sym: 0x430 567 | address offset name = 0xb0 568 | name: ('_Unwind_GetRegionStart') - offset: 0xac8 569 | st_infos = 0x12 570 | st_other = 0x0 - st_shndx = 0 571 | st_value = 0x0 - st_size = 0 572 | 573 | ----------------------------------- 574 | SYH: 3 575 | offset of sym: 0x448 576 | address offset name = 0x2a8 577 | name: ('memset') - offset: 0xcc0 578 | st_infos = 0x12 579 | st_other = 0x0 - st_shndx = 0 580 | st_value = 0x0 - st_size = 0 581 | 582 | ----------------------------------- 583 | SYH: 4 584 | offset of sym: 0x460 585 | address offset name = 0x112 586 | name: ('_Unwind_SetGR') - offset: 0xb2a 587 | st_infos = 0x12 588 | st_other = 0x0 - st_shndx = 0 589 | st_value = 0x0 - st_size = 0 590 | 591 | ----------------------------------- 592 | SYH: 5 593 | offset of sym: 0x478 594 | address offset name = 0x1a0 595 | name: ('mmap64') - offset: 0xbb8 596 | st_infos = 0x12 597 | st_other = 0x0 - st_shndx = 0 598 | st_value = 0x0 - st_size = 0 599 | 600 | ----------------------------------- 601 | SYH: 6 602 | offset of sym: 0x490 603 | address offset name = 0x310 604 | name: ('posix_memalign') - offset: 0xd28 605 | st_infos = 0x12 606 | st_other = 0x0 - st_shndx = 0 607 | st_value = 0x0 - st_size = 0 608 | 609 | ----------------------------------- 610 | SYH: 7 611 | offset of sym: 0x4a8 612 | address offset name = 0x2c3 613 | name: ('close') - offset: 0xcdb 614 | st_infos = 0x12 615 | st_other = 0x0 - st_shndx = 0 616 | st_value = 0x0 - st_size = 0 617 | 618 | ----------------------------------- 619 | SYH: 8 620 | offset of sym: 0x4c0 621 | address offset name = 0x99 622 | name: ('_Unwind_GetDataRelBase') - offset: 0xab1 623 | st_infos = 0x12 624 | st_other = 0x0 - st_shndx = 0 625 | st_value = 0x0 - st_size = 0 626 | 627 | ----------------------------------- 628 | SYH: 9 629 | offset of sym: 0x4d8 630 | address offset name = 0x31f 631 | name: ('abort') - offset: 0xd37 632 | st_infos = 0x12 633 | st_other = 0x0 - st_shndx = 0 634 | st_value = 0x0 - st_size = 0 635 | 636 | ----------------------------------- 637 | SYH: 10 638 | offset of sym: 0x4f0 639 | address offset name = 0x2af 640 | name: ('pthread_setspecific') - offset: 0xcc7 641 | st_infos = 0x12 642 | st_other = 0x0 - st_shndx = 0 643 | st_value = 0x0 - st_size = 0 644 | 645 | ----------------------------------- 646 | SYH: 11 647 | offset of sym: 0x508 648 | address offset name = 0x1d 649 | name: ('__gmon_start__') - offset: 0xa35 650 | st_infos = 0x20 651 | st_other = 0x0 - st_shndx = 0 652 | st_value = 0x0 - st_size = 0 653 | 654 | ----------------------------------- 655 | SYH: 12 656 | offset of sym: 0x520 657 | address offset name = 0x227 658 | name: ('malloc') - offset: 0xc3f 659 | st_infos = 0x12 660 | st_other = 0x0 - st_shndx = 0 661 | st_value = 0x0 - st_size = 0 662 | 663 | ----------------------------------- 664 | SYH: 13 665 | offset of sym: 0x538 666 | address offset name = 0x2d0 667 | name: ('pthread_getattr_np') - offset: 0xce8 668 | st_infos = 0x12 669 | st_other = 0x0 - st_shndx = 0 670 | st_value = 0x0 - st_size = 0 671 | 672 | ----------------------------------- 673 | SYH: 14 674 | offset of sym: 0x550 675 | address offset name = 0xe3 676 | name: ('_Unwind_DeleteException') - offset: 0xafb 677 | st_infos = 0x12 678 | st_other = 0x0 - st_shndx = 0 679 | st_value = 0x0 - st_size = 0 680 | 681 | ----------------------------------- 682 | SYH: 15 683 | offset of sym: 0x568 684 | address offset name = 0x151 685 | name: ('sysconf') - offset: 0xb69 686 | st_infos = 0x12 687 | st_other = 0x0 - st_shndx = 0 688 | st_value = 0x0 - st_size = 0 689 | 690 | ----------------------------------- 691 | SYH: 16 692 | offset of sym: 0x580 693 | address offset name = 0x202 694 | name: ('pthread_attr_destroy') - offset: 0xc1a 695 | st_infos = 0x12 696 | st_other = 0x0 - st_shndx = 0 697 | st_value = 0x0 - st_size = 0 698 | 699 | ----------------------------------- 700 | SYH: 17 701 | offset of sym: 0x598 702 | address offset name = 0x1 703 | name: ('_ITM_deregisterTMCloneTable') - offset: 0xa19 704 | st_infos = 0x20 705 | st_other = 0x0 - st_shndx = 0 706 | st_value = 0x0 - st_size = 0 707 | 708 | ----------------------------------- 709 | SYH: 18 710 | offset of sym: 0x5b0 711 | address offset name = 0x67 712 | name: ('_Unwind_GetLanguageSpecificData') - offset: 0xa7f 713 | st_infos = 0x12 714 | st_other = 0x0 - st_shndx = 0 715 | st_value = 0x0 - st_size = 0 716 | 717 | ----------------------------------- 718 | SYH: 19 719 | offset of sym: 0x5c8 720 | address offset name = 0x159 721 | name: ('free') - offset: 0xb71 722 | st_infos = 0x12 723 | st_other = 0x0 - st_shndx = 0 724 | st_value = 0x0 - st_size = 0 725 | 726 | ----------------------------------- 727 | SYH: 20 728 | offset of sym: 0x5e0 729 | address offset name = 0x1d6 730 | name: ('strlen') - offset: 0xbee 731 | st_infos = 0x12 732 | st_other = 0x0 - st_shndx = 0 733 | st_value = 0x0 - st_size = 0 734 | 735 | ----------------------------------- 736 | SYH: 21 737 | offset of sym: 0x5f8 738 | address offset name = 0x2c 739 | name: ('_ITM_registerTMCloneTable') - offset: 0xa44 740 | st_infos = 0x20 741 | st_other = 0x0 - st_shndx = 0 742 | st_value = 0x0 - st_size = 0 743 | 744 | ----------------------------------- 745 | SYH: 22 746 | offset of sym: 0x610 747 | address offset name = 0x273 748 | name: ('stat64') - offset: 0xc8b 749 | st_infos = 0x12 750 | st_other = 0x0 - st_shndx = 0 751 | st_value = 0x0 - st_size = 0 752 | 753 | ----------------------------------- 754 | SYH: 23 755 | offset of sym: 0x628 756 | address offset name = 0x1a7 757 | name: ('__cxa_thread_atexit_impl') - offset: 0xbbf 758 | st_infos = 0x22 759 | st_other = 0x0 - st_shndx = 0 760 | st_value = 0x0 - st_size = 0 761 | 762 | ----------------------------------- 763 | SYH: 24 764 | offset of sym: 0x640 765 | address offset name = 0xfb 766 | name: ('_Unwind_RaiseException') - offset: 0xb13 767 | st_infos = 0x12 768 | st_other = 0x0 - st_shndx = 0 769 | st_value = 0x0 - st_size = 0 770 | 771 | ----------------------------------- 772 | SYH: 25 773 | offset of sym: 0x658 774 | address offset name = 0x181 775 | name: ('realpath') - offset: 0xb99 776 | st_infos = 0x12 777 | st_other = 0x0 - st_shndx = 0 778 | st_value = 0x0 - st_size = 0 779 | 780 | ----------------------------------- 781 | SYH: 26 782 | offset of sym: 0x670 783 | address offset name = 0x332 784 | name: ('__tls_get_addr') - offset: 0xd4a 785 | st_infos = 0x12 786 | st_other = 0x0 - st_shndx = 0 787 | st_value = 0x0 - st_size = 0 788 | 789 | ----------------------------------- 790 | SYH: 27 791 | offset of sym: 0x688 792 | address offset name = 0x240 793 | name: ('pthread_key_create') - offset: 0xc58 794 | st_infos = 0x12 795 | st_other = 0x0 - st_shndx = 0 796 | st_value = 0x0 - st_size = 0 797 | 798 | ----------------------------------- 799 | SYH: 28 800 | offset of sym: 0x6a0 801 | address offset name = 0x308 802 | name: ('syscall') - offset: 0xd20 803 | st_infos = 0x12 804 | st_other = 0x0 - st_shndx = 0 805 | st_value = 0x0 - st_size = 0 806 | 807 | ----------------------------------- 808 | SYH: 29 809 | offset of sym: 0x6b8 810 | address offset name = 0xd5 811 | name: ('_Unwind_GetIP') - offset: 0xaed 812 | st_infos = 0x12 813 | st_other = 0x0 - st_shndx = 0 814 | st_value = 0x0 - st_size = 0 815 | 816 | ----------------------------------- 817 | SYH: 30 818 | offset of sym: 0x6d0 819 | address offset name = 0x55 820 | name: ('_Unwind_Backtrace') - offset: 0xa6d 821 | st_infos = 0x12 822 | st_other = 0x0 - st_shndx = 0 823 | st_value = 0x0 - st_size = 0 824 | 825 | ----------------------------------- 826 | SYH: 31 827 | offset of sym: 0x6e8 828 | address offset name = 0x164 829 | name: ('pthread_self') - offset: 0xb7c 830 | st_infos = 0x12 831 | st_other = 0x0 - st_shndx = 0 832 | st_value = 0x0 - st_size = 0 833 | 834 | ----------------------------------- 835 | SYH: 32 836 | offset of sym: 0x700 837 | address offset name = 0x1c0 838 | name: ('poll') - offset: 0xbd8 839 | st_infos = 0x12 840 | st_other = 0x0 - st_shndx = 0 841 | st_value = 0x0 - st_size = 0 842 | 843 | ----------------------------------- 844 | SYH: 33 845 | offset of sym: 0x718 846 | address offset name = 0x18a 847 | name: ('open64') - offset: 0xba2 848 | st_infos = 0x12 849 | st_other = 0x0 - st_shndx = 0 850 | st_value = 0x0 - st_size = 0 851 | 852 | ----------------------------------- 853 | SYH: 34 854 | offset of sym: 0x730 855 | address offset name = 0x171 856 | name: ('sigaction') - offset: 0xb89 857 | st_infos = 0x12 858 | st_other = 0x0 - st_shndx = 0 859 | st_value = 0x0 - st_size = 0 860 | 861 | ----------------------------------- 862 | SYH: 35 863 | offset of sym: 0x748 864 | address offset name = 0x272 865 | name: ('fstat64') - offset: 0xc8a 866 | st_infos = 0x12 867 | st_other = 0x0 - st_shndx = 0 868 | st_value = 0x0 - st_size = 0 869 | 870 | ----------------------------------- 871 | SYH: 36 872 | offset of sym: 0x760 873 | address offset name = 0x289 874 | name: ('bcmp') - offset: 0xca1 875 | st_infos = 0x12 876 | st_other = 0x0 - st_shndx = 0 877 | st_value = 0x0 - st_size = 0 878 | 879 | ----------------------------------- 880 | SYH: 37 881 | offset of sym: 0x778 882 | address offset name = 0x253 883 | name: ('pthread_attr_getstack') - offset: 0xc6b 884 | st_infos = 0x12 885 | st_other = 0x0 - st_shndx = 0 886 | st_value = 0x0 - st_size = 0 887 | 888 | ----------------------------------- 889 | SYH: 38 890 | offset of sym: 0x790 891 | address offset name = 0x32a 892 | name: ('memrchr') - offset: 0xd42 893 | st_infos = 0x12 894 | st_other = 0x0 - st_shndx = 0 895 | st_value = 0x0 - st_size = 0 896 | 897 | ----------------------------------- 898 | SYH: 39 899 | offset of sym: 0x7a8 900 | address offset name = 0x1f1 901 | name: ('readlink') - offset: 0xc09 902 | st_infos = 0x12 903 | st_other = 0x0 - st_shndx = 0 904 | st_value = 0x0 - st_size = 0 905 | 906 | ----------------------------------- 907 | SYH: 40 908 | offset of sym: 0x7c0 909 | address offset name = 0x2c9 910 | name: ('signal') - offset: 0xce1 911 | st_infos = 0x12 912 | st_other = 0x0 - st_shndx = 0 913 | st_value = 0x0 - st_size = 0 914 | 915 | ----------------------------------- 916 | SYH: 41 917 | offset of sym: 0x7d8 918 | address offset name = 0x198 919 | name: ('memmove') - offset: 0xbb0 920 | st_infos = 0x12 921 | st_other = 0x0 - st_shndx = 0 922 | st_value = 0x0 - st_size = 0 923 | 924 | ----------------------------------- 925 | SYH: 42 926 | offset of sym: 0x7f0 927 | address offset name = 0x28e 928 | name: ('getenv') - offset: 0xca6 929 | st_infos = 0x12 930 | st_other = 0x0 - st_shndx = 0 931 | st_value = 0x0 - st_size = 0 932 | 933 | ----------------------------------- 934 | SYH: 43 935 | offset of sym: 0x808 936 | address offset name = 0x87 937 | name: ('_Unwind_GetIPInfo') - offset: 0xa9f 938 | st_infos = 0x12 939 | st_other = 0x0 - st_shndx = 0 940 | st_value = 0x0 - st_size = 0 941 | 942 | ----------------------------------- 943 | SYH: 44 944 | offset of sym: 0x820 945 | address offset name = 0x217 946 | name: ('dl_iterate_phdr') - offset: 0xc2f 947 | st_infos = 0x12 948 | st_other = 0x0 - st_shndx = 0 949 | st_value = 0x0 - st_size = 0 950 | 951 | ----------------------------------- 952 | SYH: 45 953 | offset of sym: 0x838 954 | address offset name = 0x2f1 955 | name: ('__errno_location') - offset: 0xd09 956 | st_infos = 0x12 957 | st_other = 0x0 - st_shndx = 0 958 | st_value = 0x0 - st_size = 0 959 | 960 | ----------------------------------- 961 | SYH: 46 962 | offset of sym: 0x850 963 | address offset name = 0x13e 964 | name: ('pthread_key_delete') - offset: 0xb56 965 | st_infos = 0x12 966 | st_other = 0x0 - st_shndx = 0 967 | st_value = 0x0 - st_size = 0 968 | 969 | ----------------------------------- 970 | SYH: 47 971 | offset of sym: 0x868 972 | address offset name = 0x2ea 973 | name: ('getcwd') - offset: 0xd02 974 | st_infos = 0x12 975 | st_other = 0x0 - st_shndx = 0 976 | st_value = 0x0 - st_size = 0 977 | 978 | ----------------------------------- 979 | SYH: 48 980 | offset of sym: 0x880 981 | address offset name = 0x1dd 982 | name: ('pthread_getspecific') - offset: 0xbf5 983 | st_infos = 0x12 984 | st_other = 0x0 - st_shndx = 0 985 | st_value = 0x0 - st_size = 0 986 | 987 | ----------------------------------- 988 | SYH: 49 989 | offset of sym: 0x898 990 | address offset name = 0x295 991 | name: ('calloc') - offset: 0xcad 992 | st_infos = 0x12 993 | st_other = 0x0 - st_shndx = 0 994 | st_value = 0x0 - st_size = 0 995 | 996 | ----------------------------------- 997 | SYH: 50 998 | offset of sym: 0x8b0 999 | address offset name = 0x191 1000 | name: ('munmap') - offset: 0xba9 1001 | st_infos = 0x12 1002 | st_other = 0x0 - st_shndx = 0 1003 | st_value = 0x0 - st_size = 0 1004 | 1005 | ----------------------------------- 1006 | SYH: 51 1007 | offset of sym: 0x8c8 1008 | address offset name = 0x1c5 1009 | name: ('__xpg_strerror_r') - offset: 0xbdd 1010 | st_infos = 0x12 1011 | st_other = 0x0 - st_shndx = 0 1012 | st_value = 0x0 - st_size = 0 1013 | 1014 | ----------------------------------- 1015 | SYH: 52 1016 | offset of sym: 0x8e0 1017 | address offset name = 0x137 1018 | name: ('writev') - offset: 0xb4f 1019 | st_infos = 0x12 1020 | st_other = 0x0 - st_shndx = 0 1021 | st_value = 0x0 - st_size = 0 1022 | 1023 | ----------------------------------- 1024 | SYH: 53 1025 | offset of sym: 0x8f8 1026 | address offset name = 0x120 1027 | name: ('_Unwind_GetTextRelBase') - offset: 0xb38 1028 | st_infos = 0x12 1029 | st_other = 0x0 - st_shndx = 0 1030 | st_value = 0x0 - st_size = 0 1031 | 1032 | ----------------------------------- 1033 | SYH: 54 1034 | offset of sym: 0x910 1035 | address offset name = 0x1fa 1036 | name: ('realloc') - offset: 0xc12 1037 | st_infos = 0x12 1038 | st_other = 0x0 - st_shndx = 0 1039 | st_value = 0x0 - st_size = 0 1040 | 1041 | ----------------------------------- 1042 | SYH: 55 1043 | offset of sym: 0x928 1044 | address offset name = 0x22e 1045 | name: ('__libc_start_main') - offset: 0xc46 1046 | st_infos = 0x12 1047 | st_other = 0x0 - st_shndx = 0 1048 | st_value = 0x0 - st_size = 0 1049 | 1050 | ----------------------------------- 1051 | SYH: 56 1052 | offset of sym: 0x940 1053 | address offset name = 0x302 1054 | name: ('write') - offset: 0xd1a 1055 | st_infos = 0x12 1056 | st_other = 0x0 - st_shndx = 0 1057 | st_value = 0x0 - st_size = 0 1058 | 1059 | ----------------------------------- 1060 | SYH: 57 1061 | offset of sym: 0x958 1062 | address offset name = 0x15e 1063 | name: ('statx') - offset: 0xb76 1064 | st_infos = 0x22 1065 | st_other = 0x0 - st_shndx = 0 1066 | st_value = 0x0 - st_size = 0 1067 | 1068 | ----------------------------------- 1069 | SYH: 58 1070 | offset of sym: 0x970 1071 | address offset name = 0x46 1072 | name: ('_Unwind_Resume') - offset: 0xa5e 1073 | st_infos = 0x12 1074 | st_other = 0x0 - st_shndx = 0 1075 | st_value = 0x0 - st_size = 0 1076 | 1077 | ----------------------------------- 1078 | SYH: 59 1079 | offset of sym: 0x988 1080 | address offset name = 0x29c 1081 | name: ('sigaltstack') - offset: 0xcb4 1082 | st_infos = 0x12 1083 | st_other = 0x0 - st_shndx = 0 1084 | st_value = 0x0 - st_size = 0 1085 | 1086 | ----------------------------------- 1087 | SYH: 60 1088 | offset of sym: 0x9a0 1089 | address offset name = 0x2e3 1090 | name: ('memcpy') - offset: 0xcfb 1091 | st_infos = 0x12 1092 | st_other = 0x0 - st_shndx = 0 1093 | st_value = 0x0 - st_size = 0 1094 | 1095 | ----------------------------------- 1096 | SYH: 61 1097 | offset of sym: 0x9b8 1098 | address offset name = 0x17b 1099 | name: ('fcntl') - offset: 0xb93 1100 | st_infos = 0x12 1101 | st_other = 0x0 - st_shndx = 0 1102 | st_value = 0x0 - st_size = 0 1103 | 1104 | ----------------------------------- 1105 | SYH: 62 1106 | offset of sym: 0x9d0 1107 | address offset name = 0x325 1108 | name: ('mmap') - offset: 0xd3d 1109 | st_infos = 0x12 1110 | st_other = 0x0 - st_shndx = 0 1111 | st_value = 0x0 - st_size = 0 1112 | 1113 | ----------------------------------- 1114 | SYH: 63 1115 | offset of sym: 0x9e8 1116 | address offset name = 0xc7 1117 | name: ('_Unwind_SetIP') - offset: 0xadf 1118 | st_infos = 0x12 1119 | st_other = 0x0 - st_shndx = 0 1120 | st_value = 0x0 - st_size = 0 1121 | 1122 | ----------------------------------- 1123 | SYH: 64 1124 | offset of sym: 0xa00 1125 | address offset name = 0x27a 1126 | name: ('__cxa_finalize') - offset: 0xc92 1127 | st_infos = 0x22 1128 | st_other = 0x0 - st_shndx = 0 1129 | st_value = 0x0 - st_size = 0 1130 | ``` 1131 | --------------------------------------------------------------------------------