SamboyCoding / Cpp2IL

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

Blockade 3D is unsupported #2

Closed AndnixSH closed 3 years ago

AndnixSH commented 4 years ago

Well this is the first time I try this tool I try the game called Blockade3D but it gets stuck:

PS F:\Portable Apps\Cpp2IL> ./Cpp2IL-Win --game-path D:\Steam\steamapps\common\Blockade3d\
===Cpp2IL by Samboy063===
A Tool to Reverse Unity's "il2cpp" Build Process.
Running on Win32NT
Using path: D:\Steam\steamapps\common\Blockade3d\
Auto-detected game name: Blockade3D
Located game EXE: D:\Steam\steamapps\common\Blockade3d\Blockade3D.exe
Located global-metadata: D:\Steam\steamapps\common\Blockade3d\Blockade3D_Data\il2cpp_data\Metadata\global-metadata.dat

Attempting to determine Unity version...
This game is built with Unity version 2019.2.0
Reading metadata...
Using IL2CPP Metadata version 24,2
        Reading image definitions...OK (4,9696 ms)
        Reading type definitions...OK (105,2784 ms)
        Reading interface offsets...OK (5,5931 ms)
        Reading method definitions...OK (511,8608 ms)
        Reading method parameter definitions...OK (127,8583 ms)
        Reading field definitions...OK (76,0681 ms)
        Reading default field values...OK (9,5117 ms)
        Reading default parameter values...OK (0,5215 ms)
        Reading property definitions...OK (25,2022 ms)
        Reading interface definitions...OK (1,461 ms)
        Reading nested type definitions...OK (0,0653 ms)
        Reading event definitions...OK (0,3029 ms)
        Reading generic container definitions...OK (0,6818 ms)
        Reading generic parameter definitions...OK (1,2739 ms)
        Reading string definitions...OK (7,301 ms)
        Reading usage data...OK (135,5431 ms)
        Reading field references...OK (0,5184 ms)
        Reading attribute types...OK (27,2076 ms)
Reading binary / game assembly...
        -Initializing MemoryStream of 16517120 bytes, parsing sections, and initializing with auto+ mode.
Reading PE File Header...OK (0,2667 ms)
        Image Base at 0x10000000
        DLL is 32-bit
Looking for registration functions...
        Identified execute section .text
        Identified execute section il2cpp
        Identified data section .rdata
        Identified data section .data
Attempting to locate code and metadata registration functions...
        (32-bit PE)
        Failed to find code and metadata registration functions using primary location method (probably because we're post-2019), checking if we can use the fallback...
        Found il2cpp_init export (resolves to virtual addr 0x100264A0), using fallback method to find Code and Metadata registration...
        Located probable Runtime::Init function at virtual addr 0x10055AE0
SamboyCoding commented 4 years ago

Partially fixed in https://github.com/SamboyCoding/Cpp2IL/commit/8217549c90d119d935cbc72a679fb56bb40e9ad5, but the root cause is that Blockade is a 32-bit game, and those apparently have some key differences from 64-bit games (who'd have thought)

Essentially, you'll get past this point now, and it'll generate the dummy DLLs, but you'll get a lot of errors when it comes to analysis.

SamboyCoding commented 3 years ago

32-bit compatibility is now just as good as 64-bit with the new analysis engine, (latest release), so closing this.