|
TeamZebra
|
 |
« on: December 05, 2009, 11:59:11 PM » |
|
Hey guys. I decided to make a patcher that uses the Yaris swap trick that takes a folder as input and recursively goes through that folder and every subfolder and patches the files. Zouzz's tool is very nice, but its folder select function only works on that folder, it's not recursive. So I whipped up a quick solution for it. PLEASE make sure to read the readme, it explains a few things you'll need to know before using it. Download here. EDIT: I improved the efficiency of it by a lot, read more about C# file handling and realized I can edit the file without having to load the whole thing into a byte array lol. Here's a way faster version that I don't think will give any memory errors. Download here or here. EDIT 2: New version (again, I know). This one has an output window and also does header filtering so it only patches LIVE/PIRS files. Thanks to free60.org for container file information. Hopefully this will be the last version. Download here.
|
|
|
|
« Last Edit: December 06, 2009, 06:14:29 PM by TeamZebra »
|
Logged
|
|
|
|
|
jester
|
 |
« Reply #1 on: December 06, 2009, 03:10:40 AM » |
|
Cool stuff.
I bet this works great for that big pack that was posted?
|
|
|
|
|
Logged
|
|
|
|
|
MagnusHydra
|
 |
« Reply #2 on: December 06, 2009, 04:16:28 AM » |
|
Cool stuff.
I bet this works great for that big pack that was posted?
where? I've got 89 arcade games I tried using the program and I keep getting an error See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text ************** System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at System.IO.File.ReadAllBytes(String path) at Xbox_Live_File_Patcher.Form1.PatchFiles() at Xbox_Live_File_Patcher.Form1.btnPatch_Click(Object sender, EventArgs e) at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies ************** mscorlib Assembly Version: 2.0.0.0 Win32 Version: 2.0.50727.3603 (GDR.050727-3600) CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll ---------------------------------------- Xbox Live File Patcher Assembly Version: 1.0.0.0 Win32 Version: 1.0.0.0 CodeBase: file:///C:/Documents%20and%20Settings/Magnus/Desktop/hombrew/Xbox%20Live%20File%20Patcher%20v1.0/Xbox%20Live%20File%20Patcher.exe ---------------------------------------- System.Windows.Forms Assembly Version: 2.0.0.0 Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000) CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System Assembly Version: 2.0.0.0 Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000) CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll ---------------------------------------- System.Drawing Assembly Version: 2.0.0.0 Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000) CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ----------------------------------------
************** JIT Debugging ************** To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled.
For example:
<configuration> <system.windows.forms jitDebugging="true" /> </configuration>
When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the computer rather than be handled by this dialog box.
Edit: I tried 40 at a time and it works fine.
|
|
|
|
« Last Edit: December 06, 2009, 04:54:50 AM by MagnusHydra »
|
Logged
|
|
|
|
|
TeamZebra
|
 |
« Reply #3 on: December 06, 2009, 12:33:03 PM » |
|
Hmm. I coded a newer version. Late-night coding should not be done, keep that in mind. I much improved the way it handles files, should only take a second or so to patch now, and I don't think you'll be getting any more errors. Mind testing it with the 89 files again and posting the results? Download here or here.
|
|
|
|
« Last Edit: December 06, 2009, 12:37:45 PM by TeamZebra »
|
Logged
|
|
|
|
|
jimmy2x2x
|
 |
« Reply #4 on: December 06, 2009, 03:09:20 PM » |
|
Just tried it on 218 games - worked great, thanks!
|
|
|
|
|
Logged
|
|
|
|
|
Starspin
|
 |
« Reply #5 on: December 06, 2009, 04:07:23 PM » |
|
Thanks, It works great! 
|
|
|
|
|
Logged
|
|
|
|
|
TeamZebra
|
 |
« Reply #6 on: December 06, 2009, 06:14:48 PM » |
|
New (and hopefully last) release in the first post. Enjoy.
|
|
|
|
|
Logged
|
|
|
|
|
slasherking823
|
 |
« Reply #7 on: December 06, 2009, 11:29:59 PM » |
|
Late-night coding should not be done here or here. i found that out when i woke up and my linux fatx driver had support for all features but the last 5 user commands didn't work
|
|
|
|
|
Logged
|
If that gamerscore or tenth prestige is so important to you that you absolutely need a pointless number - get it legit If you are just trying to show off - throw a party(real party, not nerd party, some of you would miss that point) If you like to be a fagot and go by "Jtags are for Mw2" - GTFO
|
|
|
|
MagnusHydra
|
 |
