Untitled

 avatar
unknown
plain_text
5 months ago
1.0 kB
3
Indexable
#include <stdio.h>
#include <windows.h>

// Global variables as anchors
int data_var = 42;   // In .data section
char bss_var;        // In .bss section

void get_section_boundaries() {
    MEMORY_BASIC_INFORMATION mbi;

    // .data section
    if (VirtualQuery(&data_var, &mbi, sizeof(mbi))) {
        printf(".data section boundaries:\n");
        printf("  Start: %p\n", mbi.BaseAddress);
        printf("  End:   %p\n", (char*)mbi.BaseAddress + mbi.RegionSize);
    } else {
        printf("Failed to retrieve .data section boundaries.\n");
    }

    // .bss section
    if (VirtualQuery(&bss_var, &mbi, sizeof(mbi))) {
        printf(".bss section boundaries:\n");
        printf("  Start: %p\n", mbi.BaseAddress);
        printf("  End:   %p\n", (char*)mbi.BaseAddress + mbi.RegionSize);
    } else {
        printf("Failed to retrieve .bss section boundaries.\n");
    }
}

int main() {
    printf("Detecting memory sections in MinGW (32-bit)...\n");
    get_section_boundaries();
    return 0;
}
Editor is loading...
Leave a Comment