Beispiel #1
0
        private bool ProcessDecryptMessage(FunctionWrapper f)
        {
            Core.ProcessFunctions.DecryptMessage fDecryptMessage = new Core.ProcessFunctions.DecryptMessage(f);
            byte[] buffer = fDecryptMessage.GetBuffer();

            if (buffer == null)
            {

                lbFunction.Invoke(new MethodInvoker(delegate
                {
                    lbFunction.Text = "";
                }));

                f.status = FunctionWrapper.Status.Forwarded;
                return false;
            }

            DynamicFileByteProvider dynamicFileByteProvider;
            mStream = new MemoryStream();
            mStream.Write(buffer, 0, buffer.Length);
            mStream.Seek(0, SeekOrigin.Begin);
            dynamicFileByteProvider = new DynamicFileByteProvider(mStream);
            hexBox.Invoke(new MethodInvoker(delegate
            {
                hexBox.ByteProvider = dynamicFileByteProvider;
            }));
            Search(0);

            return true;
        }
Beispiel #2
0
        private void FormMatchReplace_Load(object sender, EventArgs e)
        {
            mStreamMatch = new MemoryStream();
            mStreamReplace = new MemoryStream();

            dynamicFileByteProviderReplace = new DynamicFileByteProvider(mStreamReplace);
            dynamicFileByteProviderMatch = new DynamicFileByteProvider(mStreamMatch);

            hbReplace.ByteProvider = dynamicFileByteProviderReplace;
            hbMatch.ByteProvider = dynamicFileByteProviderMatch;
        }
Beispiel #3
0
        /// <summary>
        /// Opens a file.
        /// </summary>
        /// <param name="fileName">the file name of the file to open</param>
        public void OpenFile(string fileName)
        {
            if (!File.Exists(fileName)) {
                Program.ShowMessage(strings.FileDoesNotExist);
                return;
            }

            if (CloseFile() == DialogResult.Cancel)
                return;

            try {
                DynamicFileByteProvider dynamicFileByteProvider;
                try {
                    // try to open in write mode
                    dynamicFileByteProvider = new DynamicFileByteProvider(fileName);
                    dynamicFileByteProvider.Changed += new EventHandler(byteProvider_Changed);
                    dynamicFileByteProvider.LengthChanged += new EventHandler(byteProvider_LengthChanged);
                }
                catch (IOException) { // write mode failed
                    try {
                        // try to open in read-only mode
                        dynamicFileByteProvider = new DynamicFileByteProvider(fileName, true);
                        if (Program.ShowQuestion(strings.OpenReadonly) == DialogResult.No) {
                            dynamicFileByteProvider.Dispose();
                            return;
                        }
                    }
                    catch (IOException) { // read-only also failed
                        // file cannot be opened
                        Program.ShowError(strings.OpenFailed);
                        return;
                    }
                }

                hexBox.ByteProvider = dynamicFileByteProvider;
                _fileName = fileName;

                DisplayText();

                UpdateFileSizeStatus();

                RecentFileHandler.AddFile(fileName);
            }
            catch (Exception ex1) {
                Program.ShowError(ex1);
                return;
            }
            finally {

                ManageAbility();
            }
        }
Beispiel #4
0
 public Control GetControl()
 {
     var provider = new DynamicFileByteProvider(_fileName, true);
     var control = new HexBox
         {
             ByteProvider = provider,
             Dock = DockStyle.Fill,
             GroupSeparatorVisible = false,
             ColumnInfoVisible = true,
             LineInfoVisible = true,
             StringViewVisible = true,
             UseFixedBytesPerLine = true,
             VScrollBarVisible = true,
         };
     return control;
 }
Beispiel #5
0
 public Control GetControl()
 {
     // TODO can't display GLB files yet so just return the hex viewer for now
     var provider = new DynamicFileByteProvider(_args.Filename, true);
     var control = new HexBox
     {
         ByteProvider = provider,
         Dock = DockStyle.Fill,
         GroupSeparatorVisible = false,
         ColumnInfoVisible = true,
         LineInfoVisible = true,
         StringViewVisible = true,
         UseFixedBytesPerLine = true,
         VScrollBarVisible = true,
     };
     return control;
 }
        /// <summary>
        /// Saves the current file.
        /// </summary>
        void SaveFile()
        {
            if (hexBox.ByteProvider == null)
            {
                return;
            }

            try
            {
                DynamicFileByteProvider dynamicFileByteProvider = hexBox.ByteProvider as DynamicFileByteProvider;
                dynamicFileByteProvider.ApplyChanges();
            }
            catch (Exception ex1)
            {
                Program.ShowError(ex1);
            }
            finally
            {
                ManageAbility();
            }
        }
Beispiel #7
0
        private void button8_Click(object sender, EventArgs e)
        {
            if (selectedProcess != null && pList != null)
            {
                try {
                    DynamicFileByteProvider dynamicFileByteProvider = hexBox1.ByteProvider as DynamicFileByteProvider;
                    dynamicFileByteProvider.ApplyChanges();

                    Process process = pList.FindProcess(selectedProcess);
                    PS4.WriteMemory(process.pid, Convert.ToUInt64(textBox3.Text, 16), MemoryData);
                }
                catch (Exception) {
                    label1.Text = "Error";
                    MessageBox.Show("Unable to Poke Memory");
                }
            }
            else
            {
                MessageBox.Show("Select a Process First");
            }
        }
Beispiel #8
0
 private void button7_Click(object sender, EventArgs e)
 {
     if (selectedProcess != null && pList != null)
     {
         try {
             Process process = pList.FindProcess(selectedProcess);
             MemoryData = PS4.ReadMemory(process.pid, Convert.ToUInt64(textBox3.Text, 16), Convert.ToInt32(textBox4.Text, 16));
             MemoryStream            stream       = new MemoryStream(MemoryData);
             DynamicFileByteProvider byteProvider = new DynamicFileByteProvider(stream);
             hexBox1.ByteProvider = byteProvider;
         }
         catch (Exception) {
             label1.Text = "Error";
             MessageBox.Show("Unable to Peek Memory");
         }
     }
     else
     {
         MessageBox.Show("Select a Process First");
     }
 }
