"Decompile" Javascript function? *ADVANCED*

Posted by caesar2k on Stack Overflow See other posts from Stack Overflow or by caesar2k
Published on 2010-03-27T09:34:53Z Indexed on 2010/03/27 9:43 UTC
Read the original article Hit count: 362

[1] Ok, I don't even know how to call this, to be honest. So let me get some semi-pseudo code, to show what I'm trying to do. I'm using jquery to get an already existing script declared inside the page, inside a createDocument() element, from an AJAX call.

GM_xmlhttprequest({
  ...
  load:function(r){
    var doc = document_from_string(r.responseText);
    script_content = $('body script:regex(html, local_xw_sig)', doc).html();
    var scriptEl = document.createElement('script');
    scriptEl.type = 'text/javascript';
    scriptEl.innerHTML = script_content; // good till here
    (function(sc){
      eval(sc.innerHTML); // not exactly like this, but you get the idea, errors
      alert('wont get here ' + local_xw_sig); // local_xw_sig is a global "var" inside the source
    })(scriptEl);
  }
});

so far so good, the script indeed contains the source from the entire script block. Now, inside this "script_content", there are auto executing functions, like $(document).ready(function(){...}) that, everything I "eval" the innerHTML, it executes this code, halting my encapsulated script. like variables that doesn't exist, etc

removing certain parts of the script using regex isn't really an option... what I really wanted is to "walk" inside the function. like do a (completely fictional):

script = eval("function(){" + script_content + "};");
alert(script['local_xw_sig']); // a03ucc34095cw3495

is there any way to 'disassemble' the function, and be able to reach the "var"s inside of it? like this function:

function hello(){
  var message = "hello";
}
alert(hello.message); // message = var inside the function

is it possible at all? or I will have to hack my way using regex? ;P

[2] also, is there any way I can access javascript inside a document created with "createDocument"?

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about eval