• Actively debug software and troubleshoot issues with software crashes and programmatic flow
  • Provide written reports, proof-of-concept code, prototypes, and hands-on demonstrations of reverse engineering and vulnerability analysis results, and
  • Provide/author and participate in technical presentations on assigned projects
    • Bachelor’s Degree in Computer Science or related field, or minimum two (2) years experience in computer science, information systems, or network engineering
    • Minimum two (2) years experience programming in Assembly, C, C#, C++, Perl, or Python
    • Minimum two (2) years demonstrated experience in either hardware or software reverse engineering

    Desired Skills

    • Experience programming in Assembly, C, C#, C++, Perl, or Python with a focus on an understanding of system interactions with these libraries vs. production-style environments
    • Use of Unix/Windows system API’s
    • Understanding of virtual function tables in C++
    • Heap allocation strategies and protections
    • Experience with very large software projects a plus
    • Kernel programming experience (WDK / Unix||Linux) a significant plus
    • Hardware/Software reverse engineering, which often includes the use of tools (e.g., IDA Pro, Ghidra, Binary Ninja) to identify abstract concepts about the code flow of an application.
    • For Hardware reverse engineering, candidates expected to have performed analysis of embedded devices, focusing primarily on identifying the software stack and points of entry to the hardware (e.g. not interested in FPGA reverse engineering, or other circuit reverse engineering).
    • Candidates who can merge low-level knowledge about the compilation of C/C++ code with a nuanced understanding of system design to identify and exploit common vulnerability patterns. Candidates should be comfortable with, at a minimum, user-mode stack-based buffer overflows, and heap-based exploitation strategies.
    •  TS/SCI FSP clearance is required.