cevoj35548

StreamFab v6.1.0.2 Patch

Jan 15th, 2023 (edited)
1,778
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.74 KB | None | 0 0
  1. // USAGE:
  2. // Install "StreamFab_x64_6102.exe", SHA-1: ddd07ec17df0ec15cf0b7f80b16d441bd4635cab
  3. //  > Mirror: https://cdm-project.com/CDM-Tools/Streamfab/raw/branch/6.1.0.2/Install/StreamFab_x64_6102.exe
  4.  
  5. // COMPILING:
  6. //  GUIDE: https://cdn.discordapp.com/attachments/1063682551241248869/1064383805726654504/vmconnect_8v5LwfHWPQ.mp4-19444.mp4
  7. //  1. Compile in Visual Studio with .NET 6.0 or 7.0+, or with `dotnet build`
  8. //  2. Go to "C:\Program Files\StreamFab\StreamFab"
  9. //  3. Rename "StreamFab64.exe" to "StreamFab64_original.exe"
  10. //  4. Copy the compiled EXE and DLL files to this folder
  11. //  5. Rename your compiled EXE to "StreamFab64.exe" and run
  12.  
  13. // USING BINARIES: (may or may not work for you, compiling >>)
  14. //  1. Go to "C:\Program Files\StreamFab\StreamFab"
  15. //  2. Rename "StreamFab64.exe" to "StreamFab64_original.exe"
  16. //  3. Download binaries here: https://anonfiles.com/U5J3b6S0y1/SF_6102_patch_clean_7z
  17. //     Download .NET runtime: https://dotnet.microsoft.com/en-us/download/dotnet/6.0
  18. //  4. Extract archive to "C:\Program Files\StreamFab\StreamFab" and run
  19.  
  20.  
  21. using System;
  22. using System.Collections.Generic;
  23. using System.Diagnostics;
  24. using System.IO;
  25. using System.Linq;
  26. using System.Numerics;
  27. using System.Runtime.InteropServices;
  28. using System.Threading;
  29.  
  30.  
  31. #nullable enable
  32. internal class Program
  33. {
  34.     private static void Main([In] string[] obj0_1)
  35.     {
  36.         bool flag1 = File.Exists("StreamFab64_original.exe");
  37.         bool flag2 = false;
  38.         Console.WriteLine("StreamFab v6.1.0.2 Cleaned by cevo, original by smeagol\nMake sure your StreamFab main executable is named 'StreamFab64_original.exe'");
  39.         Console.WriteLine("Waiting for streamfab to start..");
  40.         int currentProcessId = Process.GetCurrentProcess().Id;
  41.         Process process;
  42.         while (true)
  43.         {
  44.             string str = flag1 ? "StreamFab64_original" : "StreamFab64";
  45.             if ((process = Enumerable.FirstOrDefault<Process>((IEnumerable<Process>)Process.GetProcessesByName(str), (Func<Process, bool>)(obj0_2 => obj0_2.Id != currentProcessId))) == null)
  46.             {
  47.                 if (flag1 && !flag2)
  48.                 {
  49.                     Process.Start(new ProcessStartInfo("StreamFab64_original.exe")
  50.                     {
  51.                         UseShellExecute = true
  52.                     });
  53.                     flag2 = true;
  54.                 }
  55.                 Thread.Sleep(1000);
  56.             }
  57.             else
  58.                 break;
  59.         }
  60.         Console.WriteLine("Writing patches..");
  61.         Int64 baseAddress = process.Modules[0].BaseAddress.ToInt64();
  62.         Int64 handle = process.Handle.ToInt64();
  63.         while (Program.ReadMemory(handle, baseAddress + 5104787, 1U)[0] != (byte)192)
  64.         {
  65.             Console.WriteLine("Waiting for process to start fully...");
  66.             Thread.Sleep(300);
  67.         }
  68.         Console.WriteLine("Base: {0}", (object)baseAddress);
  69.         Program.WriteMemory(handle, baseAddress + 5104788, (byte)233, (byte)188, (byte)5, (byte)0, (byte)0, (byte)144);
  70.         Program.WriteMemory(handle, baseAddress + 21720774, (byte)144, (byte)144);
  71.         Program.WriteMemory(handle, baseAddress + 21720814, (byte)15, (byte)133, (byte)110, (byte)6, (byte)0, (byte)0, (byte)0);
  72.         Program.WriteMemory(handle, baseAddress + 22999065, (byte)233, (byte)139, (byte)1, (byte)0, (byte)0, (byte)144);
  73.         Program.WriteMemory(handle, baseAddress + 24216528, (byte)233, (byte)222, (byte)1, (byte)0, (byte)0, (byte)144);
  74.         Program.WriteMemory(handle, baseAddress + 29456720, (byte)233, (byte)222, (byte)1, (byte)0, (byte)0, (byte)144);
  75.         Program.WriteMemory(handle, baseAddress + 24247732, (byte)144, (byte)144);
  76.         Program.WriteMemory(handle, baseAddress + 24252774, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  77.         Program.WriteMemory(handle, baseAddress + 25159210, (byte)235, (byte)38);
  78.         Program.WriteMemory(handle, baseAddress + 25175230, (byte)233, (byte)41, (byte)1, (byte)0, (byte)0, (byte)144);
  79.         Program.WriteMemory(handle, baseAddress + 26058757, (byte)144, (byte)144);
  80.         Program.WriteMemory(handle, baseAddress + 27500631, (byte)233, (byte)253, (byte)1, (byte)0, (byte)0, (byte)144);
  81.         Program.WriteMemory(handle, baseAddress + 27500618, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  82.         Program.WriteMemory(handle, baseAddress + 27501533, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  83.         Program.WriteMemory(handle, baseAddress + 27586047, (byte)235, (byte)102);
  84.         Program.WriteMemory(handle, baseAddress + 27796688, (byte)144, (byte)144);
  85.         Program.WriteMemory(handle, baseAddress + 27801667, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  86.         Program.WriteMemory(handle, baseAddress + 27801683, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  87.         Program.WriteMemory(handle, baseAddress + 27802430, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  88.         Program.WriteMemory(handle, baseAddress + 27802414, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  89.         Program.WriteMemory(handle, baseAddress + 29059547, (byte)233, (byte)27, (byte)2, (byte)0, (byte)0, (byte)144);
  90.         Program.WriteMemory(handle, baseAddress + 29093727, (byte)235, (byte)27);
  91.         Program.WriteMemory(handle, baseAddress + 29246998, (byte)144, (byte)144);
  92.         Program.WriteMemory(handle, baseAddress + 29246969, (byte)144, (byte)144);
  93.         Program.WriteMemory(handle, baseAddress + 29435689, (byte)144, (byte)144);
  94.         Program.WriteMemory(handle, baseAddress + 29435696, (byte)144, (byte)144);
  95.         Program.WriteMemory(handle, baseAddress + 29435703, (byte)235, (byte)73);
  96.         Program.WriteMemory(handle, baseAddress + 29624164, (byte)233, (byte)131, (byte)1, (byte)0, (byte)0, (byte)144);
  97.         Program.WriteMemory(handle, baseAddress + 29624602, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
  98.         Program.WriteMemory(handle, baseAddress + 29938880, (byte)144, (byte)144);
  99.         Program.WriteMemory(handle, baseAddress + 30835622, (byte)144, (byte)144);
  100.         Program.WriteMemory(handle, baseAddress + 5104788, (byte)233, (byte)188, (byte)5, (byte)0, (byte)0, (byte)144);
  101.         Program.WriteMemory(handle, baseAddress + 21720774, (byte)144, (byte)144);
  102.         Console.WriteLine("Done!");
  103.     }
  104.  
  105.     public static void WriteMemory(long addr, long dat, params byte[] _param2)
  106.     {
  107.         IntPtr obj0 = new IntPtr(addr);
  108.         IntPtr obj1 = new IntPtr(dat);
  109.  
  110.         uint num;
  111.         Program.VirtualProtectEx(obj0, obj1, _param2.Length, 64U, out num);
  112.         Program.WriteProcessMemory(obj0, obj1, _param2, _param2.Length, out int _);
  113.         Program.VirtualProtectEx(obj0, obj1, _param2.Length, num, out uint _);
  114.     }
  115.  
  116.     public static byte[] ReadMemory(long addr, long dat, [In] uint obj2)
  117.     {
  118.         IntPtr obj0 = new IntPtr(addr);
  119.         IntPtr obj1 = new IntPtr(dat);
  120.  
  121.         byte[] numArray = new byte[(int)obj2];
  122.         Program.ReadProcessMemory(obj0, obj1, numArray, numArray.Length, out int _);
  123.         return numArray;
  124.     }
  125.  
  126.     [DllImport("kernel32.dll")]
  127.     public static extern bool WriteProcessMemory(
  128.       [In] IntPtr obj0,
  129.       [In] IntPtr obj1,
  130.       [In] byte[] obj2,
  131.       [In] int obj3,
  132.       out int _param4);
  133.  
  134.     [DllImport("kernel32.dll")]
  135.     private static extern bool ReadProcessMemory(
  136.       [In] IntPtr obj0,
  137.       [In] IntPtr obj1,
  138.       [In] byte[] obj2,
  139.       [In] int obj3,
  140.       out int _param4);
  141.  
  142.     [DllImport("kernel32.dll")]
  143.     private static extern bool VirtualProtectEx(
  144.       [In] IntPtr obj0,
  145.       [In] IntPtr obj1,
  146.       [In] int obj2,
  147.       [In] uint obj3,
  148.       out uint _param4);
  149. }
  150.  
Add Comment
Please, Sign In to add comment