public BindingList<Types.SearchResults> FindHexOffset(string pointer) { if (pointer == null) throw new Exception("Empty Search string!"); if (!Functions.Functions.IsHex(pointer)) throw new Exception(string.Format("{0} is not a valid Hex string.", pointer)); if (!Connect()) return null; //Call function - If not connected return if (!GetMeMex()) return null; //call function - If not connected or if something wrong return try { //LENGTH or Size = Length of the dump var size = _startDumpLength; _readWriter = new RWStream(); _readWriter.ReportProgress += new UpdateProgressBarHandler(ReportProgress); var data = new byte[1026]; //byte chuncks //Writing each byte chuncks======== //No need to mess with it :D for (var i = 0; i < size / 1024; i++) { if (_stopSearch) return null; _tcp.Client.Receive(data); _readWriter.WriteBytes(data, 2, 1024); ReportProgress(0, (int)(size / 1024), (i + 1), "Dumping Memory..."); } //Write whatever is left var extra = (int)(size % 1024); if (extra > 0) { if (_stopSearch) return null; _tcp.Client.Receive(data); _readWriter.WriteBytes(data, 2, extra); } _readWriter.Flush(); //=================================== //=================================== if (_stopSearch) return null; _readWriter.Position = 0; var values = _readWriter.SearchHexString(Functions.Functions.StringToByteArray(pointer), _startDumpOffset); return values; } catch (Exception ex) { throw new Exception(ex.Message); } finally { _readWriter.Close(true); _tcp.Close(); //close connection _connected = false; _memexValidConnection = false; ReportProgress(0, 100, 0,"Idle"); } }
public BindingList <Types.SearchResults> FindHexOffset(string pointer) { if (pointer == null) { throw new Exception("Empty Search string!"); } if (!Functions.Functions.IsHex(pointer)) { throw new Exception(string.Format("{0} is not a valid Hex string.", pointer)); } if (!Connect()) { return(null); //Call function - If not connected return } if (!GetMeMex()) { return(null); //call function - If not connected or if something wrong return } try { //LENGTH or Size = Length of the dump var size = _startDumpLength; _readWriter = new RWStream(); _readWriter.ReportProgress += new UpdateProgressBarHandler(ReportProgress); var data = new byte[1026]; //byte chuncks //Writing each byte chuncks======== //No need to mess with it :D for (var i = 0; i < size / 1024; i++) { if (_stopSearch) { return(null); } _tcp.Client.Receive(data); _readWriter.WriteBytes(data, 2, 1024); ReportProgress(0, (int)(size / 1024), (i + 1), "Dumping Memory..."); } //Write whatever is left var extra = (int)(size % 1024); if (extra > 0) { if (_stopSearch) { return(null); } _tcp.Client.Receive(data); _readWriter.WriteBytes(data, 2, extra); } _readWriter.Flush(); //=================================== //=================================== if (_stopSearch) { return(null); } _readWriter.Position = 0; var values = _readWriter.SearchHexString(Functions.Functions.StringToByteArray(pointer), _startDumpOffset); return(values); } catch (Exception ex) { throw new Exception(ex.Message); } finally { _readWriter.Close(true); _tcp.Close(); //close connection _connected = false; _memexValidConnection = false; ReportProgress(0, 100, 0, "Idle"); } }