Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // USAGE:
- // Install "StreamFab_x64_6102.exe", SHA-1: ddd07ec17df0ec15cf0b7f80b16d441bd4635cab
- // > Mirror: https://cdm-project.com/CDM-Tools/Streamfab/raw/branch/6.1.0.2/Install/StreamFab_x64_6102.exe
- // COMPILING:
- // GUIDE: https://cdn.discordapp.com/attachments/1063682551241248869/1064383805726654504/vmconnect_8v5LwfHWPQ.mp4-19444.mp4
- // 1. Compile in Visual Studio with .NET 6.0 or 7.0+, or with `dotnet build`
- // 2. Go to "C:\Program Files\StreamFab\StreamFab"
- // 3. Rename "StreamFab64.exe" to "StreamFab64_original.exe"
- // 4. Copy the compiled EXE and DLL files to this folder
- // 5. Rename your compiled EXE to "StreamFab64.exe" and run
- // USING BINARIES: (may or may not work for you, compiling >>)
- // 1. Go to "C:\Program Files\StreamFab\StreamFab"
- // 2. Rename "StreamFab64.exe" to "StreamFab64_original.exe"
- // 3. Download binaries here: https://anonfiles.com/U5J3b6S0y1/SF_6102_patch_clean_7z
- // Download .NET runtime: https://dotnet.microsoft.com/en-us/download/dotnet/6.0
- // 4. Extract archive to "C:\Program Files\StreamFab\StreamFab" and run
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Numerics;
- using System.Runtime.InteropServices;
- using System.Threading;
- #nullable enable
- internal class Program
- {
- private static void Main([In] string[] obj0_1)
- {
- bool flag1 = File.Exists("StreamFab64_original.exe");
- bool flag2 = false;
- Console.WriteLine("StreamFab v6.1.0.2 Cleaned by cevo, original by smeagol\nMake sure your StreamFab main executable is named 'StreamFab64_original.exe'");
- Console.WriteLine("Waiting for streamfab to start..");
- int currentProcessId = Process.GetCurrentProcess().Id;
- Process process;
- while (true)
- {
- string str = flag1 ? "StreamFab64_original" : "StreamFab64";
- if ((process = Enumerable.FirstOrDefault<Process>((IEnumerable<Process>)Process.GetProcessesByName(str), (Func<Process, bool>)(obj0_2 => obj0_2.Id != currentProcessId))) == null)
- {
- if (flag1 && !flag2)
- {
- Process.Start(new ProcessStartInfo("StreamFab64_original.exe")
- {
- UseShellExecute = true
- });
- flag2 = true;
- }
- Thread.Sleep(1000);
- }
- else
- break;
- }
- Console.WriteLine("Writing patches..");
- Int64 baseAddress = process.Modules[0].BaseAddress.ToInt64();
- Int64 handle = process.Handle.ToInt64();
- while (Program.ReadMemory(handle, baseAddress + 5104787, 1U)[0] != (byte)192)
- {
- Console.WriteLine("Waiting for process to start fully...");
- Thread.Sleep(300);
- }
- Console.WriteLine("Base: {0}", (object)baseAddress);
- Program.WriteMemory(handle, baseAddress + 5104788, (byte)233, (byte)188, (byte)5, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 21720774, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 21720814, (byte)15, (byte)133, (byte)110, (byte)6, (byte)0, (byte)0, (byte)0);
- Program.WriteMemory(handle, baseAddress + 22999065, (byte)233, (byte)139, (byte)1, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 24216528, (byte)233, (byte)222, (byte)1, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29456720, (byte)233, (byte)222, (byte)1, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 24247732, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 24252774, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 25159210, (byte)235, (byte)38);
- Program.WriteMemory(handle, baseAddress + 25175230, (byte)233, (byte)41, (byte)1, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 26058757, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27500631, (byte)233, (byte)253, (byte)1, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27500618, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27501533, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27586047, (byte)235, (byte)102);
- Program.WriteMemory(handle, baseAddress + 27796688, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27801667, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27801683, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27802430, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 27802414, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29059547, (byte)233, (byte)27, (byte)2, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29093727, (byte)235, (byte)27);
- Program.WriteMemory(handle, baseAddress + 29246998, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29246969, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29435689, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29435696, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29435703, (byte)235, (byte)73);
- Program.WriteMemory(handle, baseAddress + 29624164, (byte)233, (byte)131, (byte)1, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29624602, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 29938880, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 30835622, (byte)144, (byte)144);
- Program.WriteMemory(handle, baseAddress + 5104788, (byte)233, (byte)188, (byte)5, (byte)0, (byte)0, (byte)144);
- Program.WriteMemory(handle, baseAddress + 21720774, (byte)144, (byte)144);
- Console.WriteLine("Done!");
- }
- public static void WriteMemory(long addr, long dat, params byte[] _param2)
- {
- IntPtr obj0 = new IntPtr(addr);
- IntPtr obj1 = new IntPtr(dat);
- uint num;
- Program.VirtualProtectEx(obj0, obj1, _param2.Length, 64U, out num);
- Program.WriteProcessMemory(obj0, obj1, _param2, _param2.Length, out int _);
- Program.VirtualProtectEx(obj0, obj1, _param2.Length, num, out uint _);
- }
- public static byte[] ReadMemory(long addr, long dat, [In] uint obj2)
- {
- IntPtr obj0 = new IntPtr(addr);
- IntPtr obj1 = new IntPtr(dat);
- byte[] numArray = new byte[(int)obj2];
- Program.ReadProcessMemory(obj0, obj1, numArray, numArray.Length, out int _);
- return numArray;
- }
- [DllImport("kernel32.dll")]
- public static extern bool WriteProcessMemory(
- [In] IntPtr obj0,
- [In] IntPtr obj1,
- [In] byte[] obj2,
- [In] int obj3,
- out int _param4);
- [DllImport("kernel32.dll")]
- private static extern bool ReadProcessMemory(
- [In] IntPtr obj0,
- [In] IntPtr obj1,
- [In] byte[] obj2,
- [In] int obj3,
- out int _param4);
- [DllImport("kernel32.dll")]
- private static extern bool VirtualProtectEx(
- [In] IntPtr obj0,
- [In] IntPtr obj1,
- [In] int obj2,
- [In] uint obj3,
- out uint _param4);
- }
Add Comment
Please, Sign In to add comment