Beispiel #9
0
        void SaveFile()
        {
            if (hexBox1.ByteProvider == null)
            {
                return;
            }

            try
            {
                DynamicFileByteProvider dynamicFileByteProvider = hexBox1.ByteProvider as DynamicFileByteProvider;
                dynamicFileByteProvider.ApplyChanges();
            }
            catch (Exception ex1)
            {
                Console.WriteLine(ex1.Message);
                if (variables.debugme)
                {
                    Console.WriteLine(ex1.ToString());
                }
            }
        }
Beispiel #10
0
        protected void byteProvider_Changed(object sender, EventArgs e)
        {
            DynamicFileByteProvider dfbp = (DynamicFileByteProvider)sender;

            Entry       entry = (Entry)lstStrings.SelectedItem;
            List <byte> bytes = new List <byte>();

            for (int i = 0; i < (int)dfbp.Length; i++)
            {
                bytes.Add(dfbp.ReadByte(i));
            }
            _msbt.TXT2.Entries[entry.Index].Values[lstSubStrings.SelectedIndex].Data = bytes.ToArray();

            UpdateTextView();
            UpdateTextPreview();
            UpdateForm();

            if (txtEdit.Text != txtOriginal.Text)
            {
                _hasChanges = true;
            }
        }
Beispiel #11
0
        private void ip_mes_tx_changed(object sender, FastColoredTextBoxNS.TextChangedEventArgs e)
        {
            if (Program.mainMSG != null)
            {
                lb_txcount_0.Text = ip_mes.Text.Length + checknum(ip_mes.Text.Length - Program.mainMSG.GetTextSection().Length) + " character";


                msg4u mainMSG0 = new msg4u();

                if (cb_method.SelectedIndex == 2)
                {
                    mainMSG0.Create(Utils.getSeries(cb_method.SelectedIndex), ip_var.Text, ip_mes.Text, true);


                    textBox1.Text = BitConverter.ToInt32(mainMSG0.GetEUSection(), 0) + "";
                    textBox2.Text = Program.mainMSG.isHaveMessage + "";
                }
                else
                {
                    mainMSG0.Create(Utils.getSeries(cb_method.SelectedIndex), ip_var.Text, ip_mes.Text, true);
                    textBox1.Text = "";
                    textBox2.Text = Program.mainMSG.isHaveMessage + "";
                }

                DynamicFileByteProvider dynamicFileByteProvider = null;

                try
                {
                    dynamicFileByteProvider = new DynamicFileByteProvider(new MemoryStream(mainMSG0.GetMSGData()));
                }
                catch
                {
                }

                ip_hexview.ByteProvider = dynamicFileByteProvider;

                lb_txpos_0.Text = "Position: " + ip_mes.SelectionStart + " | " + ip_mes.LinesCount + " Line | " + mainMSG0.GetMSGData().Length + "/" + Program.mainMSG.GetMSGData().Length + " byte";
            }
        }
Beispiel #12
0
        /// <summary>
        /// Saves the current file as another file.
        /// </summary>
        void SaveAsFile(string fname)
        {
            if (hexBox.ByteProvider == null)
            {
                return;
            }

            try
            {
                DynamicFileByteProvider dynamicFileByteProvider = hexBox.ByteProvider as DynamicFileByteProvider;
                dynamicFileByteProvider.SaveAsChanges(fname);
            }
            catch (Exception ex1)
            {
                Program.ShowError(ex1);
            }
            finally
            {
                _fileName = fname;
                DisplayText();
                ManageAbility();
            }
        }
Beispiel #13
0
        public void HexView()
        {
            if (st_hexview.Checked)
            {
                DynamicFileByteProvider dynamicFileByteProvider = null;

                try
                {
                    dynamicFileByteProvider = new DynamicFileByteProvider(a);
                }
                catch (Exception ex)
                {
#if DEBUG
                    Database.InsertReader.InsertLogs("error", "Yello", ex);
#endif
                }
                hx_hiddengrotto.ByteProvider = dynamicFileByteProvider;
            }
            else
            {
                hx_hiddengrotto.ByteProvider = null;
            }
        }
Beispiel #14
0
        private bool ProcessWSARecv(FunctionWrapper f)
        {
            Core.ProcessFunctions.WSArecv fWSArecv = new Core.ProcessFunctions.WSArecv(f);
            byte[] buffer = fWSArecv.GetBuffer();

            // Esto ocurre cuando la funcion devuelve -1 bytes leidos. Cuando no quedan mas datos que leer.
            // O cuando la primera estructura de wsabuff tiene una longitud de 0 bytes (aunque la segunda tenga datos, se omiten, forwardeando el paquete)
            if (buffer == null || buffer.Length == 0)
            {
                lbFunction.Invoke(new MethodInvoker(delegate
                {
                    lbFunction.Text = "";
                }));

                // Hacemos forward de la función y aceptamos nuevas
                f.status = FunctionWrapper.Status.Forwarded;
                //Program.data.AceptingNewFunctions = true;



                return(false);
            }

            DynamicFileByteProvider dynamicFileByteProvider;

            mStream = new MemoryStream();
            mStream.Write(buffer, 0, buffer.Length);
            mStream.Seek(0, SeekOrigin.Begin);
            dynamicFileByteProvider = new DynamicFileByteProvider(mStream);
            hexBox.Invoke(new MethodInvoker(delegate
            {
                hexBox.ByteProvider = dynamicFileByteProvider;
            }));
            Search(0);

            return(true);
        }
