Skip to content

Instantly share code, notes, and snippets.

@Not-A-Normal-Robot
Last active January 21, 2022 15:22
Show Gist options
  • Save Not-A-Normal-Robot/205d34cb1a0d0d05d3891645cc00f6c1 to your computer and use it in GitHub Desktop.
Save Not-A-Normal-Robot/205d34cb1a0d0d05d3891645cc00f6c1 to your computer and use it in GitHub Desktop.
My journey to reverse-engineer Pickcrafter

Today (21 Jan 2022) I figured out how to reverse engineer Pickcrafter.

Step 1: Get a copy of PickCrafter. I use the .apk version. Step 2: Unzip the .apk (yes, .apks are .zips). Step 3: You'll need 2 files from the unzipped folder:

  • \lib\arm64-v8a\libil2cpp.so
  • \assets\bin\Data\Managed\Metadata\global-metadata.dat

You can copy them somewhere safe and easy-to-navigate through cmd. In my case I put it in the root directory of C:.

Step 4: Use Il2CppDumper to convert the app into DLLs.

  • You might need to install .NET 5 or .NET 6
  • To use the app, use cmd and then go to Il2CppDumper's directory (the one that includes the exe)
  • On cmd, type in Il2CppDumper.exe <libil2cpp.so> <global-metadata.dat> <output-directory>
    • Replace <libil2cpp.so with the full path of libil2cpp.so. Do the same with <global-metadata.dat>.
    • Replace <output-directory> with the directory you want to store the DLLs in.

Step 5: Use dnSpy to convert DLLs into... I wouldn't say code, more like a skeleton.

  • In dnSpy, press File > Open, then go to <output-directory>\DummyDLL\Assembly-CSharp.dll
  • image Click on the triangle next to Assembly-CSharp, Assembly-CSharp.dll, and the {} symbols labeled with -.
  • There you have it! Now you can see all(?) of the custom classes in the game.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment