Example #1
0
            string GetValue(IByteProvider provider, long pos, long length)
            {
                // Read out the bytes
                if ((_hasher != null) && (provider != null) && (pos + length <= provider.Length))
                {
                    byte[] data = new byte[length];

                    for (long i = 0; i < length; i++)
                    {
                        data[i] = provider.ReadByte(pos + i);
                    }

                    byte[] hash = _hasher.ComputeHash(data);

                    StringBuilder builder = new StringBuilder();

                    foreach (byte b in hash)
                    {
                        builder.AppendFormat("{0:X02}", b);
                    }

                    return(builder.ToString());
                }
                else
                {
                    return("");
                }
            }
Example #2
0
        public void SetByteProvider(IByteProvider provider)
        {
            ByteProvider = provider;
            UpdateScrollbar();

            Invalidate();
        }
Example #3
0
        /// <summary>
        /// Shows the bits for the current byte
        /// </summary>
        /// <returns>A string that is like "Bits of byte n° XXX : XXXXXXXX"</returns>
        string Core_ShowBits()
        {
            string result = "";

            byte?         currentByte = null;
            IByteProvider currentFile = CurrentTabIsROM() ?
                                        MainHexBox.ByteProvider :
                                        FileHexBoxes[CurrentTab].ByteProvider;
            uint selection = CurrentAddress;

            if (selection < currentFile.Length)
            {
                currentByte = currentFile.ReadByte(selection);
            }

            BitInfo bitInfo = (currentByte == null) ? null :
                              new BitInfo((byte)currentByte, selection);

            if (bitInfo != null)
            {
                byte currentByteNotNull = (byte)currentByte;
                result = "Bits: " + bitInfo.ToString();
            }

            return(result);
        }
Example #4
0
        public void OpenFile(string file)
        {
            this.Text = file;

            ByteProvider = new FileByteProvider(file);
            HexView.SetByteProvider(ByteProvider);
        }
            private static string GetFixedValue(IByteProvider provider, long start, long length, int fixed_length, bool reverse, Func <byte[], string> func)
            {
                long max_length = provider.Length - start;

                if (max_length < fixed_length)
                {
                    return(string.Empty);
                }
                byte[] ba = new byte[fixed_length];
                if (reverse)
                {
                    for (int i = 0; i < fixed_length; ++i)
                    {
                        ba[fixed_length - i - 1] = provider.ReadByte(i + start);
                    }
                }
                else
                {
                    for (int i = 0; i < fixed_length; ++i)
                    {
                        ba[i] = provider.ReadByte(i + start);
                    }
                }

                return(func(ba));
            }
 public void SetByteProvider(Win32Assembly assembly, IByteProvider provider)
 {
     fileOffsetBox.Clear();
     rvaOffsetBox.Clear();
     vaOffsetBox.Clear();
     this.assembly       = assembly;
     hexBox.ByteProvider = provider;
 }
Example #7
0
 private byte[] ByteProviderToArray(IByteProvider b)
 {
     byte[] data = new byte[b.Length];
     for (int i = 0; i < b.Length; i++)
     {
         data[i] = b.ReadByte(i);
     }
     return(data);
 }
Example #8
0
        private byte[] getSelectedBytes(int len)
        {
            IByteProvider p = hexBox1.ByteProvider;

            byte[] b = new byte[len];

            for (int i = 0; i < len; i++)
            {
                b[i] = p.ReadByte(hexBox1.SelectionStart + i);
            }

            return b;
        }
Example #9
0
            string GetValue(IByteProvider provider, long pos, long len)
            {
                string ret = null;

                try
                {
                    ret = _inspector.Inspect(new HexInspectorData(provider), pos, len);
                }
                catch
                {
                }

                return(ret ?? String.Empty);
            }
Example #10
0
        private static string GetUnixTime(IByteProvider provider, long pos, bool littleEndian)
        {
            byte[] data = GetBytesFromProvider(provider, pos, 4);

            if (data != null)
            {
                DateTime t = new DateTime(1970, 1, 1);

                return(t.AddSeconds((double)BitConverter.ToUInt32(data, 0)).ToString());
            }
            else
            {
                return("?");
            }
        }
