Washi1337 / OldRod

An automated KoiVM disassembler and devirtualisation utility
GNU General Public License v3.0
350 stars 80 forks source link

Issue with modded KoiVM (key not found in dictionary) #37

Open AnErrupTion opened 3 years ago

AnErrupTion commented 3 years ago

Describe the bug I'm trying to decompile a modded KoiVM. I've already modified the code for the earlier steps (like the Koi stream and VMEntry type detection) to work. However there's one last problem at the IL to CIL recompiler. At one point, every (or almost every) recompilation of "initial CIL AST"s will fail, resulting in a "The given key is missing from the dictionary" error. When using the --salvage option, at the end of everything there are exactly 546 errors, all of which seem to be that same dictionary error.

To Reproduce Here's the binary file I'm trying to decompile : Brain.zip

Expected behavior I'm expecting OldRod to recompile the executable without any problems (I do expect warnings but no errors, or very minor errors), but this clearly isn't the case.

Screenshots Capture Capture1 Capture3 Capture4 Capture5

Additional context I don't know if this will help, but I've modified some function (in the same stage, IL to CIL recompiler) that also failed the recompilation. It was an IndexOutOfRangeException (or something like that) about getting the signature index by index of a parameter (I think it was in the VisitCompilationUnit function), and I simply added a condition to break if the parameter index is less or equal to 0. I also don't have a deep knowledge of (C)IL or stuff like that, so any help is appreciated.

Washi1337 commented 3 years ago

I cannot really reproduce this error without also knowing what the changes are that you made in the previous stages.

Also as a reminder (for all readers), OldRod is not going to support mods out of the box. Substantial architectural changes will break OldRod.

AnErrupTion commented 3 years ago

I did not make a lot of changes, mostly changing the Koi stream name, changing VMEntry detection and adding a check in the VisitCompilationUnit. I guess you'd need the source of my modified OldRod, I'll upload it when I can.

master861 commented 2 years ago

that look like chines koi to me