Skip to content

support replace hashed class name by config #874

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions Il2CppDumper/Config.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
namespace Il2CppDumper
using System.Collections.Generic;

namespace Il2CppDumper
{

public class ReplaceHashName
{
public string TargetName { get; set; }
public string ReplaceToName { get; set; }
}

public class Config
{
public bool DumpMethod { get; set; } = true;
Expand All @@ -17,5 +26,7 @@ public class Config
public double ForceVersion { get; set; } = 24.3;
public bool ForceDump { get; set; } = false;
public bool NoRedirectedPointer { get; set; } = false;
}
public List<ReplaceHashName> ReplaceHashNames { get; set; }
public Dictionary<string, string> ReplaceHashNameMap { get; set; }
}
}
11 changes: 11 additions & 0 deletions Il2CppDumper/Il2Cpp/Metadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,17 @@ public string GetStringFromIndex(uint index)
if (!stringCache.TryGetValue(index, out var result))
{
result = ReadStringToNull(header.stringOffset + index);

string szReplaceToName = null;
if (result != null)
{
szReplaceToName = Il2CppDumper.Program.TryGetReplaceName(result);
}
if (szReplaceToName != null)
{
result = szReplaceToName;
}

stringCache.Add(index, result);
}
return result;
Expand Down
23 changes: 23 additions & 0 deletions Il2CppDumper/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class Program
static void Main(string[] args)
{
config = JsonSerializer.Deserialize<Config>(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"config.json"));
GenerateReplaceNameMap();
string il2cppPath = null;
string metadataPath = null;
string outputDir = null;
Expand Down Expand Up @@ -111,6 +112,28 @@ static void Main(string[] args)
}
}

static void GenerateReplaceNameMap()
{
if (config.ReplaceHashNames != null && config.ReplaceHashNames.Count > 0)
{
config.ReplaceHashNameMap = new System.Collections.Generic.Dictionary<string, string>();
for (int i = 0; i < config.ReplaceHashNames.Count; i++)
{
config.ReplaceHashNameMap.Add(config.ReplaceHashNames[i].TargetName, config.ReplaceHashNames[i].ReplaceToName);
}
}
}

public static string TryGetReplaceName(string szTargetName)
{
string szRet = null;
if(config.ReplaceHashNameMap != null)
{
config.ReplaceHashNameMap.TryGetValue(szTargetName, out szRet);
}
return szRet;
}

static void ShowHelp()
{
Console.WriteLine($"usage: {AppDomain.CurrentDomain.FriendlyName} <executable-file> <global-metadata> <output-directory>");
Expand Down
5 changes: 4 additions & 1 deletion Il2CppDumper/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,8 @@
"ForceIl2CppVersion": false,
"ForceVersion": 16,
"ForceDump": false,
"NoRedirectedPointer": false
"NoRedirectedPointer": false,
"ReplaceHashNames": [

]
}