1 line
No EOL
8.8 KiB
JavaScript
1 line
No EOL
8.8 KiB
JavaScript
function isFirefoxOS(){return"undefined"!=typeof locationbar&&!locationbar.visible&&navigator.userAgent.indexOf("Firefox")>-1&&navigator.userAgent.indexOf("Mobile")>-1?"mozApps"in navigator:!1}function asyncLoop(r,n,e){var t=0,o=!1,a={next:function(){o||(r>t?(t++,n(a)):(o=!0,e()))},iteration:function(){return t-1},"break":function(){o=!0,e()}};return a.next(),a}function dump(r){var n="";for(var e in r)n+=e+"\n";alert(n)}function objtostr(r){var n="";for(var e in r)n+=e+": "+r[e]+",\n";return n}function Ajax(r,n,e,t,o){if("undefined"==typeof XMLHttpRequest)return!1;if("fake"==r2.asyncMode)return t&&t("{}"),!0;if("sasync"==r2.asyncMode&&(console.log("async waiting"),ajax_in_process))return setTimeout(function(){Ajax(r,n,e,t)},100),!1;var a=void 0;if(isFirefoxOS())var a=new XMLHttpRequest({mozSystem:!0});else var a=new XMLHttpRequest;if(!a)return!1;ajax_in_process=!0,"sync"==r2.asyncMode?a.open(r,n,!1):a.open(r,n,!0),a.setRequestHeader("Accept","text/plain"),a.setRequestHeader("Content-Type","application/x-ww-form-urlencoded; charset=UTF-8"),a.onreadystatechange=function(){ajax_in_process=!1,200==a.status?t?t(a.responseText):console.error("missing ajax callback"):((o||r2.err)("connection refused"),console.error("ajax "+a.status))};try{a.send(e)}catch(i){"NetworkError"==i.name&&(o||r2.err)("connection error")}return!0}function _internal_cmd(r,n,e){return"undefined"!=typeof r2cmd&&(hascmd=r2cmd),hascmd?"undefined"!=typeof r2plugin?n(r2cmd(r)):hascmd(r,n):void Ajax("GET",r2.root+"/cmd/"+encodeURI(r),"",function(r){n&&n(r)},e)}var r2={},backward=!1,next_curoff=0,next_lastoff=0,prev_curoff=0,prev_lastoff=0,hascmd=!1;r2.asyncMode="sync",r2.err=null,isFirefoxOS()?r2.root="http://cloud.radare.org":r2.root="","undefined"!=typeof module&&(module.exports=function(r){return hascmd="function"==typeof r?r:r.cmd,r2}),r2.project_name="",r2.plugin=function(){console.error("r2.plugin is not available in this environment")};try{r2plugin&&(r2.plugin=r2plugin)}catch(e){}r2.root="",r2.analAll=function(){r2.cmd("aa",function(){})},r2.analOp=function(r,n){r2.cmd("aoj 1 @ "+r,function(r){try{n(JSON.parse(r)[0])}catch(e){console.error(e),n(r)}})},r2.varMap=[],r2.argMap=[];var ajax_in_process=!1;r2.assemble=function(r,n,e){var t=r?"@"+r:"";r2.cmd('"pa '+n+'"'+t,e)},r2.disassemble=function(r,n,e){var t=r?"@"+r:"",o="pi @b:"+n+t;r2.cmd(o,e)},r2.get_hexdump=function(r,n,e){r2.cmd("px "+n+"@"+r,e)},r2.get_disasm=function(r,n,e){r2.cmd("pD "+n+"@"+r,e)},r2.get_disasm_before=function(r,n,e){var t=[];r2.cmd("pdj -"+n+"@"+r,function(r){t=JSON.parse(r)}),e(t)},r2.get_disasm_after=function(r,n,e){var t=[];r2.cmd("pdj "+n+"@"+r,function(r){t=JSON.parse(r)}),e(t)},r2.get_disasm_before_after=function(r,n,e,t){var o=[],a=[];r2.cmd("pdj "+n+" @"+r,function(r){o=JSON.parse(r)}),r2.cmd("pdj "+e+"@"+r,function(r){a=JSON.parse(r)});var i=o.concat(a);t(i)},r2.Config=function(r,n,e){return"function"!=typeof n&&n?r2.cmd("e "+r+"="+n,e):r2.cmd("e "+r,e||n),r2},r2.sections={},r2.load_mmap=function(){r2.cmdj("iSj",function(r){void 0!==r&&null!==r&&(r2.sections=r)})},r2.get_address_type=function(r){var n=parseInt(r,16);for(var e in r2.sections)if(n>=r2.sections[e].addr&&n<r2.sections[e].addr+r2.sections[e].size)return r2.sections[e].flags.indexOf("x")>-1?"instruction":"memory";return""},r2.settings={},r2.load_settings=function(){r2.cmd("e asm.arch",function(r){r2.settings["asm.arch"]=r.trim()}),r2.cmd("e asm.bits",function(r){r2.settings["asm.bits"]=r.trim()}),r2.cmd("e asm.bytes",function(r){r2.settings["asm.bytes"]=toBoolean(r.trim())}),r2.cmd("e asm.flags",function(r){r2.settings["asm.flags"]=toBoolean(r.trim())}),r2.cmd("e asm.offset",function(r){r2.settings["asm.offset"]=toBoolean(r.trim())}),r2.cmd("e asm.lines",function(r){r2.settings["asm.lines"]=toBoolean(r.trim())}),r2.cmd("e asm.xrefs",function(r){r2.settings["asm.xrefs"]=toBoolean(r.trim())}),r2.cmd("e asm.cmtright",function(r){r2.settings["asm.cmtright"]=toBoolean(r.trim())}),r2.cmd("e asm.pseudo",function(r){r2.settings["asm.pseudo"]=toBoolean(r.trim())})},r2.flags={},r2.update_flags=function(){r2.cmd("fs *;fj",function(r){var n=JSON.parse(r);if(void 0!==n&&null!==n){r2.flags={};for(var e in n){var t="0x"+n[e].offset.toString(16);if(t=address_canonicalize(t),t in r2.flags){var o=r2.flags[t];o[o.length]={name:n[e].name,size:n[e].size},r2.flags[t]=o}else r2.flags[t]=[{name:n[e].name,size:n[e].size}]}}})},r2.get_flag_address=function(r){for(var n in r2.flags)for(var e in r2.flags[n])if(r==r2.flags[n][e].name)return n;return null},r2.get_flag_names=function(r){var n=[];for(var e in r2.flags[r])n[n.length]=r2.flags[r][e].name;return n},r2.set_flag_space=function(r,n){r2.cmd("fs "+r,n)},r2.get_flags=function(r){r2.cmd("fj",function(n){r(n?JSON.parse(n):[])})},r2.get_opcodes=function(r,n,e){r2.cmd("pdj @"+r+"!"+n,function(r){e(JSON.parse(r))})},r2.get_bytes=function(r,n,e){r2.cmd("pcj @"+r+"!"+n,function(r){e(JSON.parse(r))})},r2.asm_config={},r2.store_asm_config=function(){config={},r2.cmd("e",function(r){conf=r.split("\n");for(var n in conf){var e=conf[n].split(" ");3==e.length&&0==e[0].trim().indexOf("asm.")&&(config[e[0].trim()]=e[2].trim())}r2.asm_config=config})},r2.restore_asm_config=function(){cmd="";for(var r in r2.asm_config)cmd+="e "+r+"="+r2.asm_config[r]+";";r2.cmd(cmd,function(){})},r2.get_info=function(r){r2.cmd("ij",function(n){r(JSON.parse(n))})},r2.bin_relocs=function(r){r2.cmd("irj",function(n){r(JSON.parse(n))})},r2.bin_imports=function(r){r2.cmd("iij",function(n){r(JSON.parse(n))})},r2.bin_symbols=function(r){r2.cmd("isj",function(n){r(JSON.parse(n))})},r2.bin_sections=function(r){r2.cmd("iSj",function(n){r(JSON.parse(n))})},r2.cmds=function(r,n){function e(){void 0!=t&&0!=r.length&&(t=r[0],r=r.splice(1),r2.cmd(t,e),n&&n())}if(0!=r.length){var t=r[0];r=r.splice(1),r2.cmd(t,e)}},r2.cmd=function(r,n,e){if(Array.isArray(r)){var t=[],o=0;asyncLoop(r.length,function(n){_internal_cmd(r[o],function(r){o=n.iteration(),t[o]=r.replace(/\n$/,""),o++,n.next()},e)},function(){n(t)})}else _internal_cmd(r,n,e)},r2.cmdj=function(r,n){r2.cmd(r,function(r){try{n(JSON.parse(r))}catch(e){n(null)}})},r2.alive=function(r){r2.cmd("b",function(n){var e=!1;n&&n.length()>0&&(e=!0),r&&r(n)})},r2.getTextLogger=function(r){return"object"!=typeof r&&(r={}),r.last=0,r.events={},r.interval=null,r2.cmd("Tl",function(n){r.last=+n}),r.load=function(n){r2.cmd('"Tj '+(r.last+1)+'"',function(r){n&&n(JSON.parse(r))})},r.clear=function(r){r2.cmd("T-",r)},r.send=function(r,n){r2.cmd('"T '+r+'"',n)},r.refresh=function(n){r.load(function(e){for(var t=0;t<e.length;t++){var o=e[t];r.events.message({id:o[0],text:o[1]}),o[0]>r.last&&(r.last=o[0])}n&&n()})},r.autorefresh=function(n){function e(){return r.refresh(function(){}),"Logs"===r2ui.selected_panel?setTimeout(e,1e3*n):console.log("Not in logs :("),!0}return n?void(r.interval=setTimeout(e,1e3*n)):void(r.interval&&r.interval.stop())},r.on=function(n,e){return r.events[n]=e,r},r},r2.filter_asm=function(r,n){function e(r){return"p"==r[0]&&"d"==r[1]?!0:-1!=r.indexOf(";pd")}var t=backward?prev_curoff:next_curoff,o=backward?prev_lastoff:next_lastoff,a=r.split(/\n/g);r2.cmd("s",function(r){t=r});for(var i=a.length-1;i>0;i--){var c=a[i].match(/0x([a-fA-F0-9]+)/);if(c&&c.length>0){o=c[0].replace(/:/g,"");break}}if("afl"==n){for(var s="",i=0;i<a.length;i++){var f=a[i].replace(/\ +/g," ").split(/ /g);s+=f[0]+" "+f[3]+"\n"}r=s}else if("f"==n[0]){if("s"==n[1]){for(var s="",i=0;i<a.length;i++){var f=a[i].replace(/\ +/g," ").split(/ /g),l="*"==f[1]?"*":" ",u=f[2]?f[2]:f[1];u&&(s+=f[0]+" "+l+" <a href=\"javascript:runcmd('fs "+u+"')\">"+u+"</a>\n")}r=s}}else if("i"==n[0]&&n[1]){for(var s="",i=0;i<a.length;i++){for(var d=a[i].split(/ /g),m="",p="",g=0;g<d.length;g++){var v=d[g].split(/=/);"addr"==v[0]&&(p=v[1]),"name"==v[0]&&(m=v[1]),"string"==v[0]&&(m=v[1])}s+=p+" "+m+"\n"}r=s}return e(n)&&(r=r.replace(/function:/g,"<span style=color:green>function:</span>"),r=r.replace(/;(\s+)/g,";"),r=r.replace(/;(.*)/g,"// <span style='color:#209020'>$1</span>"),r=r.replace(/(bl|goto|call)/g,"<b style='color:green'>call</b>"),r=r.replace(/(jmp|bne|beq|js|jnz|jae|jge|jbe|jg|je|jl|jz|jb|ja|jne)/g,"<b style='color:green'>$1</b>"),r=r.replace(/(dword|qword|word|byte|movzx|movsxd|cmovz|mov\ |lea\ )/g,"<b style='color:#1070d0'>$1</b>"),r=r.replace(/(hlt|leave|iretd|retn|ret)/g,"<b style='color:red'>$1</b>"),r=r.replace(/(add|sbb|sub|mul|div|shl|shr|and|not|xor|inc|dec|sar|sal)/g,"<b style='color:#d06010'>$1</b>"),r=r.replace(/(push|pop)/g,"<b style='color:#40a010'>$1</b>"),r=r.replace(/(test|cmp)/g,"<b style='color:#c04080'>$1</b>"),r=r.replace(/(outsd|out|string|invalid|int |int3|trap|main|in)/g,"<b style='color:red'>$1</b>"),r=r.replace(/nop/g,"<b style='color:blue'>nop</b>"),r=r.replace(/(sym|fcn|str|imp|loc)\.([^:<(\\\/ \|)\->]+)/g,"<a href='javascript:r2ui.seek(\"$1.$2\")'>$1.$2</a>")),r=r.replace(/0x([a-zA-Z0-9]+)/g,"<a href='javascript:r2ui.seek(\"0x$1\")'>0x$1</a>"),backward?(prev_curoff=t,prev_lastoff=o):(next_curoff=t,next_lastoff=o,prev_curoff||(prev_curoff=next_curoff)),r}; |