示例#1
0
        static void Main(string[] args)
        {
            using (var es = new PEStream(new FileStream(@"C:\Windows\System32\KERNELBASE.dll", FileMode.Open, FileAccess.Read), AddressMode.File)) {
                var nameBuffer = new byte[4096];

                foreach (var descriptor in es.ReadImportDescriptors())
                {
                    es.SeekVirtualAddress(descriptor.Name);
                    Console.WriteLine(es.ReadString(nameBuffer, 0));

                    foreach (var thunk in es.ReadImportLocationTable(descriptor))
                    {
                        if ((thunk & H.IMAGE_ORDINAL_FLAG32) != 0)
                        {
                            Console.WriteLine("    #{0}", thunk & 0xFFFF);
                        }
                        else
                        {
                            es.SeekVirtualAddress(thunk + 2);
                            Console.WriteLine("    {0}", es.ReadString(nameBuffer, 0));
                        }
                    }
                }
            }

            Console.Read();
        }