« Reply #8 on: December 07, 2009, 03:14:59 AM » |
|
Hmm. I coded a newer version. Late-night coding should not be done, keep that in mind. I much improved the way it handles files, should only take a second or so to patch now, and I don't think you'll be getting any more errors. Mind testing it with the 89 files again and posting the results? Download here or here. Sorry I was sleeping or at work The newest version on ur main post works fine thank you! you should upload to xbins now 
|
|
|
|
|
Logged
|
|
|
|
|
ReverseAffect
|
 |
« Reply #9 on: December 07, 2009, 04:26:11 AM » |
|
NiCe thanks much  give that man some rest 
|
|
|
|
|
Logged
|
sick like a mofo..not reballing for a while...
|
|
|
|
TeamZebra
|
 |
« Reply #10 on: December 07, 2009, 09:47:18 AM » |
|
I don't know how to get things onto Xbins. Besides, I doubt they would allow something like this, it only has one real purpose...
|
|
|
|
|
Logged
|
|
|
|
|
damox
|
 |
« Reply #11 on: December 07, 2009, 10:26:37 AM » |
|
I don't know how to get things onto Xbins. Besides, I doubt they would allow something like this, it only has one real purpose...
You have completely missed the point of xbins then. I'm assuming the point of this is to make your legit bought arcade games work on more than 1 console that you own right ?
|
|
|
|
|
Logged
|
|
|
|
|
zefyx
|
 |
« Reply #12 on: December 08, 2009, 03:24:16 PM » |
|
Thank you TeamZebra.
|
|
|
|
|
Logged
|
|
|
|
|
MastaG
|
 |
« Reply #13 on: December 13, 2009, 11:39:37 AM » |
|
It doesn't seem to work for me. I tried this on de Content folder of my old hdd that came from a banned console. The profiles are showing up as corrupted but the memory tab shows the optional media update is there. So I copied the complete Content folder to my fat32 formatted usb-stick and ran the patcher on it. Then I copied everything back to my hdd, and stuck it on my freeBOOT 0.2 console. The profile still show up as corrupted and when attempting to play divx or mp4 it still tells me I need the media update. Any ideas?
|
|
|
|
|
Logged
|
I understand. You found paradise in America, you had a good trade, you made a good living. The police protected you and there were courts of law. And you didn't need a friend like me. But, uh, now you come to me, and you say: "Don Corleone, give me justice." But you don't ask with respect. You don't offer friendship. You don't even think to call me Godfather. Instead, you come into my house on the day my daughter is to be married, and you ask me to do murder for money.
|
|
|
|
TeamZebra
|
 |
« Reply #14 on: December 13, 2009, 01:11:45 PM » |
|
Well this doesn't uncorrupt profiles, it just unlocks DLC and Arcade games. If you're using a profile from a banned console, you'll have to uncorrupt it using CON Flag Remover. Google around for it.
|
|
|
|
|
Logged
|
|
|
|
|
NotMe
|
 |
« Reply #15 on: January 23, 2010, 01:43:04 AM » |
|
Xbox Live File Patchver v1.2m - By TeamZebra/ZFB8 - Patched by NotMe v1.2m - Patches by NotMe -Added removal of console ID. Credits to zouzzz for the idea from his Yarisswap application. -Changed handling of the license slots. Should now parse through all 16 license slots more correctly. This should fix any instances of DLC that does not work or show as full version when done via Yaris Swap method. Note: this will not fix files that have been YarisSwapped as the Content & Flags get lost. Credits to Fatum for DLC Patcher and documenting out why Yaris Swap method worked more clearly http://www.megaupload.com/?d=PYK227YXSources for update included of course. Thank you TeamZebra for publishing your sources. -- EDIT: Noticed a bug that exists in both the original 1.2 and the 1.2m edits I did. If the folders containing the content to be modified also contain a 0byte file the program will try to modify (and crash on) that 0byte file. This can be corrected but I don't feel like doing a complete compile and package at the moment so just make sure your folders have no 0byte files. If you wish to compile the fix yourself search for this code and then replace with code below: // read in each file header fs.Read(fileHeader, 0, 4); FIXED CODE HERE to replace above code: // read in each file header for (int i = 0; i <= 3; i++) { fileHeader[i] = 0x00; } fs.Read(fileHeader, 0, 4);
|
|
|
|
« Last Edit: January 23, 2010, 04:34:49 AM by NotMe »
|
Logged
|
|
|
|
|
zouzzz
|
 |
