예제 #1
0
        public virtual PeImageLoader CreatePeImageLoader()
        {
            ExeImageLoader mz = new ExeImageLoader(Services, Filename, RawImage);
            PeImageLoader  pe = new PeImageLoader(Services, Filename, RawImage, mz.e_lfanew);

            return(pe);
        }
예제 #2
0
        public virtual PeImageLoader CreatePeImageLoader()
        {
            ExeImageLoader mz       = new ExeImageLoader(Services, Filename, RawImage);
            var            e_lfanew = mz.LoadLfaToNewHeader();

            if (!e_lfanew.HasValue)
            {
                throw new BadImageFormatException();
            }
            PeImageLoader pe = new PeImageLoader(Services, Filename, RawImage, e_lfanew.Value);

            return(pe);
        }
예제 #3
0
        private void emulatorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var sc      = new ServiceContainer();
            var fs      = new FileStream(@"D:\dev\jkl\dec\halsten\decompiler_paq\upx\demo.exe", FileMode.Open);
            var size    = fs.Length;
            var abImage = new byte[size];

            fs.Read(abImage, 0, (int)size);
            var exe     = new ExeImageLoader(sc, "foolexe", abImage);
            var peLdr   = new PeImageLoader(sc, "foo.exe", abImage, exe.e_lfanew);
            var addr    = peLdr.PreferredBaseAddress;
            var program = peLdr.Load(addr);
            var rr      = peLdr.Relocate(program, addr);
            var win32   = new Win32Emulator(program.SegmentMap, program.Platform, program.ImportReferences);
            var emu     = new X86Emulator((IntelArchitecture)program.Architecture, program.SegmentMap, win32);

            emu.InstructionPointer = rr.EntryPoints[0].Address;
            emu.ExceptionRaised   += delegate { throw new Exception(); };
            emu.WriteRegister(Registers.esp, (uint)peLdr.PreferredBaseAddress.ToLinear() + 0x0FFC);
            emu.Start();
        }
예제 #4
0
 public Pe64Loader(PeImageLoader outer) : base(outer) {}
예제 #5
0
 public SizeSpecificLoader(PeImageLoader outer)
 {
     this.outer = outer;
 }
예제 #6
0
 private void Given_PeLoader()
 {
     peldr = new PeImageLoader(sc, "test.exe", fileImage, RvaPeHdr);
 }
예제 #7
0
 public Pe64Loader(PeImageLoader outer) : base(outer)
 {
 }
예제 #8
0
 public SizeSpecificLoader(PeImageLoader outer)
 {
     this.outer = outer;
 }
예제 #9
0
 private void Given_PeLoader()
 {
     peldr = new PeImageLoader(sc, ImageLocation.FromUri("file:test.exe"), fileImage, RvaPeHdr);
 }