Beispiel #15
0
        private void processor_DoWork(object sender, DoWorkEventArgs e)
        {
            this.Invoke((MethodInvoker) delegate
            {
                sizeforeparse.Text    = new FileInfo(fileparserattr.FileName).Length.ToString();
                IOFileSystemFile.Text = fileparserattr.FileName;
                String sourceFileName = IOFileSystemFile.Text;
                Byte[] shaHash;
                using (var shaForStream = new SHA256Managed())
                    using (Stream sourceFileStream = File.Open(sourceFileName, FileMode.Open))
                        using (Stream sourceStream = new CryptoStream(sourceFileStream, shaForStream, CryptoStreamMode.Read))
                        {
                            while (sourceStream.ReadByte() != -1)
                            {
                                ;
                            }
                            shaHash = shaForStream.Hash;
                        }

                GDBase64.Text = (Convert.ToBase64String(shaHash));

                try
                {
                    DynamicFileByteProvider dynamicFileByteProvider;
                    {
                        dynamicFileByteProvider = new DynamicFileByteProvider(fileparserattr.FileName);
                    }
                    hexi.ByteProvider = dynamicFileByteProvider;
                    _fileName         = fileparserattr.FileName;
                    DisplayText();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Something clearly went wrong." + "\n" + ex.Message, "F.C.E. 365 Firmware Manager", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            });
        }
Beispiel #16
0
        public hex(string dir, string fileName)
        {
            InitializeComponent();

            directory = dir;
            filename  = fileName;
            //bv.Dock = DockStyle.Fill;
            //bv.SetBytes(new byte[] { });
            //bv.SetFile(directory + "/" + filename);
            //bv.BorderStyle = BorderStyle.None;
            //Controls.Add(bv);

            df = new DynamicFileByteProvider(directory + "/" + fileName);
            hexBox.ByteProvider = df;

            hexBox.InsertActive = true;

            playerName.Text = fileName;
            FileInfo fi      = new FileInfo(directory + "/" + filename);
            long     fLength = fi.Length;

            fileSize.Text = fLength.ToString() + " bytes";
            subsets.Text  = "[Modifier, Unknown, Item ID, Amount, Durability, Toggle]";
        }
Beispiel #17
0
        public void Save(string file)
        {
            if (hexBox.ByteProvider == null)
            {
                return;
            }
            try
            {
                DynamicFileByteProvider dynamicFileByteProvider = hexBox.ByteProvider as DynamicFileByteProvider;
                Stream target = File.Create(file);

                using (BinaryWriter bw = new BinaryWriter(target))
                {
                    for (int i = 0; i < dynamicFileByteProvider.Length; i++)
                    {
                        bw.Write(dynamicFileByteProvider.ReadByte(i));
                    }
                }
            }
            catch (Exception ex)
            {
                WpfHelpers.ExceptionDialog(ex);
            }
        }
Beispiel #18
0
        private void button_download_Click(object sender, EventArgs e)
        {
            if(hexBox1.ByteProvider!=null)
            {
                DynamicFileByteProvider dynamicFileByteProviderx = (DynamicFileByteProvider) hexBox1.ByteProvider;
                hexBox1.ByteProvider = null;

                dynamicFileByteProviderx.Dispose();

            }

            Progress p = new Progress(Program.ecr);
            p.Show();

            data = Program.ecr.getprogram((ECRComms.program)comboBox_ECRfiles.SelectedIndex);

            if (data == null)
            {
                if (initcomms() == true)
                {
                    MessageBox.Show("No data recieved but comms checks out OK");
                }
                else
                {
                    MessageBox.Show("Comms fail");
                }

                return;
            }

            string tmpfile = Path.Combine(Program.RWpath,"data.dat");
            File.WriteAllBytes(tmpfile, data.ToArray());

            DynamicFileByteProvider dynamicFileByteProvider = new DynamicFileByteProvider(tmpfile);

            hexBox1.BytesPerLine = 10;
            hexBox1.StringViewVisible = true;

            hexBox1.ByteProvider = dynamicFileByteProvider;

            button_edit.Enabled = true;
            button_upload.Enabled = true;
            button_save.Enabled = true;
        }
Beispiel #19
0
        private void button_load_Click(object sender, EventArgs e)
        {
            try
            {

                OpenFileDialog lfd = new OpenFileDialog();
                if (lfd.ShowDialog() == DialogResult.OK)
                {
                    if (hexBox1.ByteProvider != null)
                    {
                        DynamicFileByteProvider dynamicFileByteProviderx = (DynamicFileByteProvider)hexBox1.ByteProvider;
                        hexBox1.ByteProvider = null;

                        dynamicFileByteProviderx.Dispose();

                    }

                    data = DataFile.loadbinaryfile(lfd.FileName).ToList();

                   // comboBox_ECRfiles.SelectedIndex = header[4];

                    string tmpfile = Path.Combine(Program.RWpath, "data.dat");
                    File.WriteAllBytes(tmpfile, data.ToArray());

                    DynamicFileByteProvider dynamicFileByteProvider = new DynamicFileByteProvider(tmpfile);

                    hexBox1.BytesPerLine = 10;
                    hexBox1.StringViewVisible = true;

                    hexBox1.ByteProvider = dynamicFileByteProvider;

                    button_edit.Enabled = true;
                    button_upload.Enabled = true;
                    button_save.Enabled = true;

                }
            }
            catch (Exception _Exception)
            {
                Console.WriteLine("Exception caught saving file{0}", _Exception.ToString());
            }
        }
Beispiel #20
0
        private void SetTabPageValue(TabPage tbp, object value)
        {
            if (value == DBNull.Value || value == null)
            {
                lblBlobSize.Text = "Blob contains 0KB";
                if (tbp == tbpEditBlob)
                {
                    string fpath = Configuration.TempBlobFilePath;
                    if (File.Exists(fpath))
                    {
                        File.Delete(fpath);
                    }
                    File.Create(fpath).Dispose();
                    _blobProvider            = new DynamicFileByteProvider(fpath);
                    ucHexEditor.ByteProvider = _blobProvider;
                }
                else if (tbp == tbpEditDateTime)
                {
                    pnlDateTimeWarning.Visible = false;
                }

                return;
            }

            if (tbp == tbpEditBlob)
            {
                if (value is Be.Windows.Forms.DynamicFileByteProvider)
                {
                    _blobProvider            = (Be.Windows.Forms.DynamicFileByteProvider)value;
                    ucHexEditor.ByteProvider = _blobProvider;
                }
                else
                {
                    string fpath = Configuration.TempBlobFilePath;
                    if (File.Exists(fpath))
                    {
                        File.Delete(fpath);
                    }
                    File.Create(fpath).Dispose();
                    if (value is byte[])
                    {
                        File.WriteAllBytes(fpath, (byte[])value);
                    }
                    else
                    {
                        File.WriteAllText(fpath, value.ToString());
                    }
                    _blobProvider            = new DynamicFileByteProvider(fpath);
                    ucHexEditor.ByteProvider = _blobProvider;
                }
                lblBlobSize.Text = "Blob contains " + Utils.FormatMemSize(_blobProvider.Length, MemFormat.KB);
            }
            else if (tbp == tbpEditBoolean)
            {
                rbtnTrue.Checked  = Utils.ConvertStringToBoolean(value.ToString());
                rbtnFalse.Checked = !Utils.ConvertStringToBoolean(value.ToString());
            }
            else if (tbp == tbpEditGuid)
            {
                if (value is Guid)
                {
                    txtGuid.Text = ((Guid)value).ToString("D");
                }
                else if (value is string)
                {
                    // Issue a warning panel!
                }
                else
                {
                    throw new ArgumentException($"illegal value type [{value.GetType().FullName}]");
                }
            }
            else if (tbp == tbpEditFloatingPoint)
            {
                if (value is float)
                {
                    txtFloatingPoint.Text = ((float)value).ToString();
                }
                else if (value is double)
                {
                    txtFloatingPoint.Text = ((double)value).ToString();
                }
                else if (value is decimal)
                {
                    txtFloatingPoint.Text = ((decimal)value).ToString();
                }
                else if (value is string)
                {
                    if (value.ToString() != "")
                    {
                        txtFloatingPoint.Text = Convert.ToDouble(value).ToString();
                    }
                    else
                    {
                        txtFloatingPoint.Text = "";
                    }
                }
                else
                {
                    throw new ArgumentException($"Illegal value type [{value.GetType().FullName}]");
                }
            }
            else if (tbp == tbpEditInteger)
            {
                if (value is sbyte)
                {
                    numInteger.Value = (sbyte)value;
                }
                else if (value is byte)
                {
                    numInteger.Value = (byte)value;
                }
                else if (value is short)
                {
                    numInteger.Value = (short)value;
                }
                else if (value is ushort)
                {
                    numInteger.Value = (ushort)value;
                }
                else if (value is int)
                {
                    numInteger.Value = (int)value;
                }
                else if (value is uint)
                {
                    numInteger.Value = (uint)value;
                }
                else if (value is long)
                {
                    numInteger.Value = (long)value;
                }
                else if (value is ulong)
                {
                    numInteger.Value = (ulong)value;
                }
                else if (value is string)
                {
                    if (value.ToString() != "")
                    {
                        numInteger.Value = Convert.ToInt32(value);
                    }
                    else
                    {
                        numInteger.Value = 0;
                    }
                }
                else
                {
                    throw new ArgumentException($"Illegal value type [{value.GetType().FullName}]");
                }
            }
            else if (tbp == tbpEditText)
            {
                if (value is char)
                {
                    txtValue.Text = string.Empty + (char)value;
                }
                else if (value is string)
                {
                    txtValue.Text = (string)value;
                }
                else if (value is byte[])
                {
                    txtValue.Text = Encoding.ASCII.GetString((byte[])value);
                }
                else if (value is Guid)
                {
                    txtValue.Text = ((Guid)value).ToString();
                }
                else
                {
                    throw new ArgumentException($"Illegal value type [{value.GetType().FullName}]");
                }
            }
            else if (tbp == tbpEditDateTime)
            {
                if (value is DateTime)
                {
                    DateTime dt = (DateTime)value;

                    if (dt >= dtpDate.MinDate)
                    {
                        dtpDate.Value = dt;
                        dtpTime.Value = dt;
                        pnlDateTimeWarning.Visible = false;
                    }
                    else
                    {
                        pnlDateTimeWarning.Visible = true;
                    }
                }
                else
                {
                    pnlDateTimeWarning.Visible = true;
                }
            }
            else
            {
                throw new ArgumentException($"Illegal tab page was provided (name={tbp.Name})");
            }
        }
Beispiel #21
0
        private bool ProcessRecvFrom(FunctionWrapper f)
        {
            Core.ProcessFunctions.recvfrom fRecvfrom = new Core.ProcessFunctions.recvfrom(f);
            byte[] buffer = fRecvfrom.GetBuffer();

            // Esto ocurre cuando la funcion devuelve -1 bytes leidos. Cuando no quedan mas datos que leer.
            if (buffer == null || buffer.Length == 0)
            {
                // Hacemos forward de la función y aceptamos nuevas
                f.status = FunctionWrapper.Status.Forwarded;
                //Program.data.AceptingNewFunctions = true;

                lbFunction.Invoke(new MethodInvoker(delegate
                {
                    lbFunction.Text = "";
                }));

                return false;
            }

            DynamicFileByteProvider dynamicFileByteProvider;
            mStream = new MemoryStream();
            mStream.Write(buffer, 0, buffer.Length);
            mStream.Seek(0, SeekOrigin.Begin);
            dynamicFileByteProvider = new DynamicFileByteProvider(mStream);
            hexBox.Invoke(new MethodInvoker(delegate
            {
                hexBox.ByteProvider = dynamicFileByteProvider;
            }));
            Search(0);

            return true;
        }
Beispiel #22
0
        private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e)
        {
            listView3.Clear();
            IncludedFiles.Clear();
            MyGNIDA = new GNIDA(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\flirt.xml");
            MyGNIDA.OnLogEvent += OnLogEvent1;
            MyGNIDA.OnAddFunc += AddFuncEvent1;
            MyGNIDA.OnAddStr += AddText;
            MyGNIDA.OnVarEvent += AddVarEvent1;
            MyGNIDA.OnFuncChanged += OnFuncChanged1;
            MyGNIDA.LoadFile(openFileDialog1.FileName);

            dynamicFileByteProvider = new DynamicFileByteProvider(openFileDialog1.FileName, true);
            hexBox1.ByteProvider = dynamicFileByteProvider;

            fastColoredTextBox1.Clear();
            fastColoredTextBox1.Text = "//+---------------------------------------------------------------------+" +
                              "\n//| Dis file has bin generated by GNU Interactive Dissassembler (GNIDA) |" +
                              "\n//|       Copyleft (c) 2014 by me <*****@*****.**>              |" +
                              "\n//|                          Free 4 use                                 |" +
                              "\n//|                         Writed AS IS                                |" +
                              "\n//+---------------------------------------------------------------------+\n";
            //if( & DynamicLoadedLibraryFile)

            if ((MyGNIDA.info.Header.HeaderNT32.FileHeader.Characteristics & WinNT.IMAGE_FILE.DLL) != 0)
            { fastColoredTextBox1.Text += "#pragma option DLL\n"; }
            else {
                switch (MyGNIDA.info.Header.HeaderNT32.OptionalHeader.Subsystem)
                    {
                        case WinNT.IMAGE_SUBSYSTEM.WINDOWS_GUI: fastColoredTextBox1.Text += "#pragma option W32\n"; break;
                        case WinNT.IMAGE_SUBSYSTEM.WINDOWS_CUI: fastColoredTextBox1.Text += "#pragma option W32C\n"; break;
                        default: fastColoredTextBox1.Text += "#pragma option W32;//TO-DO!!!\n"; break;
                    }
                }
            IncludedFiles.Add("Windows.h");
            IncludedFiles.Add("msvcrt.h--");
            fastColoredTextBox1.Text += "#jumptomain NONE\n";
            foreach (string s in IncludedFiles)
            {
                fastColoredTextBox1.Text += "#include \"" + s + "\";\n";
            }
            VarLine = fastColoredTextBox1.LinesCount - 1;
        }
Beispiel #23
0
        /// <summary>
        /// 执行打开文件
        /// </summary>
        /// <param name="fileName"></param>
        private void _DoOpenFile(string fileName)
        {
            try
            {
                hexBox.stream = null;

                DynamicFileByteProvider dynamicFileByteProvider;
                try
                {
                    Encoding _encoding = this.hexBox._encoding;
                    if (this.hexBox.IsUseBase64)
                    {
                        this.hexBox.IsUseEncoding = true;
                        // 读成自己的解码后的流
                        try
                        {
                            FileStream inputStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);

                            byte[] data = new byte[4 * 1024]; //Chunk size is 4k
                            inputStream.Seek(0, SeekOrigin.Begin);
                            int read = inputStream.Read(data, 0, data.Length);

                            byte[]      chunk = new byte[4 * 1024];
                            List <byte> list  = new List <byte>();
                            while (read > 0)
                            {
                                chunk = Convert.FromBase64String(_encoding.GetString(data, 0, read));

                                list.AddRange(chunk);
                                read = inputStream.Read(data, 0, data.Length);
                            }

                            var decodeBytes = list.ToArray();

                            // 放入流中
                            Stream stream = new MemoryStream(decodeBytes);

                            inputStream.Close();
                            //dynamicFileByteProvider = new DynamicFileByteProvider(fileName);
                            dynamicFileByteProvider = new DynamicFileByteProvider(stream, _encoding);
                        }
                        catch (Exception ex)
                        {
                            var tmp = @"Base64编码无效";
                            this.hexBox._encoding = Encoding.UTF8;
                            byte[] bytes  = this.hexBox._encoding.GetBytes(tmp);
                            Stream stream = new MemoryStream(bytes);

                            // try to open in read-only mode
                            dynamicFileByteProvider = new DynamicFileByteProvider(stream);

                            this.hexBox.IsUseBase64 = false;
                        }
                    }
                    else
                    {
                        if (!System.Utility.Helper.File.IsValid(fileName))
                        {
                            byte[] data   = new byte[0];
                            Stream stream = new MemoryStream(data);
                            dynamicFileByteProvider = new DynamicFileByteProvider(stream);
                            hexBox.ByteProvider     = dynamicFileByteProvider;
                            _fileName = fileName;
                            this.fileSizeToolStripStatusLabel.Text = Util.GetDisplayBytes(this.hexBox.ByteProvider.Length);
                            return;
                        }
                        // try to open in write mode
                        dynamicFileByteProvider = new DynamicFileByteProvider(fileName, true,
                                                                              this.IsGoToGetDefaultCharset);
                    }
                }
                catch (IOException) // write mode failed
                {
                    try
                    {
                        if (!System.Utility.Helper.File.IsValid(fileName))
                        {
                            return;
                        }
                        // try to open in read-only mode
                        dynamicFileByteProvider = new DynamicFileByteProvider(fileName, true);
                    }
                    catch (IOException) // read-only also failed
                    {
                        // file cannot be opened
                        return;
                    }
                }
                if (!System.Utility.Helper.File.IsValid(fileName))
                {
                    return;
                }
                if (this.IsGoToGetDefaultCharset)
                {
                    hexBox._encoding        = dynamicFileByteProvider.GetEncoding();
                    IsGoToGetDefaultCharset = false;
                }
                hexBox.ByteProvider = dynamicFileByteProvider;
                _fileName           = fileName;
                this.fileSizeToolStripStatusLabel.Text = Util.GetDisplayBytes(this.hexBox.ByteProvider.Length);
            }
            catch
            {
                byte[] data   = new byte[0];
                Stream stream = new MemoryStream(data);
                var    dynamicFileByteProvider = new DynamicFileByteProvider(stream);
                hexBox.ByteProvider = dynamicFileByteProvider;
                _fileName           = fileName;
                this.fileSizeToolStripStatusLabel.Text = Util.GetDisplayBytes(this.hexBox.ByteProvider.Length);
                return;
            }
        }
Beispiel #24
0
        private void openToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                listView3.Clear();
                IncludedFiles.Clear();
                MyGNIDA = new GNIDA1(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\flirt.xml");
                MyGNIDA.OnLogEvent += OnLogEvent1;
                MyGNIDA.OnAddFunc += AddFuncEvent1;
                MyGNIDA.OnAddStr += AddText;
                MyGNIDA.OnVarEvent += AddVarEvent1;
                MyGNIDA.OnFuncChanged += OnFuncChanged1;

                Load ldfrm = new Load();
                ListView lv = ldfrm.ldrs();
                ListView da = ldfrm.dsmrs();
                lv.Clear();
                da.Clear();
                foreach (string findPlg in System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\Loaders\\", "*.dll", System.IO.SearchOption.TopDirectoryOnly))
                    Loaders(findPlg, lv);
                foreach (string findPlg in System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\Dasmers\\", "*.dll", System.IO.SearchOption.TopDirectoryOnly))
                    Dasmers(findPlg, da);

                if (ldfrm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    MyGNIDA.assembly = lv.SelectedItems[0].Tag as ILoader;
                    MyGNIDA.MeDisasm = da.SelectedItems[0].Tag as IDasmer;
                    MyGNIDA.MeDisasm.Init(MyGNIDA.assembly);
                    ldfrm.Dispose();

                    MyGNIDA.LoadFile(openFileDialog1.FileName);

                    dynamicFileByteProvider = new DynamicFileByteProvider(openFileDialog1.FileName, true);
                    hexBox1.ByteProvider = dynamicFileByteProvider;
                    hexBox1.LineInfoOffset = (long)MyGNIDA.assembly.Entrypoint() + (long)MyGNIDA.assembly.ImageBase();

                    fastColoredTextBox1.Clear();
                    fastColoredTextBox1.Text = "//+---------------------------------------------------------------------+" +
                                      "\n//| Dis file has bin generated by GNU Interactive DissAssembler (GNIDA) |" +
                                      "\n//|       Copyleft (c) 2014 by me <*****@*****.**>              |" +
                                      "\n//|                          Free 4 use                                 |" +
                                      "\n//|                         Writed AS IS                                |" +
                                      "\n//+---------------------------------------------------------------------+\n";
                    //if( & DynamicLoadedLibraryFile)

                    if ((MyGNIDA.assembly.ExecutableFlags() & (ulong)ExecutableFlags.DynamicLoadedLibraryFile) != 0)
                    { fastColoredTextBox1.Text += "#pragma option DLL\n"; }
                    else
                    {
                        switch (MyGNIDA.assembly.SubSystem())
                        {
                            case (ulong)SubSystem.WindowsGraphicalUI: fastColoredTextBox1.Text += "#pragma option W32\n"; break;
                            case (ulong)SubSystem.WindowsConsoleUI: fastColoredTextBox1.Text += "#pragma option W32C\n"; break;
                            default: fastColoredTextBox1.Text += "#pragma option W32;//TO-DO!!!\n"; break;
                        }
                    }
                    IncludedFiles.Add("Windows.h");
                    IncludedFiles.Add("msvcrt.h--");
                    fastColoredTextBox1.Text += "#jumptomain NONE\n";
                    foreach (string s in IncludedFiles)
                    {
                        fastColoredTextBox1.Text += "#include \"" + s + "\";\n";
                    }
                    VarLine = fastColoredTextBox1.LinesCount - 1;
                }
            }
        }
Beispiel #25
0
        private void _ShowCurrentSelectedPacketContents()
        {
            if (lstPackets.SelectedItems.Count <= 0)
            {
                return;
            }
            int nIndex = lstPackets.SelectedItems[0].Index;
            if (nIndex < 0)
            {
                return;
            }
            OPacket selectedPacket = _curPacketList.GetAt(nIndex);
            if (null == selectedPacket)
            {
                return;
            }

            try
            {
                DynamicFileByteProvider dynamicFileByteProvider = new DynamicFileByteProvider(selectedPacket.GetPacketStoredPath(), true);
                hexEdit.ByteProvider = dynamicFileByteProvider;
            }
            catch (IOException)
            {
            }
        }
Beispiel #26
0
        public FormMain()
        {
                InitializeComponent();
                this.Text = AssemblyTitle + " " + AssemblyVersion;

                Program.data.pluginMngr.pluginLoaded += new Plugins.PluginManager.pluginLoadedEvent(pluginMngr_pluginLoaded);
                Program.data.pluginMngr.pluginUnloaded += new Plugins.PluginManager.pluginUnLoadedEvent(pluginMngr_pluginUnloaded);

                mStreamSearch = new MemoryStream();
                DynamicFileByteProvider dynamicFileByteProviderSearch = new DynamicFileByteProvider(mStreamSearch);
                hexBoxSearch.ByteProvider = dynamicFileByteProviderSearch;
        }
Beispiel #27
0
        private bool ProcessWSARecv(FunctionWrapper f)
        {
            Core.ProcessFunctions.WSArecv fWSArecv = new Core.ProcessFunctions.WSArecv(f);
            byte[] buffer = fWSArecv.GetBuffer();
            
            // Esto ocurre cuando la funcion devuelve -1 bytes leidos. Cuando no quedan mas datos que leer.
            // O cuando la primera estructura de wsabuff tiene una longitud de 0 bytes (aunque la segunda tenga datos, se omiten, forwardeando el paquete)
            if (buffer == null || buffer.Length == 0)
            {
                lbFunction.Invoke(new MethodInvoker(delegate
                {
                    lbFunction.Text = "";
                }));

                // Hacemos forward de la función y aceptamos nuevas
                f.status = FunctionWrapper.Status.Forwarded;
                //Program.data.AceptingNewFunctions = true;

               

                return false;
            }

            DynamicFileByteProvider dynamicFileByteProvider;
            mStream = new MemoryStream();
            mStream.Write(buffer, 0, buffer.Length);
            mStream.Seek(0, SeekOrigin.Begin);
            dynamicFileByteProvider = new DynamicFileByteProvider(mStream);
            hexBox.Invoke(new MethodInvoker(delegate
            {
                hexBox.ByteProvider = dynamicFileByteProvider;
            }));
            Search(0);

            return true;
        }
Beispiel #28
0
        /// <summary>
        /// 使用流打开文件
        /// </summary>
        /// <param name="stream">文件流</param>
        private void _DoOpenFile(Stream stream)
        {
            hexBox.fileName = null;
            DynamicFileByteProvider dynamicFileByteProvider;

            try
            {
                var bugFix = stream.ReadByte();
                stream.Position    = 0;
                this.hexBox.stream = stream;
                try
                {
                    try
                    {
                        Encoding _encoding = this.hexBox._encoding;
                        if (this.hexBox.IsUseBase64 && stream.Length < 1024 * 1024 * 10)
                        {
                            this.hexBox.IsUseEncoding = true;
                            // 读成自己的解码后的流
                            try
                            {
                                byte[] data = new byte[4 * 1024]; //Chunk size is 4k
                                stream.Seek(0, SeekOrigin.Begin);
                                int read = stream.Read(data, 0, data.Length);

                                byte[]      chunk = new byte[4 * 1024];
                                List <byte> list  = new List <byte>();
                                while (read > 0)
                                {
                                    chunk = Convert.FromBase64String(_encoding.GetString(data, 0, read));

                                    list.AddRange(chunk);
                                    read = stream.Read(data, 0, data.Length);
                                }

                                var decodeBytes = list.ToArray();

                                // 放入流中
                                Stream ms = new MemoryStream(decodeBytes);

                                stream.Close();
                                //dynamicFileByteProvider = new DynamicFileByteProvider(fileName);
                                dynamicFileByteProvider = new DynamicFileByteProvider(ms, _encoding);
                            }
                            catch (Exception ex)
                            {
                                var tmp = @"Base64编码无效";
                                this.hexBox._encoding = Encoding.UTF8;
                                byte[] bytes      = this.hexBox._encoding.GetBytes(tmp);
                                Stream tmp_stream = new MemoryStream(bytes);

                                // try to open in read-only mode
                                dynamicFileByteProvider = new DynamicFileByteProvider(tmp_stream);

                                this.hexBox.IsUseBase64 = false;
                            }
                        }
                        else
                        {
                            // try to open in write mode
                            dynamicFileByteProvider = new DynamicFileByteProvider(stream);
                        }
                    }
                    catch (IOException) // write mode failed
                    {
                        try
                        {
                            // try to open in read-only mode
                            dynamicFileByteProvider = new DynamicFileByteProvider(stream);
                        }
                        catch (IOException) // read-only also failed
                        {
                            // file cannot be opened
                            return;
                        }
                    }
                    if (this.IsGoToGetDefaultCharset)
                    {
                        hexBox._encoding        = dynamicFileByteProvider.GetEncoding();
                        IsGoToGetDefaultCharset = false;
                    }
                    hexBox.ByteProvider = dynamicFileByteProvider;
                    this.fileSizeToolStripStatusLabel.Text = Util.GetDisplayBytes(this.hexBox.ByteProvider.Length);
                }
                catch
                {
                }
            }
            catch (Exception ex)
            {
                byte[] data    = new byte[0];
                Stream stream1 = new MemoryStream(data);
                dynamicFileByteProvider = new DynamicFileByteProvider(stream1);
                hexBox.ByteProvider     = dynamicFileByteProvider;
                this.fileSizeToolStripStatusLabel.Text = Util.GetDisplayBytes(this.hexBox.ByteProvider.Length);
            }
        }
Beispiel #29
0
        private void openToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                listView3.Clear();
                IncludedFiles.Clear();
                MyGNIDA                = new GNIDA1(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\flirt.xml");
                MyGNIDA.OnLogEvent    += OnLogEvent1;
                MyGNIDA.OnAddFunc     += AddFuncEvent1;
                MyGNIDA.OnAddStr      += AddText;
                MyGNIDA.OnVarEvent    += AddVarEvent1;
                MyGNIDA.OnFuncChanged += OnFuncChanged1;


                Load     ldfrm = new Load();
                ListView lv    = ldfrm.ldrs();
                ListView da    = ldfrm.dsmrs();
                lv.Clear();
                da.Clear();
                foreach (string findPlg in System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\Loaders\\", "*.dll", System.IO.SearchOption.TopDirectoryOnly))
                {
                    Loaders(findPlg, lv);
                }
                foreach (string findPlg in System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\Dasmers\\", "*.dll", System.IO.SearchOption.TopDirectoryOnly))
                {
                    Dasmers(findPlg, da);
                }

                if (ldfrm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    MyGNIDA.assembly = lv.SelectedItems[0].Tag as ILoader;
                    MyGNIDA.MeDisasm = da.SelectedItems[0].Tag as IDasmer;
                    MyGNIDA.MeDisasm.Init(MyGNIDA.assembly);
                    ldfrm.Dispose();


                    MyGNIDA.LoadFile(openFileDialog1.FileName);

                    dynamicFileByteProvider = new DynamicFileByteProvider(openFileDialog1.FileName, true);
                    hexBox1.ByteProvider    = dynamicFileByteProvider;
                    hexBox1.LineInfoOffset  = (long)MyGNIDA.assembly.Entrypoint() + (long)MyGNIDA.assembly.ImageBase();

                    fastColoredTextBox1.Clear();
                    fastColoredTextBox1.Text = "//+---------------------------------------------------------------------+" +
                                               "\n//| Dis file has bin generated by GNU Interactive DissAssembler (GNIDA) |" +
                                               "\n//|       Copyleft (c) 2014 by me <*****@*****.**>              |" +
                                               "\n//|                          Free 4 use                                 |" +
                                               "\n//|                         Writed AS IS                                |" +
                                               "\n//+---------------------------------------------------------------------+\n";
                    //if( & DynamicLoadedLibraryFile)

                    if ((MyGNIDA.assembly.ExecutableFlags() & (ulong)ExecutableFlags.DynamicLoadedLibraryFile) != 0)
                    {
                        fastColoredTextBox1.Text += "#pragma option DLL\n";
                    }
                    else
                    {
                        switch (MyGNIDA.assembly.SubSystem())
                        {
                        case (ulong)SubSystem.WindowsGraphicalUI: fastColoredTextBox1.Text += "#pragma option W32\n"; break;

                        case (ulong)SubSystem.WindowsConsoleUI: fastColoredTextBox1.Text += "#pragma option W32C\n"; break;

                        default: fastColoredTextBox1.Text += "#pragma option W32;//TO-DO!!!\n"; break;
                        }
                    }
                    IncludedFiles.Add("Windows.h");
                    IncludedFiles.Add("msvcrt.h--");
                    fastColoredTextBox1.Text += "#jumptomain NONE\n";
                    foreach (string s in IncludedFiles)
                    {
                        fastColoredTextBox1.Text += "#include \"" + s + "\";\n";
                    }
                    VarLine = fastColoredTextBox1.LinesCount - 1;
                }
            }
        }
        /// <summary>
        /// Opens a file.
        /// </summary>
        /// <param name="fileName">the file name of the file to open</param>
        public void OpenFile(string fileName)
        {
            if (!File.Exists(fileName))
            {
                Program.ShowMessage(strings.FileDoesNotExist);
                return;
            }

            if (CloseFile() == DialogResult.Cancel)
            {
                return;
            }

            try
            {
                DynamicFileByteProvider dynamicFileByteProvider;
                try
                {
                    // try to open in write mode
                    dynamicFileByteProvider                = new DynamicFileByteProvider(fileName);
                    dynamicFileByteProvider.Changed       += new EventHandler(byteProvider_Changed);
                    dynamicFileByteProvider.LengthChanged += new EventHandler(byteProvider_LengthChanged);
                }
                catch (IOException) // write mode failed
                {
                    try
                    {
                        // try to open in read-only mode
                        dynamicFileByteProvider = new DynamicFileByteProvider(fileName, true);
                        if (Program.ShowQuestion(strings.OpenReadonly) == DialogResult.No)
                        {
                            dynamicFileByteProvider.Dispose();
                            return;
                        }
                    }
                    catch (IOException) // read-only also failed
                    {
                        // file cannot be opened
                        Program.ShowError(strings.OpenFailed);
                        return;
                    }
                }

                hexBox.ByteProvider = dynamicFileByteProvider;
                _fileName           = fileName;

                DisplayText();

                UpdateFileSizeStatus();

                RecentFileHandler.AddFile(fileName);
            }
            catch (Exception ex1)
            {
                Program.ShowError(ex1);
                return;
            }
            finally
            {
                ManageAbility();
            }
        }
Beispiel #31
0
		private void UpdateHexView()
		{
			DynamicFileByteProvider dfbp = null;

			try
			{
				Entry entry = (Entry)lstStrings.SelectedItem;
				MemoryStream strm = new MemoryStream(_msbt.TXT2.Entries[entry.Index].Values[lstSubStrings.SelectedIndex].Data);

				dfbp = new DynamicFileByteProvider(strm);
				dfbp.Changed += new EventHandler(byteProvider_Changed);
			}
			catch (Exception)
			{ }

			hbxHexView.ByteProvider = dfbp;
		}
Beispiel #32
0
        private bool ProcessSend(FunctionWrapper f)
        {
            Core.ProcessFunctions.send fSend = new Core.ProcessFunctions.send(f);
            byte[] buffer = fSend.GetBuffer();

            DynamicFileByteProvider dynamicFileByteProvider;
            mStream = new MemoryStream();
            mStream.Write(buffer, 0, buffer.Length);
            mStream.Seek(0, SeekOrigin.Begin);
            dynamicFileByteProvider = new DynamicFileByteProvider(mStream);
            hexBox.Invoke(new MethodInvoker(delegate
            {
                hexBox.ByteProvider = dynamicFileByteProvider;
            }));
            Search(0);

            return true;
        }
Beispiel #33
0
        public bool SetByteView(string filepath)
        {
            if (!File.Exists(filepath))
            {
                return(false);
            }

            try
            {
                using (new FileStream(filepath, FileMode.Open))
                {
                }
            }
            catch
            {
                return(false);
            }

            ViewModel.FilePath = filepath;

            foreach (KeyValuePair <TearableTabItem, BinaryEngineView> p in MainWindowViewModel.Instance.BinaryEngineViewDictionary)
            {
                if (p.Value == this)
                {
                    p.Key.Header = Path.GetFileName(ViewModel.FilePath);

                    break;
                }
            }

            //ByteViewer

            DynamicFileByteProvider byteProvider = new DynamicFileByteProvider(ViewModel.FilePath);

            try
            {
                byteProvider.LengthChanged += (sender, e) =>
                {
                    ByteSizeStatusBarItem.Content = GetDisplayBytes(ByteViewer.ByteProvider.Length);
                };
            }
            catch
            {
            }

            if (ByteViewer.ByteProvider != null)
            {
                (ByteViewer.ByteProvider as DynamicFileByteProvider).Dispose();
            }

            ByteViewer.ByteProvider     = byteProvider;
            ByteViewer.ContextMenuStrip = null;

            ByteViewer.CurrentLineChanged += new EventHandler((sender, e) =>
            {
                OnUpdatePosition();
            });
            ByteViewer.CurrentPositionInLineChanged += new EventHandler((sender, e) =>
            {
                OnUpdatePosition();
            });

            ByteSizeStatusBarItem.Content = GetDisplayBytes(ByteViewer.ByteProvider.Length);


            return(true);
        }