〽️
Pattern Language
Home
  • Pattern Language
  • Core Language
    • Data Types
    • Variable Placement
    • Namespaces
    • Expressions
    • Functions
    • Control flow
    • In / Out Variables
    • Attributes
    • Preprocessor
    • Importing Modules
    • Comments
    • Sections
  • Libraries
    • hex
      • provider
      • core
      • http
      • dec
      • mangled
      • encstr
      • instruction
      • json
    • std
      • array
      • limits
      • random
      • file
      • core
      • ptr
      • mem
      • math
      • hash
      • fxpt
      • sys
      • io
      • time
      • string
      • attrs
      • ctype
      • bit
    • type
      • mac
      • ip
      • byte
      • path
      • size
      • base
      • guid
      • float16
      • bcd
      • leb128
      • time
      • fmt
      • color
      • c
      • win32
      • 010
      • linux
      • rust
      • base64
      • magic
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. Core Language

Sections

Sections are a way to create additional buffers of data whose content can be generated dynamically.

The following code creates a new section named “My Section” and then creates a buffer of 0x100 bytes in that section. The buffer is then filled with data.

At the end, it shows it is possible to place additional patterns inside the section to decode the data in it.

#include <std/mem.pat>

std::mem::Section mySection = std::mem::create_section("My Section");

u8 sectionData[0x100] @ 0x00 in mySection;

sectionData[0] = 0xAA;
sectionData[1] = 0xBB;
sectionData[2] = 0xCC;
sectionData[3] = 0xDD;

sectionData[0xFF] = 0x00;

u32 value @ 0x00 in mySection;

This is mainly useful for analyzing data that needs to be generated at runtime such as compressed, encrypted or otherwise transformed data.

Last updated 2 years ago

Was this helpful?