Hacking CTR-Heap-Mapper: Mapping your games' memory made simple

  • Thread starter Thread starter Zetta_D
  • Start date Start date
  • Views Views 820
  • Replies Replies 4
  • Likes Likes 3

Zetta_D

Well-Known Member
Member
Joined
Jun 25, 2019
Messages
142
Reaction score
129
Trophies
1
Age
23
Location
France
XP
743
Country
France
CTR-Heap-Mapper
Mapping your games' memory made simple

ctr-heap-mapper.jpg

Hi everyone!

I'm releasing CTR-Heap-Mapper, a tool designed to help you visualize and understand the ExpHeap structure - the standard memory allocator used by most 3DS games - in a clean and interactive way.

🔍 Why use this for Cheating or RE?
Map your game's memory for better and more stable cheat codes!

Most modern 3DS games don't just store data at fixed addresses; they use "Heaps" to manage memory dynamically.

For those new to this: Every time a game executes a malloc/free or new/delete command, a MemoryBlock is allocated or released within these Heaps. By mapping them, you can:
  • Find Pointers Easily: Visualize exactly where a heap starts and ends.
  • Understand Allocations: Identify which blocks are currently in use by the game engine.
  • Debug Crashes: Spot memory leaks or corruption by inspecting block headers.
  • Hex Integration: Jump directly to the raw memory of any specific block with a single click.

🚀 Features:
  • Recursive Parsing: Automatically maps the entire hierarchy of Parent heaps, Siblings, and SubHeaps.
  • Detailed Metadata: Displays block size, alignment, and signatures (Used: DU / Free: RF).
  • Multi-Region Support: Works with full RAM dumps (.bin) from CTRPluginFramework (Gateway format).
  • Examples Included: Test it immediately with the provided dumps from Ice Station Z and Inazuma Eleven Go Galaxy.

đź”— Download & Source:
GitHub Repository: https://github.com/David-Darras/ctr-heap-mapper
Latest Release (Download .zip): Click here

If you find a heap that doesn't parse correctly or if you have a feature request, feel free to let me know here or on GitHub.


 
Last edited by Zetta_D,
Just a quick heads-up: I've just pushed an update to CTR-Heap-Mapper.

Version v1.1.0 adds full support for the specific heap management used in Pokémon Gen 6/7 (XY/ORAS/SM/USUM). Instead of looking for a raw ExpHeap at 0x08000000, it now correctly traverses the 560-entry table to find all active heaps.
 
  • Like
Reactions: False_Hope
Could anyone help me with using this ? I dumped my game than proceed to check the dumps but i don't understand how to find the pointer 🥲
For me, the best way to find a pointer is to use a breakpoint with IDA Pro. My tool helps you see how the developers structured and allocated memory. From there, you can often identify useful pointers - for example, by taking the start address of a memory block and searching for it in your dump.

Also, my software only supports memory dumps created with Gateways RAM Dump Tool from CTRPF, so make sure your dumps come from that format.

Alternatively, you can use GatewaysRAMTools + PointerSearcher SE, but it’s much more time-consuming since it requires multiple memory dumps and a lot of trial and error.
 

Site & Scene News

Popular threads in this forum