Reverse engineering

Understand
the systems
you depend on.

When source code, documentation, or vendor support is unavailable, software can become a barrier to change. We analyze compiled applications, file formats, and protocols to recover system knowledge and establish options for integration, maintenance, or replacement.

  • BINARIES
  • PROTOCOLS
  • FILE FORMATS
  • LEGACY SYSTEMS
  • CONTROL FLOW
  • WIRE FORMATS
  • DATA STRUCTURES
  • RUNTIME BEHAVIOR
Reverse engineering

Specialist analysis.
Practical outcomes.

Our reverse engineering work addresses systems that are difficult to explain, reproduce, or modify. Deliverables can include documented behavior, interface specifications, compatible tooling, and recovered source where feasible.

01 /

Binary & behavior analysis

DISASSEMBLY / CONTROL FLOW / RUNTIME BEHAVIOR

Investigate unsupported logistics libraries when the original vendor is gone and updates are no longer available. We analyze compiled code and runtime behavior to identify defects and develop fixes or patches, including changes for concurrency problems. In one investigation, serializing access to a component resolved crashes caused by concurrent calls.

02 /

Protocols & interoperability

WIRE FORMATS / DATA STRUCTURES / INTEGRATION

Document interfaces and data formats to enable reliable exchange between systems. Our work includes EDI and XML partner feeds, proprietary file formats, and devices with undocumented protocols.

03 /

Legacy system understanding

DEPENDENCY MAPPING / RECOVERY / MODERNIZATION

Establish the business rules and dependencies embedded in existing software before modernization begins. Our experience includes reconstructing a product from an Access database and legacy ASP pages, and migrating COBOL reporting to a web platform.

Discuss your project

Let’s discuss
your requirements.

Tell us what you need to accomplish and which systems are involved. We begin with a discussion of your objectives and constraints, then identify the information, access, and discovery work needed to define the next step.