More actions
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. ;)
Spoiler: Viewer mode
Spoiler: Address
Spoiler: Edit mode
Spoiler: Pointer mode
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.
Spoiler: Version < 1.2 Keys
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 ! :)
Spoiler: Bugs
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.
Spoiler: Changelog
Spoiler: V. 1.2.5 Beta
Code:
- Correcting the progress display on the process dumper, the modification of this function broke the progress bar in the previous version.
Spoiler: V. 1.2.4 Beta
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
Spoiler: V. 1.2.3 Beta
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.
Spoiler: V. 1.2.1 Beta
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
Spoiler: V. 1.2 Beta
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
Spoiler: V. 1.1.1 Beta
Code:
- Added a progress bar to see the position in the region
Spoiler: V. 1.1 Beta
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
Spoiler: V. 1
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 !!!