50 41 54 43 48 02 DC 30 00 04 09 00 00 14 02 E9 F8 00 04 1F 20 03 D5 02 DC 64 00 04 09 00 00 14 45 4F 46 *** pc app (new patch)
50 41 54 43 48 02 DC 30 00 04 09 00 00 14 02 E9 F8 00 04 1F 20 03 D5 02 DC 64 00 04 1F 20 03 D5 45 4F 46 *** python script (10.2.0)
The old python patch, nopped patch 3 address, new patch branches instead
Excellent, Work great, Tested on firmwaresFYI, I added an alt way of patching ES files - this is basically the same as the original python ES scripts where it patches in 3 places, this is different to the other way - so if that one fails to generated the correct patches, try this instead!
For the eagle eye'd - this only supports firmware 10.0.2 and above (same as the python scripts), I added a check to this routine and will no doubt do the same to the other routines when I get around to it.
Also for the super eagle eyed - info on 10.0.2 patches:
Code:50 41 54 43 48 02 DC 30 00 04 09 00 00 14 02 E9 F8 00 04 1F 20 03 D5 02 DC 64 00 04 09 00 00 14 45 4F 46 *** pc app (new patch) 50 41 54 43 48 02 DC 30 00 04 09 00 00 14 02 E9 F8 00 04 1F 20 03 D5 02 DC 64 00 04 1F 20 03 D5 45 4F 46 *** python script (10.2.0) The old python patch, nopped patch 3 address, new patch branches instead
Notice patch 3 is a branch instead of a NOP, this is fine and is how new patches are made, so don't worry about the difference when you compare to other patches.
I'll upload my current c# code to github later today and post a link so you can see how I changed some of the way the patches are done now. The scripts are OK but the pc app improves them and fxes some bugs. Also thanks for your homebrew, hopefully once that is done it will make the python scripts obsolete.I've been working today on the homebrew app and I've been able to port the es alt autoIPS algorithm from python, didn't face any issue.
You can test it with the attached file, you need to put the keys.dat file in the sigpatch-generator folder and just copy the whole folder in the switch folder. It will generate an atmosphere output folder in the same directory with the ips file (it will not overwrite your current ips files, I want to make sure everything is okay before doing that). I've only tested the algorithm with the current firmware (I didn't have the time to install every supported firmware on my switch) but I suppose it works with the current supported firmware versions with the python algorithm (but it needs to be tested)
I haven't finished treating every exception but the algorithm itself seems to work.
If you find any bug or you have suggestions feel free to tell me.
I'll keep working on the other ips patches in the meantime.
Thank you I'll update the algorithmI'll upload my current c# code to github later today and post a link so you can see how I changed some of the way the patches are done now. The scripts are OK but the pc app improves them and fxes some bugs. Also thanks for your homebrew, hopefully once that is done it will make the python scripts obsolete.
Here you go:
https://github.com/mrdude2478/Sigpatch-IPS-Creator
if (SDKVersion >= 7300 & SDKVersion < 9300 || SDKVersion == 82990)
{
pattern = new byte[] { 0x00, 0x94, 0x60, 0x7E, 0x40, 0x92, 0xFD, 0x7B,
0x46, 0xA9, 0xF4, 0x4F, 0x45, 0xA9, 0xFF, 0xC3,
0x01, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00,
0x00, 0x00 };
toggle = 0;
}
else if (SDKVersion > 9300 & SDKVersion < 10400)
{
pattern = new byte[] { 0xFF, 0x97, 0xE0, 0x03, 0x13, 0xAA, 0xFD, 0x7B,
0x48, 0xA9, 0xF4, 0x4F, 0x47, 0xA9, 0xFF, 0x43,
0x02, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00,
0x00, 0x00 };
toggle = 0;
}
else if (SDKVersion == 10400)
{
if (BuildID == "03E4EB5556B98B327D1353E8AA2C7ADF2C544470") //id for firmware 10.0.4
{
pattern = new byte[] { 0xFF, 0x97, 0xE0, 0x03, 0x13, 0xAA, 0xFD, 0x7B,
0x48, 0xA9, 0xF4, 0x4F, 0x47, 0xA9, 0xFF, 0x43,
0x02, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00,
0x00, 0x00 };
toggle = 0;
}
else
{
//wildcard patterns start here - always convert to lower case or regex won't work.
find = ("FF97.......A9........FFC3").ToLower();
toggle = 1;
}
}
else if (SDKVersion > 10400 & SDKVersion < 14300) //#start from fw 10.2.0 to 13.1.0
{
find = ("FF97.......A9........FFC3").ToLower();
toggle = 1;
}
What do you mean - do you mean to put && or &, because I tried both and it works with just a single &. See here for info on && and & in C#Thank you I'll update the algorithm
Edit:
I think you made a mistake with your sdkversion check I believe that '&'s are missing
Code:if (SDKVersion >= 7300 & SDKVersion < 9300 || SDKVersion == 82990) { pattern = new byte[] { 0x00, 0x94, 0x60, 0x7E, 0x40, 0x92, 0xFD, 0x7B, 0x46, 0xA9, 0xF4, 0x4F, 0x45, 0xA9, 0xFF, 0xC3, 0x01, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00, 0x00, 0x00 }; toggle = 0; } else if (SDKVersion > 9300 & SDKVersion < 10400) { pattern = new byte[] { 0xFF, 0x97, 0xE0, 0x03, 0x13, 0xAA, 0xFD, 0x7B, 0x48, 0xA9, 0xF4, 0x4F, 0x47, 0xA9, 0xFF, 0x43, 0x02, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00, 0x00, 0x00 }; toggle = 0; } else if (SDKVersion == 10400) { if (BuildID == "03E4EB5556B98B327D1353E8AA2C7ADF2C544470") //id for firmware 10.0.4 { pattern = new byte[] { 0xFF, 0x97, 0xE0, 0x03, 0x13, 0xAA, 0xFD, 0x7B, 0x48, 0xA9, 0xF4, 0x4F, 0x47, 0xA9, 0xFF, 0x43, 0x02, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00, 0x00, 0x00 }; toggle = 0; } else { //wildcard patterns start here - always convert to lower case or regex won't work. find = ("FF97.......A9........FFC3").ToLower(); toggle = 1; } } else if (SDKVersion > 10400 & SDKVersion < 14300) //#start from fw 10.2.0 to 13.1.0 { find = ("FF97.......A9........FFC3").ToLower(); toggle = 1; }
Edit here is the updated version:
My mistake in my line of work we do a lot of AND mask (and sometimes directly in if's) so it is important to make the distinction but I didn't know it was a thing in C#. Now I know.What do you mean - do you mean to put && or &, because I tried both and it works with just a single &. See here for info on && and & in C#
https://www.c-sharpcorner.com/code/71/difference-between-and-in#:~:text=& and && both are “AND,condition and perform some action.
Haven't tested yet (don't have an actual need until next firmware releases) but this is great to see, thanks. A suggestion if you haven't thought of it - seeing as you're reading firmware from files rather than from memory anyway, it would be nice to have the option to use not-yet-installed firmware files on the SD card, eg those dumped by Tegra Explorer. That way we could generate the full set of patches for a new firmware version before updating to it, and be good to go.I've been working today on the homebrew app and I've been able to port the es alt autoIPS algorithm from python, didn't face any issue.
You can test it with the attached file, you need to put the keys.dat file in the sigpatch-generator folder and just copy the whole folder in the switch folder. It will generate an atmosphere output folder in the same directory with the ips file (it will not overwrite your current ips files, I want to make sure everything is okay before doing that). I've only tested the algorithm with the current firmware (I didn't have the time to install every supported firmware on my switch) but I suppose it works with the current supported firmware versions with the python algorithm (but it needs to be tested)
I haven't finished treating every exception but the algorithm itself seems to work.
If you find any bug or you have suggestions feel free to tell me.
I'll keep working on the other ips patches in the meantime.
Excellent, Work great, Tested on firmwares
and the only difference are the patches for Firmware 10.1.0 and 10.2.0 what are the same:
- FW10.1.0
- FW10.2.0
- FW11.0.0
- FW11.0.1
- FW11.0.1-11.0.1.1000
- FW12.0.0
- FW12.0.1
- FW12.0.2
- FW12.0.3
- FW12.1.0
- FW13.0.0
- FW13.1.0
- FW13.2.0
- FW13.2.1
- FW14.0.0
- FW14.1.0
- FW14.1.1
- FW14.1.2
- FW14.1.2-Rebootless
View attachment 322476
here at left the Python script generated and right the Windows App ones.
patches fro firmware 11 and up (inclusive) are the same.
I've been working today on the homebrew app and I've been able to port the es alt autoIPS algorithm from python, didn't face any issue.
You can test it with the attached file, you need to put the keys.dat file in the sigpatch-generator folder and just copy the whole folder in the switch folder. It will generate an atmosphere output folder in the same directory with the ips file (it will not overwrite your current ips files, I want to make sure everything is okay before doing that). I've only tested the algorithm with the current firmware (I didn't have the time to install every supported firmware on my switch) but I suppose it works with the current supported firmware versions with the python algorithm (but it needs to be tested)
I haven't finished treating every exception but the algorithm itself seems to work.
If you find any bug or you have suggestions feel free to tell me.
I'll keep working on the other ips patches in the meantime.
I'll upload my current c# code to github later today and post a link so you can see how I changed some of the way the patches are done now. The scripts are OK but the pc app improves them and fxes some bugs. Also thanks for your homebrew, hopefully once that is done it will make the python scripts obsolete.
Here you go:
https://github.com/mrdude2478/Sigpatch-IPS-Creator
Hi, for all file managing needs I do use Total Commander by Ghisler is a very easy two windows side by side file manager, have lots and lots of features including file comparison (binary and text) folder synchronization, compressed files as folders, and really a lot of other functions.Curious, what program are you using the check the differences between files?
I use HxD comparison for hex data values, but I think that gives a much better visual output which would be of great help for romhacking projects.
Was just thinking a similar though.Boy did Nintendo fuck themselves hard with their DMCA shit lol
Would have never thought it was TC!Hi, for all file managing needs I do use Total Commander by Ghisler is a very easy two windows side by side file manager, have lots and lots of features including file comparison (binary and text) folder synchronization, compressed files as folders, and really a lot of other functions.
Is not freeware but the low cost payed himself several years ago.
Going to try TC and see if it‘s better.how to use 'Hex Editor' 'Compare Files'.
Open two files
2nd file right click tab and choose 'Move to other view'
click first file
ctrlA - select All
click 2nd file
ctrlA - select All
Plugins | Hex-Editor | Compare Hex
yep:Was just thinking this. They tried to stomp out a mud puddle! Now it’s distributed all over the place and more robust than ever!
Would have never thought it was TC!
I use np++ w/ plugins but it‘s a bit wonky at times.
Going to try TC and see if it‘s better.
thanks a lot for this homebrew appI've been working today on the homebrew app and I've been able to port the es alt autoIPS algorithm from python, didn't face any issue.
You can test it with the attached file, you need to put the keys.dat file in the sigpatch-generator folder and just copy the whole folder in the switch folder. It will generate an atmosphere output folder in the same directory with the ips file (it will not overwrite your current ips files, I want to make sure everything is okay before doing that). I've only tested the algorithm with the current firmware (I didn't have the time to install every supported firmware on my switch) but I suppose it works with the current supported firmware versions with the python algorithm (but it needs to be tested)
I haven't finished treating every exception but the algorithm itself seems to work.
If you find any bug or you have suggestions feel free to tell me.
I'll keep working on the other ips patches in the meantime.
Thank you I'll update the algorithm
Edit:
I think you made a mistake with your sdkversion check I believe that '&'s are missing
Code:if (SDKVersion >= 7300 & SDKVersion < 9300 || SDKVersion == 82990) { pattern = new byte[] { 0x00, 0x94, 0x60, 0x7E, 0x40, 0x92, 0xFD, 0x7B, 0x46, 0xA9, 0xF4, 0x4F, 0x45, 0xA9, 0xFF, 0xC3, 0x01, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00, 0x00, 0x00 }; toggle = 0; } else if (SDKVersion > 9300 & SDKVersion < 10400) { pattern = new byte[] { 0xFF, 0x97, 0xE0, 0x03, 0x13, 0xAA, 0xFD, 0x7B, 0x48, 0xA9, 0xF4, 0x4F, 0x47, 0xA9, 0xFF, 0x43, 0x02, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00, 0x00, 0x00 }; toggle = 0; } else if (SDKVersion == 10400) { if (BuildID == "03E4EB5556B98B327D1353E8AA2C7ADF2C544470") //id for firmware 10.0.4 { pattern = new byte[] { 0xFF, 0x97, 0xE0, 0x03, 0x13, 0xAA, 0xFD, 0x7B, 0x48, 0xA9, 0xF4, 0x4F, 0x47, 0xA9, 0xFF, 0x43, 0x02, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 0x00, 0x00, 0x00, 0x00 }; toggle = 0; } else { //wildcard patterns start here - always convert to lower case or regex won't work. find = ("FF97.......A9........FFC3").ToLower(); toggle = 1; } } else if (SDKVersion > 10400 & SDKVersion < 14300) //#start from fw 10.2.0 to 13.1.0 { find = ("FF97.......A9........FFC3").ToLower(); toggle = 1; }
Edit here is the updated version:
Thank you for the feedback I have implemented this exception now.thanks a lot for this homebrew app
I tried it and the ips file is well generated into the new atmosphere folder and it matches the one I already have
I tested without any keys.dat file and atmosphere crashed.
You may have not implemented any file check yet