ROM Hack [Plugin NTR]RAM Explorer

Nanquitas

Well-Known Member
OP
Member
Joined
Sep 29, 2015
Messages
2,345
Trophies
0
Age
30
Location
South of France :)
XP
3,336
Country
France
Hello everyone !

I didn't know where to post this. I thought of homebrew development categories first, but it's not really an homebrew, it's more like an utilities. Sorry if it's not in the right place !

I made a plugin for NTR CFW, which allow you to navigate through the memory region used by a process. I made it for studying purpose first, but maybe it can be useful to someone so I share it.

So, you choose a process and you can see all the data stocked in memory. :)

For now, the plugin can only read the memory, you can't change it with my plugin.
Also, it's a home plugin, so you can still have your cheats plugins and it doesn't shutdown the network function. ;)
utmoQMw.jpg
PXn48I1.jpg
bLWVF7Q.jpg
DpooKr4.jpg

Important information:

Version 1.2 bring new features but they were only tested on N3DS. So I don't know how the o3DS will react to this update.
Some of the new features are making conflict with most game as they weren't designed to use the n3DS hid.
Even if I fixed the crash of the 3DS when entering in the plugin while a game / app is running, it seems that it can sometime make the 3DS freeze after a random while (in the plugin only).

So I recommend to always use the plugin in the homemenu ! (Press Home to pause the app currently running)
If not, expect strange behaviors and bugs.

Search mode is not implemented right now !! (In a future update ;) )

Process dumper: It's a little thing i've made as a test first, but maybe it can be useful to someone so I've decided to let it.
It will dump the chosen process into: "SD:/dump/ramdump.bin". Be sure to create the dump folder or you will have an error.

This dumper will read and write from 0x0 to 0x20000000. Theoretically the end file can be used in soft like TempAR for finding pointer (can be useful to cheats creator).
The dumper do not delete the file if previously existed, it'll just write on it, so be careful to export/rename it before doing another dump.

Viewer mode keys:
- UP : top address - 8 (go up);
- DOWN : top address + 8 (go down);
- LEFT : change current memory region, (-1);
- RIGHT : change current memory region, (+1);
- CPAD DOWN : go down quickly;
- CPAD UP : go up quickly;
- C-Stick DOWN / X : go down very very quickly (+= 0x1000);
- C-Stick UP / Y : go up very very quickly(-= 0x1000);
- L + UP : go to the beginning of the current memory region ;
- L + DOWN : go to the end of the current memory region;
- A : refresh (read the memory and print the change);
- B : quit;
- START : Address mode.
- L + R : Edit mode
- R : Pointer mode

Address mode keys:
- UP / DOWN : Change the selected value
- LEFT / RIGHT : Move the selector;
- B : Cancel;
- A : Go to the entered address.

Edit mode keys:
- DPAD / CPAD / C-Stick : move the selector;
- X : Up the selected value;
- Y : Down the selected value;
- B : Cancel;
- START : Write.

Pointer mode keys:
- DPAD / CPAD / C-Stick : move the selector;
- B : Cancel;
- A : Go to the selected value.

Viewer mode keys:
- L + UP : go to the beginning of the current memory region ;
- L + DOWN : go to the end of the current memory region;
- UP : top address - 8 (go up);
- DOWN : top address + 8 (go down);
- LEFT : change current memory region, (-1);
- RIGHT : change current memory region, (+1);
- X : go down quickly;
- Y : go up quickly;
- A : refresh (read the memory and print the change);
- B : quit;
- START : Address mode.
- L + R : Edit mode
- R : Pointer mode

Address mode keys:
- UP / DOWN : Change the selected value
- LEFT / RIGHT : Move the selector;
- B : Cancel;
- A : Go to the entered address.

Edit mode keys:
- UP / DOWN / LEFT / RIGHT : move the selector;
- X : Up the selected value;
- Y : Down the selected value;
- B : Cancel;
- START : Write.

Pointer mode keys:
- UP / DOWN / LEFT / RIGHT: move the selector;
- B : Cancel;
- A : Go to the selected value.

