private void PointerList_OnNewPathGenerated(PointerList pointerList, List <Int64> path_offset, List <Pointer> path_address) { if (path_address.Count > 0) { Int32 baseSectionID = ProcessManager.mInstance.MappedSectionList.GetMappedSectionID(path_address[path_offset.Count - 1].Address); if (fastScan && !ProcessManager.mInstance.MappedSectionList[baseSectionID].Name.StartsWith("executable")) { return; } ScannerThreadUIUpdateInfo view_info = new ScannerThreadUIUpdateInfo(path_offset, path_address, baseSectionID); bgWorkerScanner.ReportProgress(95, view_info); } }
private void bgWorkerScanner_ProgressChanged(Object sender, ProgressChangedEventArgs e) { uiStatusStrip_ProgressBarScannerThread.Value = e.ProgressPercentage; if (e.UserState != null) { ScannerThreadUIUpdateInfo pointerFinderWorkerListViewUpdate = (ScannerThreadUIUpdateInfo)e.UserState; List <Int64> path_offset = pointerFinderWorkerListViewUpdate.pathOffset; List <Pointer> path_address = pointerFinderWorkerListViewUpdate.pathAddress; Int32 baseSectionID = pointerFinderWorkerListViewUpdate.sectionID; try { UInt64 baseOffset = path_address[path_offset.Count - 1].Address - ProcessManager.mInstance.MappedSectionList[baseSectionID].Start; PointerResult pointerResult = new PointerResult(baseSectionID, baseOffset, path_offset); pointerResults.Add(pointerResult); Int32 row_index = dataGridPointerList.Rows.Add(); DataGridViewCellCollection row = dataGridPointerList.Rows[row_index].Cells; for (Int32 i = 0; i < path_offset.Count; ++i) { row[i].Value = (path_offset[i].ToString("X")); //offset Int32 sectionID = ProcessManager.mInstance.MappedSectionList.GetMappedSectionID(path_address[i].Address); } if (path_offset.Count > 0) { row[row.Count - 2].Value = (path_address[path_address.Count - 1].Address.ToString("X")); //address Int32 sectionID = ProcessManager.mInstance.MappedSectionList.GetMappedSectionID(path_address[path_address.Count - 1].Address); row[row.Count - 1].Value = (ProcessManager.mInstance.MappedSectionList.GetSectionName(sectionID)); //section } uiStatusStrip_lblStatus.Text = String.Format("{0} results", pointerResults.Count); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }