Hacking Development of new Wii U RAM Debugger

  • Thread starter Thread starter BullyWiiPlaza
  • Start date Start date
  • Views Views 25,312
  • Replies Replies 80
  • Likes Likes 22

BullyWiiPlaza

Nintendo Hacking <3
Member
Joined
Aug 2, 2014
Messages
1,932
Reaction score
1,584
Trophies
0
XP
2,522
Country
Germany
Hey community,

I was just wondering who would be interested in a new Wii U RAM debugging tool similar to TCP Gecko.NET but improved and actively maintained? TCP Gecko.NET has many broken features, bugs and messy source code so it's pretty bad. Don't we need some good RAM debugger that works well with new useful features and never crashes?

Since this is a massive project, it is not just done in a day therefore I'm also asking who would be interested to do active development. The programming language used will be Java because it's a great language with a lot of tool and code analysis support as well as being fully platform independent. Also I did some development in it already.

I already have an (unreleased) Java library for reading and writing the Wii U memory which works great so this is what we could built upon:
859wh24a.png
The example code connects to the Wii U using its IP address, dumps 0x100 bytes of memory starting at address 0x10000000 and stores it to the file "Dumped.bin" in the same directory. Then the file is opened by the systems default Hex Editor (e.g. HxD) and then the connection to the Wii U is closed. Easy right?

I'm aware that a Python Gecko client exists but again, it's about as far in development as me so it doesn't really influence the language decision. My library on the other hand is more complete in terms of supporting reading and writing of various data types such as booleans, integers, shorts, bytes, floats and even Strings. It can dump memory, search for an integer and follow pointers of any depth.

Your programming experience should be 2 years at least if you want to be able to help.

I suggest using IntelliJ IDEA as development environment, Maven as build system and Github as host/version control system.

For this project to be possible, I need about 3 other skilled people since I don't have a lot of free time to spend doing this so it's impossible to do for me alone. Let me know. :)

Just tagging some people that probably meet the requirements and are willing to help according to some search results on the Wii U section they have something to do with Java lol:

@Maschell
@gudenaurock
@Growlith1223
@Elliander

EDIT:
I made a GitHub repository for the project. Check it out here.

hm5f3snd.png
 
Last edited by BullyWiiPlaza,
I have a fairly functional library for TCPGecko, it should support all functions in TCPGecko. I use it in my colorizer, but it is not public because of my inability to test it...

Edit:
Mine suports strings, all primitive datatypes and byte arrays/bytebuffers iirc. ;-)

Edit 2:
I don't have to much time myself, but I'll help with it as much as I can. If you want, you could use my WIP launcher to manage the ClassPath and libraries. (The same one my collorizer uses)
 
Last edited by gudenau,
I'd mostly like a more reliable way to get the filesystem tree for a game, in some games performing a FSA read without freezing is hard or impossible.
 
  • Like
Reactions: BullyWiiPlaza
I'd like a reliable to be able to read/write to the Wii U memory that works on 5.4.0 lol. Cafiine crashes more often than not, and TCP Gecko dotNET just doesn't like me.
 
  • Like
Reactions: BullyWiiPlaza
Since I'm on 5.5.1 I cant really test a lot of these features, but I can still help you out in one thing or another (like code proof reading and looking for logical errors or writing some stuff in java)
 
  • Like
Reactions: BullyWiiPlaza
I'd like a reliable to be able to read/write to the Wii U memory that works on 5.4.0 lol.
That's what this project could do for you. My library is very stable unlike TCP Gecko.NET for most people or everyone and it probably works on all firmwares since it only needs pyGecko installed and running on the Wii U.
I have a fairly functional library for TCPGecko, it should support all functions in TCPGecko.
I looked at your code and it's amazing, good job! You got a lot more stuff than me. I guess we got enough people to tackle this project. Maschell may also help here and there :P
Edit 2:
I don't have to much time myself, but I'll help with it as much as I can. If you want, you could use my WIP launcher to manage the ClassPath and libraries. (The same one my collorizer uses)
Interesting but I don't quite get the point of it :unsure:

In like 2 weeks I have time to start doing something for this project but not earlier though but great to hear some people really are interested. :lol:
 
Last edited by BullyWiiPlaza,
  • Like
Reactions: eco95
That's what this project could do for you. My library is very stable unlike TCP Gecko.NET for most people or everyone and it probably works on all firmwares since it only needs pyGecko installed and running on the Wii U.
Yeah. I was looking at the source code for TCP Gecko dotNET and while I can understand at least part of it (The commenting is very few and far between...) I can't really improve upon it. I'd love to help you, but my knowledge of Java is rather limited to basics on the command line and not much else.
 
  • Like
Reactions: BullyWiiPlaza
Just a recommendation, you'll find dumping goes a lot faster if you dump them to sd card. If you attach your gecko client to loadiine such as what I did, your gecko client can actually write to SD card. my personal version dumps to SD card and it flys for doing dumping. So when you do your re-write, you might want to add that funcionality to it.

--------------------- MERGED ---------------------------

Just a recommendation, you'll find dumping goes a lot faster if you dump them to sd card. If you attach your gecko client to loadiine such as what I did, your gecko client can actually write to SD card. my personal version dumps to SD card and it flys for doing dumping. So when you do your re-write, you might want to add that funcionality to it.

Also zlib compression is a good trade for undefined searches, if you modify the codehandler, I've found that the Wii U handles 0x4000 zlib compression to be pretty good and it makes your transfers about 40% faster....you can also add some co-routines or mulit-processor functions to increase the speed. If you do it right, your codehandler could be much much more efficient and like up to 70% faster. I've played with it a little bit and its on my to do list but WAY WAY down on the list.
 
I'd mostly like a more reliable way to get the filesystem tree for a game, in some games performing a FSA read without freezing is hard or impossible.
Part of my wip library.

That's what this project could do for you. My library is very stable unlike TCP Gecko.NET for most people or everyone and it probably works on all firmwares since it only needs pyGecko installed and running on the Wii U.

I looked at your code and it's amazing, good job! You got a lot more stuff than me. I guess we got enough people to tackle this project. Maschell may also help here and there :P

Interesting but I don't quite get the point of it :unsure:

In like 2 weeks I have time to start doing something for this project but not earlier though but great to hear some people really are interested. :lol:
Thanks, that means a lot to me. I look at my code and I can not help but to think it sucks. :-)
 
Just a recommendation, you'll find dumping goes a lot faster if you dump them to sd card. If you attach your gecko client to loadiine such as what I did, your gecko client can actually write to SD card. my personal version dumps to SD card and it flys for doing dumping. So when you do your re-write, you might want to add that funcionality to it.

--------------------- MERGED ---------------------------



Also zlib compression is a good trade for undefined searches, if you modify the codehandler, I've found that the Wii U handles 0x4000 zlib compression to be pretty good and it makes your transfers about 40% faster....you can also add some co-routines or mulit-processor functions to increase the speed. If you do it right, your codehandler could be much much more efficient and like up to 70% faster. I've played with it a little bit and its on my to do list but WAY WAY down on the list.
There is some very simple compression in there already. If I get kernel I will try doing some compression myself.
 
tried the last version from github but the connect is always greyed out :(

is it normal ?

and when i click help i get
java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:759)
at wiiudev.gecko.client.gui.GUIUtils.resourceToString(GUIUtils.java:20)
at wiiudev.gecko.client.gui.ConnectionHelper.displayConnectionHelperMessage(ConnectionHelper.java:13)
at wiiudev.gecko.client.gui.JGeckoUGUI.displayConnectionHelperMessage(JGeckoUGUI.java:683)
at wiiudev.gecko.client.gui.JGeckoUGUI.lambda$configureConnectionTab$19(JGeckoUGUI.java:366)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 
Last edited by FunThomas,

Site & Scene News

Popular threads in this forum