The memory region which have a size <= 0x1000 will not be available. It's cause there was too much of them and most of them if not all are useless.

If you have bugs/suggestions or anything else, feel free to feedback, express yourself ! :)

If you have bugs with edit mode, exemple it doesn't write the change.
Check the following:
- Connect the 3DS to a ntr debugger (Modded or Original);
- Try again to write the change, checkthe debugger, you should have some infos in why it's not working.
If you have no useful infos or if you have bugs with an other function, post it, if i can't help you i'll provide you a full debug version of the plugin.
Code:
- Correcting the progress display on the process dumper, the modification of this function broke the progress bar in the previous version.
Code:
- The memory used by the plugin have been lessened, fixing the fact \
that the plugin was preventing the browser to be launched \
(at least on N3DS, don't know for O3DS)
- Improved the keypad accuracy in address mode and editor mode
- Fix a bug in the Dumper process which was causing a data loss \
(but we now dump / write with a block of 0x4000 instead of 0x10000)
- Changing the way the dumper will write the data:
-- Adding the same header as Gateway's header in the ramdump, allowing \
to write only the region with data  (made without gateway's ramdumps \
to study so can be not exactly the same, but it's working so who care :p)
-- The file will see the size shortened so there is two benefits:
--- The dump is a bit faster
--- The file being lighter, it's faster to send it through FTP
-- To expand the file for using a soft like TempAR and find pointer, use the tool by @xJam.es
Code:
- Fix dynamic memory allocation on o3DS (Thanks to @David Rico for his debug support)
- Do not show memory region with state 0x02 (IO) as they make the 3DS freeze
- Re-implement X & Y key as C-Stick replacement
- Seems that I've corrected the freeze possibility but we need more test, please report if you have freeze using the plugin
- Transformed the progress bar in a touchObject. So you can now navigate in the region through the progress bar. Even if it's not really accurate, it's still faster to go in the middle or else than scrolling.
Code:
- Fix address mode display
- Fix keys which I forgot when i've updated the HID
- Fix B in address mode do not leave the plugin anymore
- Implementation of dynamic memory management
- Fix memory leaks
Code:
- Implement all HID (C-Stick, CPAD, Touchscreen)
- Implement the possibility of writing on the top screen
- Changed key according to the implementation of HID
- Implemented a really basic process dumper (to a file)
- Implemented touchObject;
- Made a lot of change in the code
- Maybe other things I have forgotten about
Code:
- Added a progress bar to see the position in the region
Code:
- Added Edit mode
- Added Pointer mode
- Changed some keys
- Added some fail safe
- Added cancel in Address mode
- Extended the maximum region from 20 to 100
- Can now show 0x1000 length region
- Do not show "free memory " stated region
- Dynamically interpret the memory, less memory used, useful to edit mode
- Other code stuffs and improvements
Initial release

The GW-Ram-Ref is not from me, it's made by @x.Jam.es !!!
The TempAR is not from me, it's made by raing3, original post here !!!
 

Attachments

  • TempAR.zip
    16.4 KB · Views: 1,620
  • GW-Ram-Ref.zip
    76.7 KB · Views: 1,554
  • [Plugin NTR] RAM Explorer [1.2.5 Beta].zip
    51.8 KB · Views: 3,824
Last edited by Nanquitas,

pokemoner2500

Well-Known Member
Member
Joined
Aug 14, 2013
Messages
882
Trophies
1
Age
24
XP
1,592
Country
United States
Hello everyone !

I didn't know where to post this. I thought of homebrew development categories first, but it's not really an homebrew, it's more like an utilities. Sorry if it's not in the right place !

I made a plugin for NTR CFW, which allow you to navigate through the memory region used by a process. I made it for studying purpose first, but maybe it can be useful to someone so I share it.

So, you choose a process and you can see all the data stocked in memory. :)

For now, the plugin can only read the memory, you can't change it with my plugin.
Also, it's a home plugin, so you can still have your cheats plugins and it doesn't shutdown the network function. ;)
utmoQMw.jpg

