Пример #1
0
    public override bool DumpModule(nuint moduleHandle, ImageLayout imageLayout, string filePath)
    {
        try {
            var peImage = PEImageDumper.Dump(process, moduleHandle, ref imageLayout);
            if (peImage is null)
            {
                return(false);
            }

            peImage = PEImageDumper.ConvertImageLayout(peImage, imageLayout, ImageLayout.File);
            File.WriteAllBytes(filePath, peImage);
            return(true);
        }
        catch (Exception ex) {
            Logger.Exception(ex);
            return(false);
        }
    }
Пример #2
0
    static uint GetModuleSize(ClrModule module, NativeProcess process)
    {
        uint size = (uint)module.Size;

        if (size != 0)
        {
            return(size);
        }

        byte[] peHeader = new byte[0x1000];
        if (!process.TryReadBytes((void *)module.ImageBase, peHeader))
        {
            return(0);
        }

        try {
            return(PEImageDumper.GetImageSize(peHeader, dnlib.PE.ImageLayout.Memory));
        }
        catch (Exception ex) {
            Logger.Error($"Can't get image size of module '{module.Name}' at {Formatter.FormatHex((nuint)module.ImageBase)}");
            Logger.Exception(ex);
            return(0);
        }
    }