allow rename functions in main offset

This commit is contained in:
Alvaro Muñoz 2015-02-09 01:44:27 +01:00 committed by pancake
parent e0d7e3271d
commit 836b4625e1
6 changed files with 97 additions and 80 deletions

File diff suppressed because one or more lines are too long

View File

@ -812,7 +812,7 @@ function has_scrollbar(divnode) {
} }
function on_scroll(event) { function on_scroll(event) {
if (r2ui._dis.display == "flat") { if (r2ui._dis.display == "flatDISABLED") {
var scroll_offset = null; var scroll_offset = null;
var top_offset = null; var top_offset = null;
var addr = null; var addr = null;
@ -830,6 +830,7 @@ function on_scroll(event) {
if (has_scrollbar($('#center_panel')[0])) { if (has_scrollbar($('#center_panel')[0])) {
if (scroll_offset === 0 ) { if (scroll_offset === 0 ) {
$("#center_panel").scroll(null); $("#center_panel").scroll(null);
// console.log("Scroll en top", scroll_offset, top_offset)
addr = "0x" + r2ui._dis.instructions[0].offset.toString(16); addr = "0x" + r2ui._dis.instructions[0].offset.toString(16);
r2.get_disasm_before(addr, 100, function(x) { r2.get_disasm_before(addr, 100, function(x) {
r2ui._dis.instructions = x.concat(r2ui._dis.instructions); r2ui._dis.instructions = x.concat(r2ui._dis.instructions);
@ -842,6 +843,7 @@ function on_scroll(event) {
} }
if (scroll_offset > top_offset) { if (scroll_offset > top_offset) {
$("#center_panel").scroll(null); $("#center_panel").scroll(null);
// console.log("Scroll en top", scroll_offset, top_offset)
addr = "0x" + r2ui._dis.instructions[r2ui._dis.instructions.length-1].offset.toString(16); addr = "0x" + r2ui._dis.instructions[r2ui._dis.instructions.length-1].offset.toString(16);
r2.get_disasm_after(addr, 100, function(x) { r2.get_disasm_after(addr, 100, function(x) {
r2ui._dis.instructions = r2ui._dis.instructions.slice(0, -1).concat(x); r2ui._dis.instructions = r2ui._dis.instructions.slice(0, -1).concat(x);

View File

@ -315,7 +315,15 @@ enyo.kind ({
if (this.renaming !== null && this.rbox.value.length > 0) { if (this.renaming !== null && this.rbox.value.length > 0) {
if ($(this.selected).hasClass('insaddr')) { if ($(this.selected).hasClass('insaddr')) {
var old_value = get_offset_flag(r2ui._dis.selected_offset); var old_value = get_offset_flag(r2ui._dis.selected_offset);
rename(r2ui._dis.selected_offset, old_value, this.rbox.value, "offsets"); var type = "offsets";
r2.cmdj("afij @ " + r2ui._dis.selected_offset, function(x) {
if (x !== null && x !== undefined) {
if ("0x" + x[0].offset.toString(16) === r2ui._dis.selected_offset) {
type = "functions";
}
}
});
rename(r2ui._dis.selected_offset, old_value, this.rbox.value, type);
} else if ($(this.selected).hasClass('faddr')) { } else if ($(this.selected).hasClass('faddr')) {
if ($(this.selected).hasClass('fvar')) if ($(this.selected).hasClass('fvar'))
r2.cmd("afvn " + r2ui._dis.renameOldValue + " " + r2ui._dis.rbox.value + " @ " + r2ui._dis.selected_offset, function(x){}); r2.cmd("afvn " + r2ui._dis.renameOldValue + " " + r2ui._dis.rbox.value + " @ " + r2ui._dis.selected_offset, function(x){});
@ -559,8 +567,8 @@ enyo.kind ({
// for (var k in colors) // for (var k in colors)
// if (block[k]) // if (block[k])
// count++; // count++;
// count++; // avoid 0div wtf // count++; // avoid 0div wtf
// if (count==1) break; // if (count==1) break;
// var h = HEIGHT / count; // var h = HEIGHT / count;
// for (var k in colors) { // for (var k in colors) {
// var color = colors[k]; // var color = colors[k];
@ -576,7 +584,7 @@ enyo.kind ({
// } // }
// c += "<td onclick='r2ui.seek("+off+",true)' title='"+off // c += "<td onclick='r2ui.seek("+off+",true)' title='"+off
// + "' style='height:"+HEIGHT+"px' " // + "' style='height:"+HEIGHT+"px' "
// + "width=15px>"+r+"</td>"; // + "width=15px>"+r+"</td>";
// } // }
// c += "</tr></table>"; // c += "</tr></table>";
// self.$.colorbar.setContent (c); // self.$.colorbar.setContent (c);

View File

@ -72,7 +72,15 @@ DisasmPanel.prototype.handleInputTextChange = function() {
if (this.renaming !== null && this.rbox.value.length > 0) { if (this.renaming !== null && this.rbox.value.length > 0) {
if ($(this.selected).hasClass('insaddr')) { if ($(this.selected).hasClass('insaddr')) {
var old_value = get_offset_flag(r2ui._dis.selected_offset); var old_value = get_offset_flag(r2ui._dis.selected_offset);
rename(r2ui._dis.selected_offset, old_value, this.rbox.value, "offsets"); var type = "offsets";
r2.cmdj("afij @ " + r2ui._dis.selected_offset, function(x) {
if (x !== null && x !== undefined) {
if ("0x" + x[0].offset.toString(16) === r2ui._dis.selected_offset) {
type = "functions";
}
}
});
rename(r2ui._dis.selected_offset, old_value, this.rbox.value, type);
} else if ($(this.selected).hasClass('faddr')) { } else if ($(this.selected).hasClass('faddr')) {
if ($(this.selected).hasClass('fvar')) if ($(this.selected).hasClass('fvar'))
r2.cmd("afvn " + r2ui._dis.renameOldValue + " " + r2ui._dis.rbox.value + " @ " + r2ui._dis.selected_offset, function(x){}); r2.cmd("afvn " + r2ui._dis.renameOldValue + " " + r2ui._dis.rbox.value + " @ " + r2ui._dis.selected_offset, function(x){});

View File

@ -15,48 +15,48 @@ $(document).ready( function() {
} }
}); });
// Layout // Layout
myLayout = $('body').layout({ myLayout = $('body').layout({
west__size: 200, west__size: 200,
east__size: 200, east__size: 200,
south__size: 200, south__size: 200,
north__resizable: false, north__resizable: false,
center__onresize: function () {if (r2ui._dis.display == "graph" && r2ui._dis.minimap) update_minimap();}, center__onresize: function () {if (r2ui._dis.display == "graph" && r2ui._dis.minimap) update_minimap();},
west__onresize: $.layout.callbacks.resizePaneAccordions, west__onresize: $.layout.callbacks.resizePaneAccordions,
east__onresize: $.layout.callbacks.resizePaneAccordions east__onresize: $.layout.callbacks.resizePaneAccordions
}); });
// myLayout.disableClosable("north", true); // myLayout.disableClosable("north", true);
$("#accordion1").accordion({ heightStyle: "fill" }); $("#accordion1").accordion({ heightStyle: "fill" });
$("#accordion2").accordion({ heightStyle: "fill" }); $("#accordion2").accordion({ heightStyle: "fill" });
// Boot r2 analysis, settings, .... // Boot r2 analysis, settings, ....
r2.update_flags(); r2.update_flags();
r2.analAll(); r2.analAll();
r2.load_mmap(); r2.load_mmap();
r2ui.load_colors(); r2ui.load_colors();
r2.load_settings(); r2.load_settings();
load_binary_details(); load_binary_details();
// Create panels // Create panels
var disasm_panel = new DisasmPanel(); var disasm_panel = new DisasmPanel();
var hex_panel = new HexPanel(); var hex_panel = new HexPanel();
var entropy_panel = new EntropyPanel(); var entropy_panel = new EntropyPanel();
var strings_panel = new StringsPanel(); var strings_panel = new StringsPanel();
var settings_panel = new SettingsPanel(); var settings_panel = new SettingsPanel();
var projects_panel = new ProjectsPanel(); var projects_panel = new ProjectsPanel();
r2ui._ent = entropy_panel; r2ui._ent = entropy_panel;
r2ui._dis = disasm_panel; r2ui._dis = disasm_panel;
r2ui._str = strings_panel; r2ui._str = strings_panel;
r2ui._set = settings_panel; r2ui._set = settings_panel;
r2ui._hex = hex_panel; r2ui._hex = hex_panel;
r2ui._prj = projects_panel; r2ui._prj = projects_panel;
// For enyo compatibility // For enyo compatibility
r2ui.ra = {}; r2ui.ra = {};
r2ui.mp = {}; r2ui.mp = {};
r2ui.ra.getIndex = function() {}; r2ui.ra.getIndex = function() {};
r2ui.ra.setIndex = function() {}; r2ui.ra.setIndex = function() {};
r2ui.mp.openPage = function() {}; r2ui.mp.openPage = function() {};
var console_history = []; var console_history = [];
var console_history_idx = 0; var console_history_idx = 0;
@ -231,7 +231,7 @@ $(document).ready( function() {
do_jumpto(address); do_jumpto(address);
} }
switch (ui.cmd) { switch (ui.cmd) {
case "goto": do_goto(); break; case "goto": do_goto(); break;
case "comment": do_comment(target); break; case "comment": do_comment(target); break;
case "rename": do_rename(target, event); break; case "rename": do_rename(target, event); break;
case "define": do_define(target); break; case "define": do_define(target); break;
@ -267,9 +267,9 @@ $(document).ready( function() {
$(document).dblclick(handleDoubleClick); $(document).dblclick(handleDoubleClick);
// Show disasm panel and seek to entrypoint // Show disasm panel and seek to entrypoint
disasm_panel.display_flat(); disasm_panel.display_flat();
r2ui.seek(disasm_panel.base,true); r2ui.seek(disasm_panel.base,true);
scroll_to_element(r2ui._dis.selected); scroll_to_element(r2ui._dis.selected);
$("#center_panel").scroll(on_scroll); $("#center_panel").scroll(on_scroll);
@ -298,7 +298,7 @@ function scroll_to_last_offset() {
// key handler // key handler
function handleKeypress(inEvent) { function handleKeypress(inEvent) {
var keynum = inEvent.keyCode || inEvent.charCode || inEvent.which || 0; var keynum = inEvent.keyCode || inEvent.charCode || inEvent.which || 0;
var key = String.fromCharCode(keynum); var key = String.fromCharCode(keynum);
// console.log(key); // console.log(key);
if ($(inEvent.target).prop("tagName") === "INPUT") { if ($(inEvent.target).prop("tagName") === "INPUT") {
@ -307,22 +307,22 @@ function handleKeypress(inEvent) {
if (r2ui._dis.renaming !== null) return; if (r2ui._dis.renaming !== null) return;
// Spacebar Switch flat and graph views // Spacebar Switch flat and graph views
if (key === ' ') { if (key === ' ') {
do_switchview(); do_switchview();
inEvent.preventDefault(); inEvent.preventDefault();
} }
if (key === 'm' && r2ui._dis.display == "graph") toggle_minimap(); if (key === 'm' && r2ui._dis.display == "graph") toggle_minimap();
// h Seek to previous address in history // h Seek to previous address in history
if (key === 'h') do_jumpto(r2ui.history_prev()); if (key === 'h') do_jumpto(r2ui.history_prev());
// l Seek to next address in history // l Seek to next address in history
if (key === 'l') do_jumpto(r2ui.history_next()); if (key === 'l') do_jumpto(r2ui.history_next());
// j Seek to next Instruction // j Seek to next Instruction
if (key === 'j') { if (key === 'j') {
var get_more_instructions = false; var get_more_instructions = false;
if ($(r2ui._dis.selected).hasClass("insaddr")) { if ($(r2ui._dis.selected).hasClass("insaddr")) {
var next_instruction; var next_instruction;
@ -350,9 +350,9 @@ function handleKeypress(inEvent) {
rehighlight_iaddress(address); rehighlight_iaddress(address);
scroll_to_address(address); scroll_to_address(address);
} }
} }
// k Seek to previous instruction // k Seek to previous instruction
if (key === 'k') { if (key === 'k') {
var get_more_instructions = false; var get_more_instructions = false;
if ($(r2ui._dis.selected).hasClass("insaddr")) { if ($(r2ui._dis.selected).hasClass("insaddr")) {
var prev_instruction; var prev_instruction;
@ -378,41 +378,41 @@ function handleKeypress(inEvent) {
rehighlight_iaddress(address); rehighlight_iaddress(address);
scroll_to_address(address); scroll_to_address(address);
} }
} }
// c Define function // c Define function
if (key === 'c') do_define(r2ui._dis.selected); if (key === 'c') do_define(r2ui._dis.selected);
// u Clear function metadata // u Clear function metadata
if (key === 'u') do_undefine(r2ui._dis.selected); if (key === 'u') do_undefine(r2ui._dis.selected);
// g Go to address // g Go to address
if (key === 'g') do_jumpto(prompt('Go to')); if (key === 'g') do_jumpto(prompt('Go to'));
// ; Add comment // ; Add comment
if (key === ';') do_comment(r2ui._dis.selected); if (key === ';') do_comment(r2ui._dis.selected);
// n Rename // n Rename
if (key === 'n') do_rename(r2ui._dis.selected, inEvent); if (key === 'n') do_rename(r2ui._dis.selected, inEvent);
if (key === 'R') do_randomcolors(); if (key === 'R') do_randomcolors();
// esc // esc
if (keynum === 27) { if (keynum === 27) {
// Esc belongs to renaming // Esc belongs to renaming
if(r2ui._dis.renaming !== null) { if(r2ui._dis.renaming !== null) {
r2ui._dis.renaming.innerHTML = r2ui._dis.renameOldValue; r2ui._dis.renaming.innerHTML = r2ui._dis.renameOldValue;
r2ui._dis.renaming = null; r2ui._dis.renaming = null;
} else { } else {
// go back in history // go back in history
var addr = r2ui.history_prev(); var addr = r2ui.history_prev();
if (addr !== undefined && addr !== null) r2ui.seek(addr, false); if (addr !== undefined && addr !== null) r2ui.seek(addr, false);
scroll_to_address(addr); scroll_to_address(addr);
} }
} }
// enter // enter
if (keynum === 13) { if (keynum === 13) {
r2ui._dis.goToAddress(); r2ui._dis.goToAddress();
} }
} }
function do_switchview() { function do_switchview() {
@ -429,14 +429,14 @@ function do_jumpto(address) {
var element = $('.insaddr.addr_' + address); var element = $('.insaddr.addr_' + address);
if (element.length > 0) { if (element.length > 0) {
r2ui.history_push(address); r2ui.history_push(address);
r2ui._dis.selected = element; r2ui._dis.selected = element[0];
r2ui._dis.selected_offset = address; r2ui._dis.selected_offset = address;
render_history(); render_history();
} else { } else {
r2ui.seek(address, true); r2ui.seek(address, true);
} }
rehighlight_iaddress(r2ui._dis.tmp_address); rehighlight_iaddress(address);
scroll_to_address(r2ui._dis.tmp_address); scroll_to_address(address);
} }
function do_rename(element, inEvent) { function do_rename(element, inEvent) {

View File

@ -9,9 +9,8 @@ StringsPanel.prototype.render = function() {
var data = []; var data = [];
for (var i in strings) { for (var i in strings) {
var f = strings[i]; var f = strings[i];
f.string = decodeURI (f.string);
var fd = { var fd = {
label: decodeURIComponent(f.string), label: atob(f.string),
children: [ children: [
{label: "vaddr: " + "0x" + f.vaddr.toString(16)}, {label: "vaddr: " + "0x" + f.vaddr.toString(16)},
{label: "paddr: " + "0x" + f.paddr.toString(16)}, {label: "paddr: " + "0x" + f.paddr.toString(16)},