PXn48I1.jpg

Key:
- L : go to the beginning of the current memory region ;
- R : go to the end of the current memory region;
- UP : top address - 8 (go up);
- DOWN : bottom address + 8 (go down);
- LEFT : change current memory region, (-1);
- RIGHT : change current memory region, (+1);
- X : go down quickly;
- Y : go up quickly;
- A : refresh (read the memory and print the change);
- B : quit;
- START : type an address to go (A to go to the address). If the address is not found in any of the memory region, you'll go to the top of the first memory region.

The memory region which have a size <= 0x1000 will not be available. It's cause there was too much of them and most of them if not all are useless.

If you have bugs/suggestions or anything else, feel free to feedback, express yourself ! :)
If you could change the values this would be a lot more useful, although it may still be nice for some things, can you search for values?
 

Nanquitas

Well-Known Member
OP
Member
Joined
Sep 29, 2015
Messages
2,345
Trophies
0
Age
30
Location
South of France :)
XP
3,336
Country
France
If you could change the values this would be a lot more useful, although it may still be nice for some things, can you search for values?
Yeah, problem is that we don't have access to the full HID (tactile, stick, ZR/ZR aren't available) (nervermind, I found a way to use it), so I'm working on a solution to implement this and to make it easy and quick to use.

So search and write will be implemented in future update. :)
 
Last edited by Nanquitas, , Reason: Changing my opinion
  • Like
Reactions: A_Random_Guy

DesuIsSparta

Well-Known Member
Member
Joined
Oct 13, 2015
Messages
580
Trophies
0
XP
1,037
Country
United States
This is awesome. Keep up the great work, I would love to see an edit function as well as some search functions! Open source a possibility?
 

Nanquitas

Well-Known Member
OP
Member
Joined
Sep 29, 2015
Messages
2,345
Trophies
0
Age
30
Location
South of France :)
XP
3,336
Country
France
Couldn't you use select to edit memory?
Yes but it's a bit more complicated than just trigger the first button. But it's okay, I know how i'll do it. :)

Edit mode will come first, search mode next. ;)

I'm not close to open the sources, but for know i don't want to.
 

Nanquitas

Well-Known Member
OP
Member
Joined
Sep 29, 2015
Messages
2,345
Trophies
0
Age
30
Location
South of France :)
XP
3,336
Country
France
I didn't want to belittle you, i was saying this because edit mode need more input than just one. ;)

The best thing would be to select the byte we want to edit with the touchscreen but it's not possible for now.
But it's okay, i found a way to make it work and keeping it easy to use. Now i'm working on the writing functions.
Should be ready soon. :)
 

Nanquitas

Well-Known Member
OP
Member
Joined
Sep 29, 2015
Messages
2,345
Trophies
0
Age
30
Location
South of France :)
XP
3,336
Country
France
Version 1.1 Beta Released

Code:
- Added Edit mode
- Added Pointer mode
- Change some keys
- Add some fail safe
- Add cancel in Address mode
- Extended the maximum region from 20 to 100
- Can now show 0x1000 length region
- Do not show "free memory " stated region
- Dynamically interpret the memory, less memory used, useful to edit mode
- Other code stuffs and improvements
 

Nanquitas

Well-Known Member
OP
Member
Joined
Sep 29, 2015
Messages
2,345
Trophies
0
Age
30
Location
South of France :)
XP
3,336
Country
France
That's prefect, I will be able to keep working on my stuff in public transports now, I spend too much time on non 3DS stuff at home. Thanks for the >0x1000 regions BTW :)
No problem, i'm glad that you like this. :)

Does this mean I can use cheat.plg with online functionalities intact or simply that I can make cheats with this?
Nope. It mean that this plugin do not shutdown the network but if you load an other plugin which disable the network your network will be disabled.

You have to use cheat.plg that do not disable the network.

Or else, you can remove the cheat.plg from the game directory, and once you're in the game, you write the cheat with the "Editor mode".

This way you can have cheats and online. ;)
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: https://gbatemp.net/profile-posts/163064/