搜尋

GTA5

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[GTA5 插件] 《俠盜獵車手 V》GTA5 V1.68 Mod工具ScriptHookV及線上補丁詳解:如何在遊戲中安全使用Mod?

[複製連結]
1
BASA無雙 ( Lv.70 熾天使 ) 發表於 2023-12-23 12:42:45 | 只看該作者 回覆獎勵 |降序瀏覽 |閱讀模式
《俠盜獵車手 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
  1.     @echo off
  2. Powershell.exe set-executionpolicy Unrestricted | exit

  3. if exist ScriptHookV.dll (
  4.         echo Trying to patch ScriptHookV.dll
  5. ) else (
  6.         echo Can not find ScriptHookV.dll
  7.         pause
  8.         exit
  9. )

  10. if exist test_scripthook.ps1 (
  11.         del test_scripthook.ps1
  12. )

  13. echo   Add-Type -Language Csharp -TypeDefinition '   >> test_scripthook.ps1
  14. echo   using System.IO;   >> test_scripthook.ps1
  15. echo   using System;    >> test_scripthook.ps1
  16. echo   public class PatcherOnTheGo {    >> test_scripthook.ps1
  17. echo   public static void DoPatch() {    >> test_scripthook.ps1

  18. echo           string dllname = @"ScriptHookV.dll";   >> test_scripthook.ps1
  19. echo           var OLDpattern = new byte[] {0x74,0x3A,0x48};    >> test_scripthook.ps1
  20. echo           var NEWpattern = new byte[] {0xEB,0x3A,0x48};   >> test_scripthook.ps1

  21. echo           byte[] theFile = File.ReadAllBytes(dllname);   >> test_scripthook.ps1
  22. echo           int foundOLD = Search(theFile,OLDpattern);   >> test_scripthook.ps1
  23. echo           int foundNEW = Search(theFile,NEWpattern);   >> test_scripthook.ps1
  24. echo           Console.WriteLine("Old pattern first byte search result: " + foundOLD);    >> test_scripthook.ps1
  25. echo           Console.WriteLine("New pattern first byte search result: " + foundNEW);    >> test_scripthook.ps1
  26. echo                   if(foundOLD!=-1){   >> test_scripthook.ps1
  27. echo                           Console.WriteLine("Old byte value result: 0x"+(theFile[foundOLD].ToString("X2"))+" (" + theFile[foundOLD] + ")");    >> test_scripthook.ps1
  28. echo                   }else if(foundNEW!=-1){   >> test_scripthook.ps1
  29. echo                           Console.WriteLine("New byte value result: 0x"+(theFile[foundNEW].ToString("X2"))+" (" + theFile[foundNEW] + ")");   >> test_scripthook.ps1
  30. echo                   }   >> test_scripthook.ps1
  31. echo                   if(foundOLD!=-1){   >> test_scripthook.ps1
  32. echo                           File.WriteAllBytes(dllname+@"._OLD_.dll", theFile);   >> test_scripthook.ps1

  33. echo                         // theFile[foundOLD] = 0xEB; //235   >> test_scripthook.ps1

  34. echo                                 for (int xx = 0; xx ^< NEWpattern.Length; xx++)  >>  test_scripthook.ps1
  35. echo                                 {  >>  test_scripthook.ps1
  36. echo                                         theFile[foundOLD+xx] = NEWpattern[xx];  >> test_scripthook.ps1
  37. echo                                 }  >> test_scripthook.ps1
  38.                                 

  39. echo                           Console.WriteLine("Sucesfully patched!");   >> test_scripthook.ps1

  40. echo                           File.WriteAllBytes(dllname, theFile);   >> test_scripthook.ps1
  41. echo                   }else{   >> test_scripthook.ps1
  42. echo                           Console.WriteLine("Already patched!");   >> test_scripthook.ps1
  43. echo                   }   >> test_scripthook.ps1
  44. echo           }   >> test_scripthook.ps1
  45. echo           public static int Search(byte[] src, byte[] pattern)   >> test_scripthook.ps1
  46. echo           {   >> test_scripthook.ps1
  47. echo                   int maxFirstCharSlot = src.Length - pattern.Length + 1;   >> test_scripthook.ps1
  48. echo     for (int i = 0; i ^< maxFirstCharSlot; i++)   >> test_scripthook.ps1
  49. echo                   {   >> test_scripthook.ps1
  50. echo                           if (src[i] != pattern[0]) >> test_scripthook.ps1
  51. echo                                   continue;   >> test_scripthook.ps1
  52. echo                           for (int j = pattern.Length - 1; j ^>= 1; j--)    >> test_scripthook.ps1
  53. echo                           {   >> test_scripthook.ps1
  54. echo                              if (src[i + j] != pattern[j]) break;   >> test_scripthook.ps1
  55. echo                              if (j == 1) return i;   >> test_scripthook.ps1
  56. echo                           }   >> test_scripthook.ps1
  57. echo                   }   >> test_scripthook.ps1
  58. echo                   return -1;   >> test_scripthook.ps1
  59. echo           }   >> test_scripthook.ps1
  60. echo   }   >> test_scripthook.ps1
  61. echo   '    >> test_scripthook.ps1
  62. echo   [PatcherOnTheGo]::DoPatch()    >> test_scripthook.ps1

  63. Powershell.exe ./test_scripthook.ps1

  64. del test_scripthook.ps1

  65. pause
