Master the fundamental concepts of binary formats through this focused micro-challenge.
You have read the whole brief, and the concepts above stay free on every task. Writing and running the code needs a plan.
Three hints are available for this task, revealed one at a time inside the code workspace so you can struggle productively before seeing them.
Every task includes starter code, theory, and hidden tests so you can implement and verify locally in the browser.
How it worksThe strip command removes symbol tables and debug information from binaries, reducing file size and making reverse engineering harder. Release builds of commercial software are almost always stripped.
Sections typically stripped:
.symtab and .strtab: Full symbol table.debug_*: All DWARF debug sections.comment: Compiler version stringsSections that must stay:
.dynsym and .dynstr: Dynamic symbols needed at runtime.text, .data, .bss: Program code and dataFor example, stripping a debug build might remove 2 MB of .debug_info while leaving the 50 KB .text section untouched.
You will identify which sections would be removed by a strip operation and calculate the size reduction. Understanding what survives stripping tells you what information reverse engineers still have when analyzing a production binary.
Running strip --strip-debug on a typical C project removes hundreds of kilobytes of DWARF data. Reverse engineers respond by relying on dynamic analysis, pattern matching, and FLIRT signatures when static symbols are gone. Understanding exactly what strip removes helps you assess how much information survives in a production binary you receive during an incident response engagement.
strip removes the sections a program does not need to run. Implement its decision and the size accounting.
A section is stripped when its name is .symtab, .strtab or .comment, or starts with .debug or .zdebug. Everything else is kept. In particular .dynsym and .dynstr stay, because the dynamic linker needs them at run time.
N (0 to 256), then N lines NAME SIZE, with the size in bytes.
cLoading…
Each section line uses the C format " %-16s %llu bytes\n", in input order within its list. An empty list prints (none). The saving is stripped bytes / total bytes with one decimal place, and 0.0% when the total is 0 (New file size: 0 bytes (was 0, saved 0.0%)).