« Reply #16 on: January 23, 2010, 08:00:47 AM » |
|
Hi and thanks. I think this version has an "error" : int[] OffsetsLic = { 0x23C, 0x24C, 0x25C, 0x26C, 0x27C, 0x28C, 0x29C , 0x2AC, 0x2BC, 0x2CC, 0x2DC, 0x2EC, 0x2FC, 0x30C, 0x31C }; 15 bytes byte[] emptyL = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 16 bytes --------- A new version of Yaris Swap coming soon...
|
|
|
|
« Last Edit: January 23, 2010, 08:30:27 AM by zouzzz »
|
Logged
|
|
|
|
|
NotMe
|
 |
« Reply #17 on: January 23, 2010, 11:46:31 AM » |
|
Hi and thanks. I think this version has an "error" : int[] OffsetsLic = { 0x23C, 0x24C, 0x25C, 0x26C, 0x27C, 0x28C, 0x29C , 0x2AC, 0x2BC, 0x2CC, 0x2DC, 0x2EC, 0x2FC, 0x30C, 0x31C }; 15 bytes -- 15 elements for this array is correct. These are the offsets into the file used to find License Slots 1-15 as Slot 0 starting at 0x22C always gets patched since everything has at least one license byte[] emptyL = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 16 bytes -- 16 elements in this array is correct. Used for compares only to see if we should patch or skip the slot. If slot is empty we do not need to patch.
--------- A new version of Yaris Swap coming soon... See my comments above in blue. OffsetsLic is 15 elements in length because we always patch License Slot 0's (0x22C) License field to FFFFFFFFFFFFFFFF since everything has at least 1 slot used. The code then compares the Content segment of Slot 0 to see if there is a value or not. If Slot 0 content segment is 00 00 00 00 we patch to 00 00 00 01 otherwise we don't touch it. I never touch the flags segment of the license slot. After that we move into the loop which is where the remaining 15 license slots are patched using the above list of Offsets. Since we always check the Content segment of License Slot 0 that is why OffsetsCT is also only 15 elements in length. emptyL is used for compares to see if the License slot needs patching. If there is no License, no Content, and no Flags we don't need to patch. If the license slot does not match emptyL we will patch the License portion to FFFFFFFFFFFFFFFF then check the content segment. If the content segment is 00 00 00 00 we patch to 00 00 00 01 otherwise we don't touch it. Again for slots 1 to 15 just as with slot 0 we never touch the flags field. 
|
|
|
|
« Last Edit: January 23, 2010, 03:31:54 PM by NotMe »
|
Logged
|
|
|
|
|
NotMe
|
 |
« Reply #18 on: January 23, 2010, 03:51:29 PM » |
|
Basically, this always patches the license for Slot 0. If there is no value for Content for Slot 0 it sets it. It never touches Flags for Slot 0 For Slot 1 to Slot 15 it checks if License/Content/Flags has any value. If any of those fields has a value it then patches that Slot license. It also checks to see if the Content field is set. If Content field has no value then it sets it, otherwise it leaves content alone. It never touches any of the Flags fields. I hope that makes it clearer as to how this works. This fixes instances like some DLC for games that have both a free option and a paid option only show as free because the Content settings get erased with original swapping method. As do the Slot 1, Slot2, and Part of Slot 3 License and Content Fields. Here are the offsets for each slot: License Slot | License Offset | Content Offset | Flags Offset ------------------------------------------------------------- Slot 0 | 0x22C | 0x234 | 0x238 Slot 1 | 0x23C | 0x244 | 0x248 Slot 2 | 0x24C | 0x254 | 0x258 Slot 3 | 0x25C | 0x264 | 0x268 Slot 4 | 0x26C | 0x274 | 0x278 Slot 5 | 0x27C | 0x284 | 0x288 Slot 6 | 0x28C | 0x294 | 0x298 Slot 7 | 0x29C | 0x2A4 | 0x2A8 Slot 8 | 0x2AC | 0x2B4 | 0x2B8 Slot 9 | 0x2BC | 0x2C4 | 0x2C8 Slot 10 | 0x2CC | 0x2D4 | 0x2D8 Slot 11 | 0x2DC | 0x2E4 | 0x2E8 Slot 12 | 0x2EC | 0x2E4 | 0x2F8 Slot 13 | 0x2FC | 0x304 | 0x308 Slot 14 | 0x30C | 0x314 | 0x318 Slot 15 | 0x31C | 0x324 | 0x328
|
|
|
|
|
Logged
|
|
|
|
|
zouzzz
|
 |
« Reply #19 on: January 25, 2010, 07:56:32 AM » |
|
Thanks a lot. Can i use your code to update YS, please ?
|
|
|
|
|
Logged
|
|
|
|
|