Beispiel #1
0
 private void OnNameChanged()
 {
     userProc      = program.EnsureUserProcedure(Address, procedure.Name);
     userProc.Name = procedure.Name;
     this.name     = procedure.Name;
     SetTreeNodeText();
 }
Beispiel #2
0
 public ProcedureDesigner(
     Program program,
     Procedure procedure,
     Procedure_v1 userProc,
     Address address,
     bool isEntryPoint)
 {
     base.Component    = procedure;
     this.program      = program;
     this.procedure    = procedure;
     this.userProc     = userProc;
     this.Address      = address;
     this.isEntryPoint = isEntryPoint;
     if (userProc != null && !string.IsNullOrEmpty(userProc.Name))
     {
         this.name = userProc.Name;
     }
     else if (procedure != null)
     {
         this.name = procedure.Name;
     }
     if (procedure != null)
     {
         procedure.NameChanged += procedure_NameChanged;
     }
 }
Beispiel #3
0
 void procedure_NameChanged(object sender, EventArgs e)
 {
     userProc      = program.EnsureUserProcedure(Address, procedure.Name);
     userProc.Name = procedure.Name;
     this.name     = procedure.Name;
     SetTreeNodeText();
 }
        private void Given_UserProcedure(uint uAddr, string procName, string placement)
        {
            var addr  = Address.Ptr32(uAddr);
            var uProc = new Reko.Core.Serialization.Procedure_v1
            {
                Address    = addr.ToString(),
                Name       = procName,
                OutputFile = placement
            };

            program.User.Procedures.Add(addr, uProc);
        }
Beispiel #5
0
 private void SetAssumedRegisterValues(Address Address, Dictionary <RegisterStorage, string> dictionary)
 {
     userProc = program.EnsureUserProcedure(
         this.Address,
         procedure != null
             ? procedure.Name
             : userProc.Name);
     userProc.Assume = dictionary
                       .Select(de => new Core.Serialization.RegisterValue_v2
     {
         Register = de.Key.Name,
         Value    = de.Value
     })
                       .ToArray();
 }
Beispiel #6
0
 public ProcedureDesigner(Program program, Procedure procedure, Procedure_v1 userProc, Address address)
 {
     this.program   = program;
     this.procedure = procedure;
     this.userProc  = userProc;
     this.Address   = address;
     if (userProc != null && !string.IsNullOrEmpty(userProc.Name))
     {
         this.name = userProc.Name;
     }
     else
     {
         this.name = procedure.Name;
     }
 }
        public void Mfi_Save()
        {
            Given_Loader();
            Given_MainFormInteractor();
            Given_LoadPreferences();
            Given_DecompilerInstance();
            Given_XmlWriter();
            fsSvc.Setup(f => f.MakeRelativePath("foo.dcproject", "foo.exe")).Returns("foo.exe");
            fsSvc.Setup(f => f.MakeRelativePath("foo.dcproject", null)).Returns((string)null);
            uiSvc.Setup(u => u.ShowSaveFileDialog("foo.dcproject")).Returns("foo.dcproject").Verifiable();

            When_CreateMainFormInteractor();
            Assert.IsNotNull(loader);
            dcSvc.Object.Decompiler.Load("foo.exe");
            var p = new Reko.Core.Serialization.Procedure_v1
            {
                Address = "12345",
                Name    = "MyProc",
            };
            var program = dcSvc.Object.Decompiler.Project.Programs[0];

            program.User.Procedures.Add(Address.Ptr32(0x12345), p);
            program.User.Heuristics.Add("shingle");
            program.User.ExtractResources = true;

            interactor.Save();
            string s =
                @"<?xml version=""1.0"" encoding=""utf-8""?>
<project xmlns=""http://schemata.jklnet.org/Reko/v5"">
  <arch>x86-protected-32</arch>
  <platform>TestPlatform</platform>
  <input>
    <filename>foo.exe</filename>
    <user>
      <processor />
      <procedure name=""MyProc"">
        <address>00012345</address>
      </procedure>
      <heuristic name=""shingle"" />
      <registerValues />
    </user>
  </input>
</project>";
            var res = Encoding.UTF8.GetString(xmlStm.ToArray());

            Assert.AreEqual(s, res);
            uiSvc.Verify();
        }
Beispiel #8
0
        private void MarkAndScanProcedure(Address address)
        {
            var decompiler = services.GetService <IDecompilerService>().Decompiler;
            var proc       = decompiler.ScanProcedure(program, address);
            var userp      = new Reko.Core.Serialization.Procedure_v1
            {
                Address = address.ToString(),
                Name    = proc.Name,
            };
            var ups = program.UserProcedures;

            if (!ups.ContainsKey(address))
            {
                ups.Add(address, userp);
            }
        }
Beispiel #9
0
 private void MarkAndScanProcedure(Address address)
 {
     var decompiler = services.GetService<IDecompilerService>().Decompiler;
     var proc = decompiler.ScanProcedure(program, address);
     var userp = new Reko.Core.Serialization.Procedure_v1
     {
         Address = address.ToString(),
         Name = proc.Name,
     };
     var ups = program.UserProcedures;
     if (!ups.ContainsKey(address))
     {
         ups.Add(address, userp);
     }
 }