複製代碼
c# patch exe creator
  1.   @echo off
  2. if exist ScriptHookV.dll (
  3.         echo Trying to patch ScriptHookV.dll
  4. ) else (
  5.         echo Can not find ScriptHookV.dll
  6.         pause
  7.         exit
  8. )
  9. if exist temp_scripthook_patcher.exe (
  10.     del temp_scripthook_patcher.exe
  11. )
  12. if exist test_scripthook.cs (
  13.     del test_scripthook.cs
  14. )
  15. echo   using System.IO;   >> test_scripthook.cs
  16. echo   using System;    >> test_scripthook.cs
  17. echo   namespace patcher{ internal static class Program{ static void Main(){DoPatch();Console.ReadLine();}    >> test_scripthook.cs
  18. echo   public static void DoPatch() {    >> test_scripthook.cs

  19. echo           string dllname = @"ScriptHookV.dll";   >> test_scripthook.cs
  20. echo           var OLDpattern = new byte[] {0x74,0x3A,0x48};    >> test_scripthook.cs
  21. echo           var NEWpattern = new byte[] {0xEB,0x3A,0x48};   >> test_scripthook.cs

  22. echo           byte[] theFile = File.ReadAllBytes(dllname);   >> test_scripthook.cs
  23. echo           int foundOLD = Search(theFile,OLDpattern);   >> test_scripthook.cs
  24. echo           int foundNEW = Search(theFile,NEWpattern);   >> test_scripthook.cs
  25. echo           Console.WriteLine("Old pattern first byte search result: " + foundOLD);    >> test_scripthook.cs
  26. echo           Console.WriteLine("New pattern first byte search result: " + foundNEW);    >> test_scripthook.cs
  27. echo                   if(foundOLD!=-1){   >> test_scripthook.cs
  28. echo                           Console.WriteLine("Old byte value result: 0x"+(theFile[foundOLD].ToString("X2"))+" (" + theFile[foundOLD] + ")");    >> test_scripthook.cs
  29. echo                   }else if(foundNEW!=-1){   >> test_scripthook.cs
  30. echo                           Console.WriteLine("New byte value result: 0x"+(theFile[foundNEW].ToString("X2"))+" (" + theFile[foundNEW] + ")");   >> test_scripthook.cs
  31. echo                   }   >> test_scripthook.cs
  32. echo                   if(foundOLD!=-1){   >> test_scripthook.cs
  33. echo                           File.WriteAllBytes(dllname+@"._OLD_.dll", theFile);   >> test_scripthook.cs

  34. echo                         // theFile[foundOLD] = 0xEB; //235   >> test_scripthook.cs

  35. echo                         for (int xx = 0; xx ^< NEWpattern.Length; xx++)  >> test_scripthook.cs
  36. echo                         {  >> test_scripthook.cs
  37. echo                                 theFile[foundOLD+xx] = NEWpattern[xx];  >> test_scripthook.cs
  38. echo                         }  >> test_scripthook.cs
  39.                                 

  40. echo                           Console.WriteLine("Sucesfully patched!");   >> test_scripthook.cs
  41. echo                           File.WriteAllBytes(dllname, theFile);   >> test_scripthook.cs
  42. echo                   }else{   >> test_scripthook.cs
  43. echo                           Console.WriteLine("Already patched!");   >> test_scripthook.cs
  44. echo                   }   >> test_scripthook.cs
  45. echo           }   >> test_scripthook.cs
  46. echo           public static int Search(byte[] src, byte[] pattern)   >> test_scripthook.cs
  47. echo           {   >> test_scripthook.cs
  48. echo                   int maxFirstCharSlot = src.Length - pattern.Length + 1;   >> test_scripthook.cs
  49. echo     for (int i = 0; i ^< maxFirstCharSlot; i++)   >> test_scripthook.cs
  50. echo                   {   >> test_scripthook.cs
  51. echo                           if (src[i] != pattern[0]) >> test_scripthook.cs
  52. echo                                   continue;   >> test_scripthook.cs
  53. echo                           for (int j = pattern.Length - 1; j ^>= 1; j--)    >> test_scripthook.cs
  54. echo                           {   >> test_scripthook.cs
  55. echo                              if (src[i + j] != pattern[j]) break;   >> test_scripthook.cs
  56. echo                              if (j == 1) return i;   >> test_scripthook.cs
  57. echo                           }   >> test_scripthook.cs
  58. echo                   }   >> test_scripthook.cs
  59. echo                   return -1;   >> test_scripthook.cs
  60. echo           }   >> test_scripthook.cs
  61. echo   }  } >> test_scripthook.cs
  62. C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:temp_scripthook_patcher.exe /target:exe test_scripthook.cs
  63. IF ERRORLEVEL 1 (
  64.         pause
  65.         exit
  66. )
  67. cls
  68. del test_scripthook.cs
  69. temp_scripthook_patcher.exe
  70. del temp_scripthook_patcher.exe
  71. exit
複製代碼


所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。









大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單