It uses TCP sockets which are part of the Java standard libraries. This let's you connect and setup input and output streams:@BullyWiiPlaza I have two questions about JGecko U:
1. How does JGecko U connect to the wii u? Are there any Java classes that already exist, or is there a "specialized" class specifically for wii u that you have to use?
2. How does JGecko U send codes? I know it writes the codes to the virtual memory address 0x01133000, but how exactly does it write to the wii u's RAM in the first place? Again, are there any Java methods that work for this, or, again, are there any "specialized" methods/functions that you have to use to write to the wii u's RAM?
public void connect(String ipAddress) throws IOException
{
clientSocket = new Socket(ipAddress, PORT);
dataSender = new DataOutputStream(new BufferedOutputStream(clientSocket.getOutputStream()));
dataReceiver = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
}
// TCP Gecko Installer write memory command (C server)
case COMMAND_UPLOAD_MEMORY: {
// Receive the starting and ending addresses
ret = recvwait(bss, clientfd, buffer, sizeof(int) * 2);
CHECK_ERROR(ret < 0)
unsigned char *currentAddress = ((unsigned char **) buffer)[0];
unsigned char *endAddress = ((unsigned char **) buffer)[1];
while (currentAddress != endAddress) {
int length;
length = (int) (endAddress - currentAddress);
if (length > DATA_BUFFER_SIZE) {
length = DATA_BUFFER_SIZE;
}
ret = recvwait(bss, clientfd, buffer, length);
CHECK_ERROR(ret < 0)
kernelCopyData(currentAddress, buffer, (unsigned int) length);
currentAddress += length;
}
break;
}
// JGecko U write memory command (Java client)
public void writeBytes(int address, byte[] bytes) throws IOException
{
List<byte[]> partitionedBytes = ByteUtilities.partition(bytes, maximumMemoryChunkSize);
writePartitionedBytes(address, partitionedBytes);
}
private void writePartitionedBytes(int address, List<byte[]> bytesChunks) throws IOException
{
try (CloseableReEntrantLock ignored = reEntrantLock.acquire())
{
// Tell the server that we want to upload that many bytes
sendCommand(Command.MEMORY_UPLOAD);
dataSender.writeInt(address);
int endingAddress = address + length;
dataSender.writeInt(endingAddress);
dataSender.flush();
for (byte[] bytesChunk : bytesChunks)
{
// The end address is the next starting address
int endAddress = address + bytes.length;
dataSender.write(bytes);
dataSender.flush();
address = endAddress;
}
}
}
How you do them? You probably want to use the raw assembly codes feature. It's just writing PowerPC assembly. Also yes, you need to use IDA Pro to find the functions you want since there are no breakpoints, yet. It is smarter to pick games with unstripped RPLs so you have a fair chance understanding the code otherwise it's pretty much RIP.I'm trying to figure out how to right ASM codes at the moment. I already have some experience in that field from the NES and GBA. How do I go about doing that on the Wii U? We still don't really have breakpoints right? Without them, would I only be able to do it with IDA Pro?
Seeing as I don't even know what an unstripped RPL is, I think I'm just going to put that idea on the shelf for nowHow you do them? You probably want to use the raw assembly codes feature. It's just writing PowerPC assembly. Also yes, you need to use IDA Pro to find the functions you want since there are no breakpoints, yet. It is smarter to pick games with unstripped RPLs so you have a fair chance understanding the code otherwise it's pretty much RIP.
It just means that function names, variable names and such are kept and not removed. Seeing only addresses makes things way harder:Seeing as I don't even know what an unstripped RPL is, I think I'm just going to put that idea on the shelf for now
Uhm, there are no files considered viruses at all unless you mean the .html exploit web sites which you don't need anymore.Was going to post some shit about how I'm getting errors with java then realised that Windows Defender was deleting the files I needed...
Turn off your antiviruses folks.
Actually, Norton doesn't like the disassembler .exe's. I had to permanently disable auto-scanUhm, there are no files considered viruses at all unless you mean the .html exploit web sites which you don't need anymore.
When exactly and please post the whole error as text from the logs folder.All I can see are errors that say (Unknown Source)
Fixed nowNo, that also didn't work.
The code I'm testing is the 'Fat Belly Link' code on cosmocortney's website.
I'm on the most recent BotW update and on 5.5.2 if that changes anything.
Like answered here: https://github.com/BullyWiiPlaza/JGeckoU/issues/43How do i get Jgeko U to work with CEMU for BOTW?
I have tried using a the localhost IP 127.0.0.1 and Geko gives me this error message https://github.com/BullyWiiPlaza/JGeckoU/issues/28