public void El32_Symbols_ReconstructPlt_BE() { var syms = new ImageSymbol[] { new ImageSymbol(Address.Ptr32(0x04000000)) { Name = "strcpy", Type = SymbolType.Procedure }, new ImageSymbol(Address.Ptr32(0x04000010)) { Name = "strcmp", Type = SymbolType.Procedure }, }.ToSortedList(k => k.Address); Given_ImageHeader(ElfMachine.EM_MIPS); Given_Program(); Given_BE32_GOT(0x0000000, 0x00000000, 0x04000010, 0x04000000); mr.ReplayAll(); When_CreateLoader32(); el32.LocateGotPointers(program, syms); Assert.AreEqual("strcmp_GOT", syms[Address.Ptr32(0x10000008)].Name); Assert.AreEqual("strcpy_GOT", syms[Address.Ptr32(0x1000000C)].Name); }
public void El32_Symbols_ReconstructPlt_BE() { var syms = new ImageSymbol[] { ImageSymbol.ExternalProcedure(arch.Object, Address.Ptr32(0x04000000), "strcpy"), ImageSymbol.ExternalProcedure(arch.Object, Address.Ptr32(0x04000010), "strcmp"), }.ToSortedList(k => k.Address); Given_ImageHeader(ElfMachine.EM_MIPS); Given_Program(); Given_BE32_GOT(0x0000000, 0x00000000, 0x04000010, 0x04000000); When_CreateLoader32(true); el32.LocateGotPointers(program, syms); Assert.AreEqual("strcmp_GOT", syms[Address.Ptr32(0x10000008)].Name); Assert.AreEqual("strcpy_GOT", syms[Address.Ptr32(0x1000000C)].Name); Assert.AreEqual(2, program.ImportReferences.Count); Assert.AreEqual("strcmp", program.ImportReferences[Address.Ptr32(0x10000008)].EntryName); Assert.AreEqual("strcpy", program.ImportReferences[Address.Ptr32(0x1000000C)].EntryName); }