Washi1337/AsmResolver

AsmResolver __arglist

Closed this issue · 6 comments

AsmResolver Version

5.1.0

.NET Version

.NET Framework 462

Operating System

Windows

Describe the Bug

If I'll try to feed this into the AsmResolver and do zero changes in assembly, and just write/save the module I'm getting a weird error

static void Main()
{
// VERY important to call this method
  DrawArgList(__arglist("Hello world!"))
}
public static void DrawArgList(__arglist)
{
    ArgIterator argIterator = new ArgIterator(__arglist);
    object[] array = new object[argIterator.GetRemainingCount()];
    int num = 0;
    while (argIterator.GetRemainingCount() > 0)
    {
        array[num++] = TypedReference.ToObject(argIterator.GetNextArg());
    }
    Console.WriteLine(array[0]);
}

How To Reproduce

  1. Create .NET Framework app (executable)
  2. Add the code that I wrote upper (Main + DrawArgList, very important to call DrawArgList somewhere in code)
  3. Compile
  4. Feed to AsmResolver
  5. Build/write
  6. Error

Expected Behavior

No error

Actual Behavior

Throws an error

ArgumentException
System.ArgumentException: Table is not supported by this encoder.
Parameter name: token
   at AsmResolver.PE.DotNet.Metadata.Tables.IndexEncoder.EncodeToken(MetadataToken token)
   at AsmResolver.DotNet.Builder.DotNetDirectoryBuffer.AddMemberRefParent(IMemberRefParent parent)
   at AsmResolver.DotNet.Builder.DotNetDirectoryBuffer.AddMemberReference(MemberReference member, Boolean allowDuplicates)
   at AsmResolver.DotNet.Builder.DotNetDirectoryFactory.ImportTables[TMember](ModuleDefinition module, TableIndex tableIndex, Func`2 importAction)
   at AsmResolver.DotNet.Builder.DotNetDirectoryFactory.ImportTypeSpecsAndMemberRefsIfSpecified(ModuleDefinition module, DotNetDirectoryBuffer buffer)
   at AsmResolver.DotNet.Builder.DotNetDirectoryFactory.CreateDotNetDirectory(ModuleDefinition module, INativeSymbolsProvider symbolsProvider, DiagnosticBag diagnosticBag)
   at AsmResolver.DotNet.Builder.ManagedPEImageBuilder.CreateImage(ModuleDefinition module)

Additional Context

No response

Potential fix is implemented in #414. Could you verify this indeed solves your issue?

Yes sure, do you have binaries with fixes otherwise I could compile it then

You can find the latest build on AppVeyor

Oh, cool, thanks, I didn't know that, I'll check today

Checked now with the latest version, now there's no errors anymore

Perfect, closing this as fixed then. This will be available in 5.2.0