SamboyCoding / Cpp2IL

Work-in-progress tool to reverse unity's IL2CPP toolchain.
MIT License
1.6k stars 187 forks source link

Fail to read NSO binary #161

Open ppng222 opened 1 year ago

ppng222 commented 1 year ago

I'm trying to work with a Switch binary here but I keep getting the error Unhandled exception. System.Exception: Found more than 1 pointer as pCodegenModules I'm unsure what to do here or if there is nothing else I can do. I am using a build from the development branch, but this issue also occurs with release 2022.1.0#8



[Info] [Program] Running on Win32NT
[Info] [Plugins] Loading plugins from G:\JDUnity\Cpp2IL\Cpp2IL\bin\Debug\net6.0\win-x64\Plugins...
[Info] [Plugins] Using Plugin: Cpp2IL Built-In
[Warn] [Program] Using force options, I sure hope you know what you're doing!
[Info] [Library] Initializing Metadata...
[Info] [Library]        Using actual IL2CPP Metadata version 29
[Info] [Library] Initialized Metadata in 192ms
[Info] [Library] Using binary type Nintendo Switch Object (from LibCpp2IL)
[Info] [Library] Searching Binary for Required Data...
[Info] [Library]        Decompressing NSO file...
Unhandled exception. System.Exception: Found more than 1 pointer as pCodegenModules
   at LibCpp2IL.BinarySearcher.FindCodeRegistrationPost2019() in G:\JDUnity\Cpp2IL\LibCpp2IL\BinarySearcher.cs:line 196
   at LibCpp2IL.Il2CppBinary.FindCodeAndMetadataReg(Int32 methodCount, Int32 typeDefinitionsCount) in G:\JDUnity\Cpp2IL\LibCpp2IL\Il2CppBinary.cs:line 448
   at LibCpp2IL.LibCpp2IlBinaryRegistry.CreateAndInit(Byte[] buffer, Il2CppMetadata metadata) in G:\JDUnity\Cpp2IL\LibCpp2IL\LibCpp2IlBinaryRegistry.cs:line 68
   at LibCpp2IL.LibCpp2IlMain.Initialize(Byte[] binaryBytes, Byte[] metadataBytes, UnityVersion unityVersion) in G:\JDUnity\Cpp2IL\LibCpp2IL\LibCpp2IlMain.cs:line 159
   at LibCpp2IL.LibCpp2IlMain.LoadFromFile(String pePath, String metadataPath, UnityVersion unityVersion) in G:\JDUnity\Cpp2IL\LibCpp2IL\LibCpp2IlMain.cs:line 205
   at Cpp2IL.Core.Cpp2IlApi.InitializeLibCpp2Il(String assemblyPath, String metadataPath, UnityVersion unityVersion, Boolean allowUserToInputAddresses) in G:\JDUnity\Cpp2IL\Cpp2IL.Core\Cpp2IlApi.cs:line 60
   at Cpp2IL.Program.MainWithArgs(Cpp2IlRuntimeArgs runtimeArgs) in G:\JDUnity\Cpp2IL\Cpp2IL\Program.cs:line 415
   at Cpp2IL.Program.Main(String[] args) in G:\JDUnity\Cpp2IL\Cpp2IL\Program.cs:line 361```
SamboyCoding commented 1 year ago

Could you upload a log file also using the --verbose option?

ppng222 commented 1 year ago

logfile.log

SamboyCoding commented 1 year ago

Hmm that looks like quite a painful binary, I'm afraid I don't have any immediate suggestions without having my hands on the binary. You could join my discord (linked in the readme) and we can discuss more closely there, but my free time is often rather limited these days so I don't know how immediately I'd be able to help

EvansJahja commented 1 year ago

I have similar issue finding more than one pointer to pCodegenModules I've managed to get a working dll with this other project https://github.com/Perfare/Il2CppDumper

The binary I struggled with was the v1.1.0 of title ID: 0100B0100E26C000, build ID: D6A683602B518969

ImanCol commented 1 year ago

I had a similar issue here ...can you review? https://github.com/mafaca/UtinyRipper/issues/1464#issue-1646243127