Example #11
0
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Name != "")
            {
                try
                {
                    int           off = Convert.ToInt32(e.Node.Name);
                    IByteProvider db  = hb1.ByteProvider;
                    if (off >= 0 && off < db.Length)
                    {
                        hb1.SelectionStart  = off;
                        hb1.SelectionLength = 1;
                    }
                }
                catch (Exception ex)
                {
                }
            }
            TreeNode t = e.Node;

            if (t.Parent != null && t.Parent.Text == "Materials")
            {
                try
                {
                    string s = t.Text;
                    for (int i = 0; i < s.Length; i++)
                    {
                        if (s[i] == '#')
                        {
                            s = s.Substring(i + 1);
                        }
                    }
                    int idx = Convert.ToInt32(s) - 1;
                    for (int i = 0; i < Materials.Count; i++)
                    {
                        if (Materials[i] == idx)
                        {
                            toolStripComboBox1.SelectedIndex = i;
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
        }
Example #12
0
            string GetValue(IByteProvider provider, long pos, long length)
            {
                ulong ret     = 0;
                int   bytePos = 0;

                while (pos < provider.Length)
                {
                    byte b = provider.ReadByte(pos++);
                    ret |= ((ulong)b & 0x7F) << (bytePos++ *7);
                    if ((b & 0x80) == 0)
                    {
                        break;
                    }
                }

                return(string.Format("{0}/0x{0:X08}", ret));
            }
Example #13
0
        private static byte[] GetBytesFromProvider(IByteProvider provider, long pos, long length)
        {
            byte[] data = null;

            // Read out the bytes
            if ((provider != null) && (pos + length <= provider.Length))
            {
                data = new byte[length];

                for (long i = 0; i < length; i++)
                {
                    data[i] = provider.ReadByte(pos + i);
                }
            }

            return(data);
        }
Example #14
0
        private string GetIntegerValue <T>(IByteProvider provider, long pos, bool littleEndian) where T : struct
        {
            GenericDataValue <T> value = new GenericDataValue <T>("", new T(), littleEndian);

            byte[] data = GetBytesFromProvider(provider, pos, Marshal.SizeOf(typeof(T)));

            if (data != null)
            {
                value.FromArray(data);

                return(String.Format("{0}/0x{0:X}", value.Value));
            }
            else
            {
                return("?");
            }
        }
Example #15
0
        private string GetIpAddress(IByteProvider provider, long pos, bool littleEndian, bool ipv6)
        {
            byte[] data = GetBytesFromProvider(provider, pos, ipv6 ? 16 : 4);

            if (data != null)
            {
                if (littleEndian)
                {
                    data = data.Reverse().ToArray();
                }

                IPAddress addr = new IPAddress(data);

                return(addr.ToString());
            }

            return("?");
        }
Example #16
0
        public SignatureScan(String pattern, IByteProvider provider, int result = 1)
        {
            ByteArray = new List <byte>();
            Mask      = new List <byte>();

            Pattern     = pattern;
            Provider    = provider;
            Result      = result;
            PatternSize = 0;

            if (!String.IsNullOrEmpty(Pattern))
            {
                Pattern = Pattern.Replace(" ? ", " ?? ");

                while (Pattern.EndsWith(" ") || Pattern.EndsWith("?"))
                {
                    Pattern = Pattern.Substring(0, Pattern.Length - 1);
                }

                {
                    String data = Pattern;
                    data = data.Replace(" ", "");

                    if (data.Length % 2 == 0 && data.Length > 0)
                    {
                        PatternSize = data.Length / 2;

                        for (int i = 0; i < data.Length; i += 2)
                        {
                            if (data[i] == '?' && data[i + 1] == '?')
                            {
                                Mask.Add(1);
                                ByteArray.Add(0);
                            }
                            else
                            {
                                Mask.Add(0);
                                ByteArray.Add(Convert.ToByte(data[i].ToString() + data[i + 1].ToString(), 16));
                            }
                        }
                    }
                }
            }
        }
Example #17
0
            string GetValue(IByteProvider provider, long pos, long length)
            {
                // Read out the bytes
                if ((provider != null) && (pos + length <= provider.Length))
                {
                    byte[] data = new byte[length];

                    for (long i = 0; i < length; i++)
                    {
                        data[i] = provider.ReadByte(pos + i);
                    }

                    return(GetChecksumString(data));
                }
                else
                {
                    return("");
                }
            }
Example #18
0
        /// <summary>
        /// Manages enabling or disabling of menu items and toolstrip buttons.
        /// </summary>
        void Update_FileMenu()
        {
            IByteProvider hexbox = CurrentTabIsROM() ?
                                   MainHexBox.ByteProvider :
                                   FileHexBoxes[CurrentTab].ByteProvider;

            if (hexbox.HasChanges())
            {
                Menu_File_Save.Enabled = true;
            }
            else
            {
                Menu_File_Save.Enabled = false;
            }

            Menu_File_Close.Enabled = !CurrentTabIsROM();

            string romfile = CurrentTabIsROM() ? "ROM" : "File";

            Menu_File_Save.Text   = "Save " + romfile + "...";
            Menu_File_SaveAs.Text = "Save " + romfile + " As...";
        }
Example #19
0
        private void SetBytes(byte[] bytes)
        {
            if (_provider != null)
            {
                _provider.Changed -= _provider_Changed;
            }

            if (hexBox.ReadOnly)
            {
                _provider = new ReadOnlyByteProvider(bytes);
            }
            else
            {
                _provider = new DynamicByteProvider(bytes);
            }

            _provider.Changed += new EventHandler(_provider_Changed);

            hexBox.ByteProvider = _provider;

            UpdateInspector(true);
        }
Example #20
0
        private static string GetFileTime(IByteProvider provider, long pos, bool littleEndian)
        {
            byte[] data = GetBytesFromProvider(provider, pos, 8);

            if (data != null)
            {
                long ft = BitConverter.ToInt64(data, 0);

                if (ft >= 0)
                {
                    try
                    {
                        return(DateTime.FromFileTimeUtc(BitConverter.ToInt64(data, 0)).ToString());
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        // Do nothing
                    }
                }
            }

            return("?");
        }
Example #21
0
 internal HexInspectorData(IByteProvider provider)
 {
     _provider = provider;
 }
Example #22
0
 internal HexInspectorData(IByteProvider provider)
 {
     _provider = provider;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="byteIndexProvider">Provider of byte indexes..</param>
 /// <param name="byteProvider">Provider of bytes to use.</param>
 public ByteProvidedProcessorBase(ByteIndexProviderBase byteIndexProvider, IByteProvider byteProvider)
     : base(byteIndexProvider)
 {
     ByteProvider = byteProvider ?? throw new ArgumentNullException(nameof(byteProvider));
 }
Example #24
0
 public void OpenMemory(IByteProvider bp)
 {
     hexBox.ByteProvider = bp;
     DisplayText();
     UpdateFileSizeStatus();
     ManageAbility();
 }
Example #25
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="byteRule">Byte rule to apply.</param>
 /// <param name="byteProvider">Provider of bytes.</param>
 /// <param name="operation">Mathematical operation to perform.</param>
 /// <param name="wrapAround">If true, wraps the calculated byte if needed.</param>
 public MathProcessor(ByteIndexProviderBase byteRule, IByteProvider byteProvider, Operation operation, bool wrapAround)
     : base(byteRule, byteProvider)
 {
     OperationToPerform = operation;
     WrapAround         = wrapAround;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="byteRule">Byte rule to apply.</param>
 /// <param name="byteProvider">Provider of bytes.</param>
 public ReplaceProcessor(ByteIndexProviderBase byteRule, IByteProvider byteProvider)
     : base(byteRule, byteProvider)
 {
 }
Example #27
0
        protected virtual void InitHexEditorOptions(
							IByteProvider ByteProvider     = null
						,	string Filename                = ""
						,	bool ShowMnu_File              = true
						,	bool ShowMnu_Tools             = true

						,	bool ShowMnuItm_File_Exit      = true
						,	bool ShowMnuItm_File_Open      = true
						,	bool ShowMnuItm_File_Recent    = true
						,	bool ShowMnuItm_File_Save      = true
		
						)
        {
            byteProvider = ByteProvider;
            filename = Filename;

            showMnu_File = ShowMnu_File;
            showMnu_Tools = ShowMnu_Tools;

            showMnuItm_File_Exit = ShowMnuItm_File_Exit;
            showMnuItm_File_Open = ShowMnuItm_File_Open;
            showMnuItm_File_Recent = ShowMnuItm_File_Recent;
            showMnuItm_File_Save = ShowMnuItm_File_Save;
        }
Example #28
0
 public hexEditorOptions(IByteProvider ByteProvider, string filnam = "")
 {
     InitHexEditorOptions(ByteProvider, filnam);
 }
 public string GetValue(IByteProvider provider, long start, long length)
 {
     return(_func(provider, start, length));
 }
Example #30
0
 public void SetByteProvider(Win32Assembly assembly, IByteProvider provider)
 {
     fileOffsetBox.Clear();
     rvaOffsetBox.Clear();
     vaOffsetBox.Clear();
     this.assembly = assembly;
     hexBox.ByteProvider = provider;
 }
Example #31
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="byteIndexProvider">Provider of byte indexes.</param>
 /// <param name="byteProvider">Provider of byte values.</param>
 /// <param name="direction">Direction to shift the bits.</param>
 public BitShiftProcessor(ByteIndexProviderBase byteIndexProvider, IByteProvider byteProvider, ShiftDirection direction)
   : base(byteIndexProvider, byteProvider)
 {
   Direction = direction;
 }