use of com.google.security.zynamics.binnavi.debug.debugger.interfaces.IDebugger in project binnavi by google.
the class CMemoryMenu method createMenu.
/**
* Creates the context menu of a memory viewer component.
*
* @param offset The memory offset where the context menu will be shown.
*
* @return The context menu for the specified address.
*/
@Override
public JPopupMenu createMenu(final long offset) {
final JPopupMenu menu = new JPopupMenu();
final IDebugger debugger = m_debugger.getCurrentSelectedDebugger();
if (debugger == null) {
return null;
}
menu.add(CActionProxy.proxy(new CSearchAction(m_parent, m_debugger, m_memoryView)));
menu.add(CActionProxy.proxy(new CGotoAction(m_parent, m_memoryView, m_debugger)));
if (canReadDword(debugger.getProcessManager().getMemoryMap(), offset)) {
final byte[] data = debugger.getProcessManager().getMemory().getData(offset, 4);
final IAddress dword = new CAddress(ByteHelpers.readDwordLittleEndian(data, 0));
if (canReadDword(debugger.getProcessManager().getMemoryMap(), dword.toLong())) {
menu.add(CActionProxy.proxy(new CFollowDumpAction(m_debugger, dword)));
}
}
menu.addSeparator();
final long firstOffset = m_memoryView.getHexView().getBaseAddress();
final int size = m_memoryView.getHexView().getData().getDataLength();
menu.add(new CLoadAllAction(m_parent, debugger, new CAddress(firstOffset), size));
// Offer the option to dump memory
final JMenu dumpMenu = new JMenu("Dump to file");
dumpMenu.add(CActionProxy.proxy(new CDumpMemoryRangeAction(m_parent, debugger, m_memoryView.getHexView().getData(), new CAddress(firstOffset), size)));
menu.add(dumpMenu);
menu.addSeparator();
final BookmarkManager manager = debugger.getBookmarkManager();
// At first offer the option to add or remove a bookmark
// at the specified position.
final CBookmark bookmark = manager.getBookmark(new CAddress(offset));
if (bookmark == null) {
menu.add(new JMenuItem(CActionProxy.proxy(new CCreateBookmarkAction(manager, new CAddress(offset)))));
} else {
menu.add(new JMenuItem(CActionProxy.proxy(new CDeleteBookmarkAction(manager, bookmark))));
}
if (manager.getNumberOfBookmarks() != 0) {
// Afterwards list all currently active bookmarks.
menu.addSeparator();
final JMenu bookmarksItem = new JMenu("Bookmarks");
for (int i = 0; i < manager.getNumberOfBookmarks(); i++) {
bookmarksItem.add(CActionProxy.proxy(new CGotoBookmarkAction(m_debugger, manager.getBookmark(i))));
}
menu.add(bookmarksItem);
}
menu.addSeparator();
menu.add(HexViewOptionsMenu.createHexViewOptionsMenu(m_memoryView.getHexView()));
return menu;
}
use of com.google.security.zynamics.binnavi.debug.debugger.interfaces.IDebugger in project binnavi by google.
the class CMemoryFunctions method gotoOffset.
/**
* Shows the Goto Offset dialog and sets the caret of a hex control to the entered offset.
*
* @param parent Parent window used for dialogs.
* @param view Hex view to focus after the Goto operation.
* @param model Model that contains the memory viewer where the offset is changed.
*/
public static void gotoOffset(final JFrame parent, final CMemoryViewer view, final CDebugPerspectiveModel model) {
final IDebugger debugger = model.getCurrentSelectedDebugger();
if (debugger == null) {
return;
}
final TargetProcessThread activeThread = debugger.getProcessManager().getActiveThread();
final Memory memory = debugger.getProcessManager().getMemory();
final CDefaultMemoryExpressionBinding binding = new CDefaultMemoryExpressionBinding(activeThread, memory);
final CGotoDialog dlg = new CGotoDialog(parent, model.getCurrentSelectedDebugger().getProcessManager().getMemoryMap(), binding, model.getGotoAddress());
dlg.setVisible(true);
final IAddress value = dlg.getValue();
if (value != null) {
model.setGotoAddress(value);
model.setActiveMemoryAddress(value, true);
view.requestFocusInWindow();
}
}
use of com.google.security.zynamics.binnavi.debug.debugger.interfaces.IDebugger in project binnavi by google.
the class CMemoryRefreshButtonSynchronizer method updateGui.
/**
* Updates the button according to the currently available information about the target process.
*/
private void updateGui() {
final IDebugger debugger = m_debugPerspectiveModel.getCurrentSelectedDebugger();
final TargetProcessThread thread = debugger == null ? null : debugger.getProcessManager().getActiveThread();
final boolean connected = debugger != null && debugger.isConnected();
final boolean suspended = connected && thread != null;
m_refreshButton.setEnabled(suspended);
}
use of com.google.security.zynamics.binnavi.debug.debugger.interfaces.IDebugger in project binnavi by google.
the class CDebugEventNotifier method activateWindow.
/**
* Activates the window of this debugger.
*
* @return The window of this debugger.
*/
private JFrame activateWindow() {
for (final IGraphContainerWindow window : CWindowManager.instance().getOpenWindows()) {
for (final IGraphPanel graphPanel : window) {
final BackEndDebuggerProvider debuggerProvider = graphPanel.getModel().getDebuggerProvider();
for (final IDebugger d : debuggerProvider) {
if (d == m_debugger) {
window.activate(graphPanel);
window.show();
return window.getFrame();
}
}
}
}
return null;
}
use of com.google.security.zynamics.binnavi.debug.debugger.interfaces.IDebugger in project binnavi by google.
the class CMemorySectionPanelSynchronizer method updateGui.
/**
* Updates the GUI of the synchronized memory section box depending on the current state of the
* debug GUI perspective and the active debugger.
*/
private void updateGui() {
final IDebugger activeDebugger = debugPerspectiveModel.getCurrentSelectedDebugger();
final TargetProcessThread activeThread = activeDebugger == null ? null : activeDebugger.getProcessManager().getActiveThread();
final boolean enable = (activeThread != null) && (activeDebugger != null) && activeDebugger.isConnected() && (activeDebugger.getProcessManager().getTargetInformation() != null) && activeDebugger.getProcessManager().getTargetInformation().getDebuggerOptions().canMemmap() && (memorySectionBox.getItemCount() != 0);
new SwingInvoker() {
@Override
protected void operation() {
memorySectionBox.setEnabled(enable);
}
}.invokeAndWait();
}
Aggregations