Source code recovery vs binary analysis
Source code recovery tries to reconstruct readable program code or project artifacts. Binary analysis explains the structure and behaviour of a compiled application. They can overlap, but they produce different evidence and deliverables. Start with your file format and the question you need answered before requesting a recovery service.
Published by TNKRE.DEV · Updated
Three operations that are often confused
Unpacking extracts material from a container or packaged executable. It can recover files and resources without translating their code. Decompilation attempts to express compiled instructions or bytecode in a readable higher-level form. Analysis uses static inspection and, where appropriate, runtime observation to answer a question about what the program does.
These operations are not interchangeable. Successfully extracting an archive does not prove its modules can be decompiled. A decompiler producing a file does not prove the output runs correctly. An accurate explanation of a native function can be valuable even when recreating the original project is impractical.
The packaging format changes the outcome
PyInstaller is a packaging system. Its documentation describes how it collects the application and dependencies and distinguishes bundled bytecode from the original source. A package may also contain native extensions or code protected by another tool. For that reason, identifying the outer packager is only the first step.
PyArmor applies protection to Python code and uses a runtime component. Its presence changes the work required to understand protected modules. Version, protection settings and the ability to run the sample affect feasibility. Treat statements about a specific successful sample as sample-specific evidence.
Nuitka follows a compilation path that creates native code. A Nuitka executable should not be assumed to contain the same recoverable Python bytecode as a PyInstaller package. Go and Rust also compile to native code; optimization can merge, inline or eliminate source constructs. Symbols and metadata help interpretation where present, but do not restore discarded source information.
Compare the deliverables
For packaged Python, ask whether the output is an extracted archive, readable modules or a reconstructed project with dependencies. For native programs, ask which routines or behaviours will be analyzed and how the evidence will be documented. For mobile applications, specify whether the target is DEX, a native shared library or an iOS Mach-O executable.
The comparison below describes typical starting points. It does not predict the result for an unexamined application. A mixed package can require more than one method, and some original information may be absent from every shipped file.
Scroll horizontally to compare all three columns.
| Artifact | Method | Possible output |
|---|---|---|
| PyInstaller package | Archive extraction and bytecode review | Modules, resources, readable reconstruction where supported |
| PyArmor-protected Python | Protection and runtime assessment | Sample-specific recovery or a documented limitation |
| Nuitka / Go / Rust | Native code and behaviour analysis | Evidence, metadata and an analysis report |
| APK / AAB / IPA | Platform-aware static and runtime review | App findings, extracted artifacts or reconstructed components |
Define a useful acceptance check
A vague request to recover everything is difficult to verify. A clearer requirement might be to locate the configuration parser, reconstruct a selected module or explain why an application rejects a particular test input. Each goal leads to a different scope, test environment and handover.
For recovered code, agree what must import or run, which test cases matter and how unavailable dependencies will be handled. For an audit report, require artifact identification, observation steps, relevant excerpts and stated limitations. If a patched binary is requested, define the supported environment and the behaviour that must be preserved.
Comments, formatting, repository history and exact local variable names may not survive compilation. A readable reconstruction should be labelled as such. Keep original artifacts and distinguish copied bytes from inferred code so later investigators can assess how a conclusion was reached.
Which service is the right starting point?
Choose Python source recovery when the objective concerns packaged Python modules or PyArmor-protected code. Choose a native binary security audit for Nuitka, Go or Rust executables, particularly when the question concerns control flow, metadata or runtime behaviour. Choose mobile application security analysis for an APK, AAB or IPA whose platform context affects the work.
If the format is unknown, describe the file and the outcome you need. An initial assessment can establish the relevant method and limits before a larger engagement. Do not infer a fixed success rate, price or delivery date from the name of the compiler or protector alone.
Prepare the inquiry without exposing secrets
Provide the platform, architecture, application version, known packaging details and a minimal description of normal behaviour. Include authorization and any constraints on execution or network access. Use test data rather than customer records or production credentials.
Before sending a sensitive binary, agree how it will be transferred, what may be executed, who receives the outputs and the expected retention or deletion conditions. Telegram is the contact route published by TNKRE.DEV; an ordinary Telegram conversation should not be described as automatically end-to-end encrypted. Agree an appropriate transfer channel for the material involved.
Sources and further reading
These references explain the technologies. They do not certify or endorse TNKRE.DEV.