Hacking Development of new Wii U RAM Debugger

BullyWiiPlaza

Nintendo Hacking <3
OP
Member
Joined
Aug 2, 2014
Messages
1,932
Trophies
0
XP
2,467
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,

gudenau

Largely ignored
Member
Joined
Jul 7, 2010
Messages
3,882
Trophies
2
Location
/dev/random
Website
www.gudenau.net
XP
5,364
Country
United States
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,

sinkillerj

Member
Newcomer
Joined
Oct 11, 2015
Messages
10
Trophies
0
Age
33
XP
70
Country
United States
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

loco365

Well-Known Member
Member
Joined
Sep 1, 2010
Messages
5,457
Trophies
0
XP
2,927
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

Leanny

Well-Known Member
Member
Joined
Feb 14, 2009
Messages
112
Trophies
0
XP
365
Country
Gambia, The
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

BullyWiiPlaza

Nintendo Hacking <3
OP
Member
Joined
Aug 2, 2014
Messages
1,932
Trophies
0
XP
2,467
Country
Germany
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

loco365

Well-Known Member
Member
Joined
Sep 1, 2010
Messages
5,457
Trophies
0
XP
2,927
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

Onion_Knight

Well-Known Member
Member
Joined
Feb 6, 2014
Messages
878
Trophies
0
Age
45
XP
997
Country
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.
 

gudenau

Largely ignored
Member
Joined
Jul 7, 2010
Messages
3,882
Trophies
2
Location
/dev/random
Website
www.gudenau.net
XP
5,364
Country
United States
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. :-)
 

gudenau

Largely ignored
Member
Joined
Jul 7, 2010
Messages
3,882
Trophies
2
Location
/dev/random
Website
www.gudenau.net
XP
5,364
Country
United States
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.
 

FunThomas

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
652
Trophies
0
XP
2,016
Country
Gambia, The
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

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: @SylverReZ, Indeed lol