《俠盜獵車手 V》
【發佈】線上補丁的ScriptHook
ScriptHookV.dll 用於線上補丁 ScriptHookV GTAV
ScriptHookV的線上補丁,使用PowerShell和C#製作
只需將檔案放在ScriptHookV.dll旁邊,然後點選“patch”!
未檢測到的dsound.dll asi載入器(刪除dinput8.dll)
《俠盜獵車手 V》是一款備受歡迎的開放世界動作冒險遊戲,它提供了一個廣闊的虛擬城市,讓玩家可以自由探索並參與各種任務和活動。這款遊戲的熱度一直居高不下,吸引了大量的玩家。而在這個遊戲中,Mod(修改)也一直是玩家們熱衷的一部分,其中ScriptHookV是一個廣泛使用的工具。
在遊戲中使用Mod可以為玩家帶來各種有趣的體驗,包括新增新的角色、載具、武器、地圖等等。而為了使用這些Mod,通常需要使用ScriptHookV這樣的工具,以確保Mod正常運行。不過,需要注意的是,遊戲的線上模式通常不允許使用Mod,這是為了維護遊戲的公平性和安全性。
上面提到的內容涉及一個名為“ScriptHookV”的工具,它似乎是一個用於線上補丁的版本。在這個資訊中,提到了ScriptHookV.dll檔案,這是Mod工具ScriptHookV的一部分。該補丁似乎是為了讓ScriptHookV在遊戲的線上模式中運行,而且是在PowerShell和C#中製作的。
使用這個補丁的方式似乎非常簡單,只需將檔案放在ScriptHookV.dll檔案旁邊,然後點選“patch”按鈕即可。這可能是一種讓Mod在線上模式下運行的方法,儘管要注意,遊戲製造商通常會採取措施來檢測並禁止使用Mod來維護遊戲的安全性和公平性。
另外,還提到了一個叫做“undetected dsound.dll asi loader”的內容,似乎是一個未被檢測到的asi載入器,可以刪除dinput8.dll檔案。這可能與Mod的載入和運行有關,但具體細節需要根據實際使用情況進一步瞭解。
c# inside powershell- @echo off
- Powershell.exe set-executionpolicy Unrestricted | exit
-
- if exist ScriptHookV.dll (
- echo Trying to patch ScriptHookV.dll
- ) else (
- echo Can not find ScriptHookV.dll
- pause
- exit
- )
-
- if exist test_scripthook.ps1 (
- del test_scripthook.ps1
- )
-
- echo Add-Type -Language Csharp -TypeDefinition ' >> test_scripthook.ps1
- echo using System.IO; >> test_scripthook.ps1
- echo using System; >> test_scripthook.ps1
- echo public class PatcherOnTheGo { >> test_scripthook.ps1
- echo public static void DoPatch() { >> test_scripthook.ps1
-
- echo string dllname = @"ScriptHookV.dll"; >> test_scripthook.ps1
- echo var OLDpattern = new byte[] {0x74,0x3A,0x48}; >> test_scripthook.ps1
- echo var NEWpattern = new byte[] {0xEB,0x3A,0x48}; >> test_scripthook.ps1
-
- echo byte[] theFile = File.ReadAllBytes(dllname); >> test_scripthook.ps1
- echo int foundOLD = Search(theFile,OLDpattern); >> test_scripthook.ps1
- echo int foundNEW = Search(theFile,NEWpattern); >> test_scripthook.ps1
- echo Console.WriteLine("Old pattern first byte search result: " + foundOLD); >> test_scripthook.ps1
- echo Console.WriteLine("New pattern first byte search result: " + foundNEW); >> test_scripthook.ps1
- echo if(foundOLD!=-1){ >> test_scripthook.ps1
- echo Console.WriteLine("Old byte value result: 0x"+(theFile[foundOLD].ToString("X2"))+" (" + theFile[foundOLD] + ")"); >> test_scripthook.ps1
- echo }else if(foundNEW!=-1){ >> test_scripthook.ps1
- echo Console.WriteLine("New byte value result: 0x"+(theFile[foundNEW].ToString("X2"))+" (" + theFile[foundNEW] + ")"); >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo if(foundOLD!=-1){ >> test_scripthook.ps1
- echo File.WriteAllBytes(dllname+@"._OLD_.dll", theFile); >> test_scripthook.ps1
-
- echo // theFile[foundOLD] = 0xEB; //235 >> test_scripthook.ps1
-
- echo for (int xx = 0; xx ^< NEWpattern.Length; xx++) >> test_scripthook.ps1
- echo { >> test_scripthook.ps1
- echo theFile[foundOLD+xx] = NEWpattern[xx]; >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
-
-
- echo Console.WriteLine("Sucesfully patched!"); >> test_scripthook.ps1
-
- echo File.WriteAllBytes(dllname, theFile); >> test_scripthook.ps1
- echo }else{ >> test_scripthook.ps1
- echo Console.WriteLine("Already patched!"); >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo public static int Search(byte[] src, byte[] pattern) >> test_scripthook.ps1
- echo { >> test_scripthook.ps1
- echo int maxFirstCharSlot = src.Length - pattern.Length + 1; >> test_scripthook.ps1
- echo for (int i = 0; i ^< maxFirstCharSlot; i++) >> test_scripthook.ps1
- echo { >> test_scripthook.ps1
- echo if (src[i] != pattern[0]) >> test_scripthook.ps1
- echo continue; >> test_scripthook.ps1
- echo for (int j = pattern.Length - 1; j ^>= 1; j--) >> test_scripthook.ps1
- echo { >> test_scripthook.ps1
- echo if (src[i + j] != pattern[j]) break; >> test_scripthook.ps1
- echo if (j == 1) return i; >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo return -1; >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo } >> test_scripthook.ps1
- echo ' >> test_scripthook.ps1
- echo [PatcherOnTheGo]::DoPatch() >> test_scripthook.ps1
-
- Powershell.exe ./test_scripthook.ps1
-
- del test_scripthook.ps1
-
- pause
複製代碼 c# patch exe creator- @echo off
- if exist ScriptHookV.dll (
- echo Trying to patch ScriptHookV.dll
- ) else (
- echo Can not find ScriptHookV.dll
- pause
- exit
- )
- if exist temp_scripthook_patcher.exe (
- del temp_scripthook_patcher.exe
- )
- if exist test_scripthook.cs (
- del test_scripthook.cs
- )
- echo using System.IO; >> test_scripthook.cs
- echo using System; >> test_scripthook.cs
- echo namespace patcher{ internal static class Program{ static void Main(){DoPatch();Console.ReadLine();} >> test_scripthook.cs
- echo public static void DoPatch() { >> test_scripthook.cs
-
- echo string dllname = @"ScriptHookV.dll"; >> test_scripthook.cs
- echo var OLDpattern = new byte[] {0x74,0x3A,0x48}; >> test_scripthook.cs
- echo var NEWpattern = new byte[] {0xEB,0x3A,0x48}; >> test_scripthook.cs
-
- echo byte[] theFile = File.ReadAllBytes(dllname); >> test_scripthook.cs
- echo int foundOLD = Search(theFile,OLDpattern); >> test_scripthook.cs
- echo int foundNEW = Search(theFile,NEWpattern); >> test_scripthook.cs
- echo Console.WriteLine("Old pattern first byte search result: " + foundOLD); >> test_scripthook.cs
- echo Console.WriteLine("New pattern first byte search result: " + foundNEW); >> test_scripthook.cs
- echo if(foundOLD!=-1){ >> test_scripthook.cs
- echo Console.WriteLine("Old byte value result: 0x"+(theFile[foundOLD].ToString("X2"))+" (" + theFile[foundOLD] + ")"); >> test_scripthook.cs
- echo }else if(foundNEW!=-1){ >> test_scripthook.cs
- echo Console.WriteLine("New byte value result: 0x"+(theFile[foundNEW].ToString("X2"))+" (" + theFile[foundNEW] + ")"); >> test_scripthook.cs
- echo } >> test_scripthook.cs
- echo if(foundOLD!=-1){ >> test_scripthook.cs
- echo File.WriteAllBytes(dllname+@"._OLD_.dll", theFile); >> test_scripthook.cs
-
- echo // theFile[foundOLD] = 0xEB; //235 >> test_scripthook.cs
-
- echo for (int xx = 0; xx ^< NEWpattern.Length; xx++) >> test_scripthook.cs
- echo { >> test_scripthook.cs
- echo theFile[foundOLD+xx] = NEWpattern[xx]; >> test_scripthook.cs
- echo } >> test_scripthook.cs
-
-
- echo Console.WriteLine("Sucesfully patched!"); >> test_scripthook.cs
- echo File.WriteAllBytes(dllname, theFile); >> test_scripthook.cs
- echo }else{ >> test_scripthook.cs
- echo Console.WriteLine("Already patched!"); >> test_scripthook.cs
- echo } >> test_scripthook.cs
- echo } >> test_scripthook.cs
- echo public static int Search(byte[] src, byte[] pattern) >> test_scripthook.cs
- echo { >> test_scripthook.cs
- echo int maxFirstCharSlot = src.Length - pattern.Length + 1; >> test_scripthook.cs
- echo for (int i = 0; i ^< maxFirstCharSlot; i++) >> test_scripthook.cs
- echo { >> test_scripthook.cs
- echo if (src[i] != pattern[0]) >> test_scripthook.cs
- echo continue; >> test_scripthook.cs
- echo for (int j = pattern.Length - 1; j ^>= 1; j--) >> test_scripthook.cs
- echo { >> test_scripthook.cs
- echo if (src[i + j] != pattern[j]) break; >> test_scripthook.cs
- echo if (j == 1) return i; >> test_scripthook.cs
- echo } >> test_scripthook.cs
- echo } >> test_scripthook.cs
- echo return -1; >> test_scripthook.cs
- echo } >> test_scripthook.cs
- echo } } >> test_scripthook.cs
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:temp_scripthook_patcher.exe /target:exe test_scripthook.cs
- IF ERRORLEVEL 1 (
- pause
- exit
- )
- cls
- del test_scripthook.cs
- temp_scripthook_patcher.exe
- del temp_scripthook_patcher.exe
- exit
複製代碼
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
|