diff options
Diffstat (limited to 'LibTSforge/Modifiers/RearmReset.cs')
| -rw-r--r-- | LibTSforge/Modifiers/RearmReset.cs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/LibTSforge/Modifiers/RearmReset.cs b/LibTSforge/Modifiers/RearmReset.cs new file mode 100644 index 0000000..be2b174 --- /dev/null +++ b/LibTSforge/Modifiers/RearmReset.cs @@ -0,0 +1,45 @@ +namespace LibTSforge.Modifiers +{ + using System; + using System.Collections.Generic; + using System.Linq; + using LibTSforge.PhysicalStore; + + public static class RearmReset + { + public static void Reset(PSVersion version, bool production) + { + Utils.KillSPP(); + + Logger.WriteLine("Writing TrustedStore data..."); + + using (IPhysicalStore store = Utils.GetStore(version, production)) + { + List<PSBlock> blocks; + + if (version == PSVersion.Win7) + { + blocks = store.FindBlocks(0xA0000).ToList(); + } + else + { + blocks = store.FindBlocks("__##USERSEP-RESERVED##__$$REARM-COUNT$$").ToList(); + } + + foreach (PSBlock block in blocks) + { + if (version == PSVersion.Win7) + { + store.SetBlock(block.KeyAsStr, block.ValueAsInt, new byte[8]); + } + else + { + store.SetBlock(block.KeyAsStr, block.ValueAsStr, new byte[8]); + } + } + + Logger.WriteLine("Successfully reset all rearm counters."); + } + } + } +} |
