Homebrew RELEASE Noexs Remote Debugger

Wolf85

Member
Newcomer
Joined
Feb 29, 2016
Messages
14
Trophies
0
Age
39
XP
124
Country
United States
i keep getting this error on first search
Code:
me.mdbell.noexs.core.ConnectionException: Unable to fully read data. Expected 2 bytes, but we only read:0
    at me.mdbell.noexs.core.IConnection.readShort(IConnection.java:66)
    at me.mdbell.noexs.core.IConnection.readUShort(IConnection.java:59)
    at me.mdbell.noexs.core.IConnection.readInt(IConnection.java:55)
    at me.mdbell.noexs.core.IConnection.readResult(IConnection.java:39)
    at me.mdbell.noexs.core.Debugger.readmem(Debugger.java:267)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.createDump(MemorySearchService.java:373)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.fullSearch(MemorySearchService.java:244)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.call(MemorySearchService.java:189)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.call(MemorySearchService.java:172)
    at javafx.graphics/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$6(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$7(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
any ideas?
 

Wolf85

Member
Newcomer
Joined
Feb 29, 2016
Messages
14
Trophies
0
Age
39
XP
124
Country
United States
i keep getting this error on first search
Code:
me.mdbell.noexs.core.ConnectionException: Unable to fully read data. Expected 2 bytes, but we only read:0
    at me.mdbell.noexs.core.IConnection.readShort(IConnection.java:66)
    at me.mdbell.noexs.core.IConnection.readUShort(IConnection.java:59)
    at me.mdbell.noexs.core.IConnection.readInt(IConnection.java:55)
    at me.mdbell.noexs.core.IConnection.readResult(IConnection.java:39)
    at me.mdbell.noexs.core.Debugger.readmem(Debugger.java:267)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.createDump(MemorySearchService.java:373)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.fullSearch(MemorySearchService.java:244)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.call(MemorySearchService.java:189)
    at me.mdbell.noexs.ui.services.MemorySearchService$SearchTask.call(MemorySearchService.java:172)
    at javafx.graphics/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$6(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/javafx.concurrent.Service.lambda$executeTask$7(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
any ideas?

Solved? forgot to add the debug mode line.
 

wiitendo84

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
1,392
Trophies
2
Age
39
Location
New Albany, Indiana
XP
3,781
Country
United States
New to Noexs. For some reason it wont connect. I dont get the option of choosing noexs and cfw in the other firmware boot option. Tried to follow what was on page 9 but still am a bit confused.
Edit
Redid the hekate.ini file and double checked to make sure that java 10 was installed. Port 7331 is open. The kip file is on the root of my sd card. When I load cfw what should I load? By that i mean just your basic cfw or is there a special cfw i need to run?
Edit 2.
Got it to run and connect. Should be fun.
 
Last edited by wiitendo84,

DrummerIX

Well-Known Member
Newcomer
Joined
Sep 15, 2016
Messages
52
Trophies
0
Age
48
XP
183
Country
United States
It took me some time to get this working for me on my Switch with an emu partition and firmware 8.1.0 on it. I'm using the latest version of Hekate (5.0 I think) and latest version of Atmosphere (0.9.2).

I had to add the Noexs option in my hekate.ipl as follows:

{--------Noexs----------}
[Noexs]
fss0=atmosphere/fusee-secondary.bin
kip1=modules/noexs/noexs.kip1
kip1patch=nosigchk
atmosphere=1
debugmode=1
fullsvcperm=1

This seemed to do the trick for me if I hold down L while starting the game. I put noexs.kip1 in the modules/noexs folder on my sd card. Anyway, I hope this helps some people get it working.
 

JonJaded

Well-Known Member
Member
Joined
May 22, 2016
Messages
675
Trophies
0
XP
2,925
Country
United States
Last edited by JonJaded,

KuranKu

I am KranK
Developer
Joined
Jan 13, 2019
Messages
367
Trophies
0
Age
34
Location
Israel
XP
1,181
Country
Israel
Wish I knew about this earlier. Thanks.

Edit: Is there anyway to turn it off for when I don't need it, to save on memory?
Kosmos toolbox lets you toogle sysmodules on the go

Check the config file to see how they read by kosmos toolbox sdmc:/switch/kosmostoolbox/config.json

Add your module and start kosmos toolbox and go to background services and toogle it on/off

^^
 
Last edited by KuranKu,
  • Like
Reactions: JonJaded

wiitendo84

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
1,392
Trophies
2
Age
39
Location
New Albany, Indiana
XP
3,781
Country
United States
Make sure i got this correct. To find a pointer i have to do these steps.
First find the address of the value youre searching for. Like health
Then when you find it, go to tools and right click on main memory and select memory start.
Right click on it again and select pointer statt.
Go to end of main memory and select memory end.
Go to pointer search and select the last memory dump you made.
Put in the address you found and max offset as well.
Click search and it shoule bring up the pointers it finds.

My problem is unless i go to a very high offset, all of my pointers to this address are negative. None are positive. Any suggestions as to what to do?
 

Deathwing Zero

Well-Known Member
Member
Joined
May 22, 2010
Messages
228
Trophies
0
Age
38
Location
Can-uh-duh
Website
Visit site
XP
409
Country
Canada
Make sure i got this correct. To find a pointer i have to do these steps.
First find the address of the value youre searching for. Like health
Then when you find it, go to tools and right click on main memory and select memory start.
Right click on it again and select pointer statt.
Go to end of main memory and select memory end.
Go to pointer search and select the last memory dump you made.
Put in the address you found and max offset as well.
Click search and it shoule bring up the pointers it finds.

My problem is unless i go to a very high offset, all of my pointers to this address are negative. None are positive. Any suggestions as to what to do?
It's not positive and negative. It's plus and minus. Addition and Subtraction. Also no, that's not how you find pointers.

Tools tab: Right click main and click Pointer Search (Main)
Next right click first CODE_MUTABLE region and click Pointer Search (Filter Min & Min)
Find your address then paste that into the address tab in Pointer Search
Click browse and select your _FIRST_ search dump.

By first search dump that means the very first search you did while looking for the address. This is because this will contain the relevant sections of memory to find the pointer. The further down the list you go the less chance you have of finding the correct pointer because it will cut those areas out. Also, for step 2 it says "Pointer Search (Filter Min & Min)" but it really means "Pointer Search (Filter Min & Max)" it will automatically fill in the start and end addresses of the CODE_MUTABLE block of memory in the pointer search. All of this needs to be done in the same launch of the game. If you do it at different times, say you find the address, close the game and have dinner, then launch the game and continue, the addresses will change and you will need to start over.
 
  • Like
Reactions: wiitendo84

wiitendo84

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
1,392
Trophies
2
Age
39
Location
New Albany, Indiana
XP
3,781
Country
United States
It's not positive and negative. It's plus and minus. Addition and Subtraction. Also no, that's not how you find pointers.

Tools tab: Right click main and click Pointer Search (Main)
Next right click first CODE_MUTABLE region and click Pointer Search (Filter Min & Min)
Find your address then paste that into the address tab in Pointer Search
Click browse and select your _FIRST_ search dump.

By first search dump that means the very first search you did while looking for the address. This is because this will contain the relevant sections of memory to find the pointer. The further down the list you go the less chance you have of finding the correct pointer because it will cut those areas out. Also, for step 2 it says "Pointer Search (Filter Min & Min)" but it really means "Pointer Search (Filter Min & Max)" it will automatically fill in the start and end addresses of the CODE_MUTABLE block of memory in the pointer search. All of this needs to be done in the same launch of the game. If you do it at different times, say you find the address, close the game and have dinner, then launch the game and continue, the addresses will change and you will need to start over.

I appreciate the info on this. I was going by on page 9 because that's the only info I could find out about using the pointer search. Alright I'll give it a try out and see if it works. Thanks again.

EDIT:
Can a pointer be like this and work? [main+15d3ed0] - 169794
I thought both would have to be plus. But most of the pointers I am finding are either main - etc - etc
 
Last edited by wiitendo84,

khuong

Well-Known Member
Member
Joined
Jul 18, 2018
Messages
1,542
Trophies
1
Age
44
XP
6,503
Country
Canada
Usually you’ll want a positive pointer, but if you’re getting the same negative pointer on multiple reboots.. opening and closing the app a few times..

Then most likely you should be good.
 
  • Like
Reactions: wiitendo84

wiitendo84

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
1,392
Trophies
2
Age
39
Location
New Albany, Indiana
XP
3,781
Country
United States
Usually you’ll want a positive pointer, but if you’re getting the same negative pointer on multiple reboots.. opening and closing the app a few times..

Then most likely you should be good.
Thats the problem. Im getting an insane amount of pointers like this main -value -value. Ive found a couple of main + value -value. Could it be that i may have to up the value of the offset to find it? Its just i dont remeber it being this hard on the wii u but we also had that pointer program that we could use. So frustrating lol
 

Deathwing Zero

Well-Known Member
Member
Joined
May 22, 2010
Messages
228
Trophies
0
Age
38
Location
Can-uh-duh
Website
Visit site
XP
409
Country
Canada
Thats the problem. Im getting an insane amount of pointers like this main -value -value. Ive found a couple of main + value -value. Could it be that i may have to up the value of the offset to find it? Its just i dont remeber it being this hard on the wii u but we also had that pointer program that we could use. So frustrating lol

As far as I'm aware [main-offset] -offset is not impossible, but rare. Look at this image here. Main is highlighted, the first CODE_MUTABLE block (from main, I neglected to say that earlier, sorry) is 2 lines down at address 4891F2B000. In this game (Pokemon Let's Go Eevee) there are several CODE_MUTABLE regions in a row. So you would right click on the first one and click Pointer Search Min. Then right click on the last one (just before sdk) and click Pointer Search Max.

Without seeing the memory table for the game you're working on I can't say one way or another whether [main-offset] is correct or not. It's not something I've personally seen but I've only worked on 2 games. To verify it you could parse the pointer and see if it's correct. If it's correct it'll point you to the address of your pointer, whose value should be the address of the value you're looking to modify. To parse it, it's at the bottom of the first tab (see the image I posted above).

Or you could use a calculator. But you would still need Noexes connected to give you the address. Calculate like so:
[main+c75680] + 14
Main = 2B02204000

2B02204000 + C75680 = 2B02E79680

Add 2B02E79680 to watchlist on Noexes

Value of 2B02E79680 = 0000003437E8A550

3437E8A550 + 14 = 3437E8A564

3437E8A564 is the address with the value you're looking for. You can add that to the watchlist, or use the memory viewer to peek and check if it's correct. You can poke from memory viewer too but it's easier to just use the watchlist. As far as I remember the watchlist can parse pointers in the address section, so you could just paste [main+c75680] + 14 and it would parse it correctly. I haven't used it for a while since it broke on 6.2, so I don't remember fully, sorry.

EDIT:
As for the question you had earlier, yes, [main+offset] -offset will work fine. I converted an SX OS cheat (before Atmosphere's dmnt:cht came out) to Noexes and the result was [main+16174f8] -61acc0, which was correct. If you get a pointer that's layers deep, it could easily be [[[[main+offset]-offset]+offset]-offset] -offset for example.
 
Last edited by Deathwing Zero,

wiitendo84

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
1,392
Trophies
2
Age
39
Location
New Albany, Indiana
XP
3,781
Country
United States
As far as I'm aware [main-offset] -offset is not impossible, but rare. Look at this image here. Main is highlighted, the first CODE_MUTABLE block (from main, I neglected to say that earlier, sorry) is 2 lines down at address 4891F2B000. In this game (Pokemon Let's Go Eevee) there are several CODE_MUTABLE regions in a row. So you would right click on the first one and click Pointer Search Min. Then right click on the last one (just before sdk) and click Pointer Search Max.

Without seeing the memory table for the game you're working on I can't say one way or another whether [main-offset] is correct or not. It's not something I've personally seen but I've only worked on 2 games. To verify it you could parse the pointer and see if it's correct. If it's correct it'll point you to the address of your pointer, whose value should be the address of the value you're looking to modify. To parse it, it's at the bottom of the first tab (see the image I posted above).

Or you could use a calculator. But you would still need Noexes connected to give you the address. Calculate like so:
[main+c75680] + 14
Main = 2B02204000

2B02204000 + C75680 = 2B02E79680

Add 2B02E79680 to watchlist on Noexes

Value of 2B02E79680 = 0000003437E8A550

3437E8A550 + 14 = 3437E8A564

3437E8A564 is the address with the value you're looking for. You can add that to the watchlist, or use the memory viewer to peek and check if it's correct. You can poke from memory viewer too but it's easier to just use the watchlist. As far as I remember the watchlist can parse pointers in the address section, so you could just paste [main+c75680] + 14 and it would parse it correctly. I haven't used it for a while since it broke on 6.2, so I don't remember fully, sorry.

EDIT:
As for the question you had earlier, yes, [main+offset] -offset will work fine. I converted an SX OS cheat (before Atmosphere's dmnt:cht came out) to Noexes and the result was [main+16174f8] -61acc0, which was correct. If you get a pointer that's layers deep, it could easily be [[[[main+offset]-offset]+offset]-offset] -offset for example.

I'm working on resident Evil HD. I've been talking with Retroboy about it as well but he's using sx os while I'm using noexs. Both of us agree that the health for both Jill and Chris should be on one address. Every release of it that has cheats has it as one address. I know the health values for both of them, Chris always starts with 1400 while Jill always starts with 960. I've been able to find the address but of course with how the switch loads the memory, they aren't static. I've noticed that also in this game that whenever I go to view the memory regions on different loads, heap is sometimes before main while sometimes main is before heap. So i figured there has to be a pointer due to that. Health value always changes addresses. Now if I'm hooked up to it and switch characters, the health address is the same for both. So if I find the address with chris and decide to redo it and look at Jill. The address works for her as well.

Edit:
Doing what you said using this specific pointer. [main-179c57fc48] + 13ecc Now my address for health is at 441785A25C

I took my Main address 5BB3E04000, subtract 179c57fc48. Got 44178843b8. Put that into my watch list and got the following 0000004417846390.
Added the 13ecc to that and got my address for the health value at 441785a25c.

That should be my pointer correct?
 
Last edited by wiitendo84,

Deathwing Zero

Well-Known Member
Member
Joined
May 22, 2010
Messages
228
Trophies
0
Age
38
Location
Can-uh-duh
Website
Visit site
XP
409
Country
Canada
I'm working on resident Evil HD. I've been talking with Retroboy about it as well but he's using sx os while I'm using noexs. Both of us agree that the health for both Jill and Chris should be on one address. Every release of it that has cheats has it as one address. I know the health values for both of them, Chris always starts with 1400 while Jill always starts with 960. I've been able to find the address but of course with how the switch loads the memory, they aren't static. I've noticed that also in this game that whenever I go to view the memory regions on different loads, heap is sometimes before main while sometimes main is before heap. So i figured there has to be a pointer due to that. Health value always changes addresses. Now if I'm hooked up to it and switch characters, the health address is the same for both. So if I find the address with chris and decide to redo it and look at Jill. The address works for her as well.

Edit:
Doing what you said using this specific pointer. [main-179c57fc48] + 13ecc Now my address for health is at 441785A25C

I took my Main address 5BB3E04000, subtract 179c57fc48. Got 44178843b8. Put that into my watch list and got the following 0000004417846390.
Added the 13ecc to that and got my address for the health value at 441785a25c.

That should be my pointer correct?

Heap being before main and after main sometimes happens. That's just ASLR at work. That's why you get pointers that are relative to a point, so they will always be in that location, whether main is first or last. For example on PC a pointer would be game.exe+offset +/-offset. Anyway, if that address is the one you found health on, then you should be correct in that being the health pointer. Then you just have to test it. Close the game completely, restart it. Reconnect Noexes and slap that pointer into the parse and see if you find health. If you do, your pointer works. I usually do 1 further step and restart the switch after and test it again, but this has proven unnecessary. I'm paranoid though so I do it anyway.

EDIT:
So long as it lands on the correct address, it'll always work, even if you update your firmware version. The only time it will change is if the game receives an update. That's why SX OS and dmnt:cht use build ids.
 
Last edited by Deathwing Zero,

wiitendo84

Well-Known Member
Member
Joined
Jan 3, 2014
Messages
1,392
Trophies
2
Age
39
Location
New Albany, Indiana
XP
3,781
Country
United States
Heap being before main and after main sometimes happens. That's just ASLR at work. That's why you get pointers that are relative to a point, so they will always be in that location, whether main is first or last. For example on PC a pointer would be game.exe+offset +/-offset. Anyway, if that address is the one you found health on, then you should be correct in that being the health pointer. Then you just have to test it. Close the game completely, restart it. Reconnect Noexes and slap that pointer into the parse and see if you find health. If you do, your pointer works. I usually do 1 further step and restart the switch after and test it again, but this has proven unnecessary. I'm paranoid though so I do it anyway.

EDIT:
So long as it lands on the correct address, it'll always work, even if you update your firmware version. The only time it will change is if the game receives an update. That's why SX OS and dmnt:cht use build ids.

Yeah its weird that while it points to the address it doesnt work when i put it in as a code. So its not the right one. Going to try it again but im getting a ton of pointers lol. Trying all is probably going to give me a head ache.

Edit.
My switch is down right now. But i remembered back in the day when i was doing army men sarges war, that there was a problem with finding the health code for it. Man i dont even think that i can find the info that i did for it. And that site is most definitely no more either. A wealth of knowledge gone...
 
Last edited by wiitendo84,

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,265
Trophies
3
XP
12,026
Country
Poland
I'm trying to get this to work by usb.
sysmodule nsp, 7.0.1, hekate 5.0.1, atmosphere 0.9.2
Code:
[Noexs]
fss0=atmosphere/fusee-secondary.bin
kip1patch=nosigchk
atmosphere=1
debugmode=1
fullsvcperm=1

And still Unable to connect.
 

hippy dave

BBMB
Member
Joined
Apr 30, 2012
Messages
9,858
Trophies
2
XP
28,913
Country
United Kingdom
I'm trying to get this to work by usb.
sysmodule nsp, 7.0.1, hekate 5.0.1, atmosphere 0.9.2
Code:
[Noexs]
fss0=atmosphere/fusee-secondary.bin
kip1patch=nosigchk
atmosphere=1
debugmode=1
fullsvcperm=1

And still Unable to connect.
USB isn't implemented on the Switch side yet, have to go wifi.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Xdqwerty @ Xdqwerty: good night