Design draft for Low Level Obfuscation Intermediate File Format
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
_xeroxz 549b4249bd
Update README.md
4 years ago
README.md Update README.md 4 years ago

README.md

LLOIFF - Low Level Obfuscation Intermediate File Format

LLOIFF is an intermediate file format which exists only in memory. This format is generated by stage 1 of LLO. The design of this intermediate file format must be robust enough that it can handle file formats of all types lifted to it. For example, PE-COFF (COFF meaning: including OBJ files), ELF, etc.

There can be multiple LLOIFF's at a given time, just as there can be multiple OBJ files in a LIB.

What LLOIFF Needs To Provide

LLOIFF needs to provide a clean C++2017 interfacable class that contains all information possible about a given file. This information includes: symbols, sections, original file, size, virtual size, etc...

LLOIFF Symbol Class

The LLOIFF symbol class is the base class for all symbol types. Such information as the original rva, symbol size, and symbol hash with setters and getters must be made. Something along these lines:

namespace llo::iff
{
    using hash_t = std::uint64_t;

    class rva_t
    {
        public:
            rva_t();
            rva_t(hash_t section_hash, std::uint32_t section_offset);

        // ... fancy c++ stuff here like override's and such
    };

    class symbol_base_t
    {
        public:
            symbol_base_t();
            symbol_base_t(
                const std::string& name, 
                hash_t hash, 
                rva_t rva_data
            );

            virtual std::size_t get_size() const;
            virtual rva_t& get_rva() const;
            virtual hash_t get_hash() const;
        // ... fancy c++ stuff here like override's and such
    };
}