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; }
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; }
/// <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(); } }
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; }
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(); } }
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"); } }
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"); } }
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()); } } }
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; } }
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"; } }
/// <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(); } }
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; } }
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); }
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); } }); }
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]"; }
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); } }
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; }
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()); } }
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})"); } }
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; }
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; }
/// <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; } }
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; } } }
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) { } }
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; }
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; }
/// <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); } }
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(); } }
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; }
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; }
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); }