首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

【便利查看】webBrowser中JS 注入,关键时刻顶大用

2012-09-05 
【方便查看】webBrowser中JS 注入,关键时刻顶大用这个方法 在一般的时候 可能没什么用 但是在关键时刻 最用

【方便查看】webBrowser中JS 注入,关键时刻顶大用
这个方法 在一般的时候 可能没什么用 但是在关键时刻 最用就大了。。这比如 Post时候 如果 一些东西 被JS 加密 或者弄乱了,一般情况下,可以通过JS 还原 在代码中重现也可以,我碰到过在js中RSA加密的,但是 这个代码很多,又压缩过,几乎解压不了。并且这个Rsa 被他们动了手脚,已经无法还原了这个时候注入JS 代码就有用了,可以通过自己注入的JS 调那个加密的函数我这里搞的那个 我就不方便透漏了

 
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Security.Permissions;namespace WS.Subscriber.Core{    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]    [System.Runtime.InteropServices.ComVisibleAttribute(true)]    public static class JSRSA    {        private static mshtml.IHTMLDocument2 currentDoc;        private static mshtml.IHTMLWindow2 win;        private static WebBrowser webBrowser1 = new WebBrowser();        public static bool IsLoadFinish = false;        private static bool IsLoaded = false;        public static void Load()        {            if (!IsLoaded)            {                IsLoaded = true;                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);                webBrowser1.Navigate(http://Url);            }        }        //加载完成触发        static void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)        {            currentDoc = (mshtml.IHTMLDocument2)webBrowser1.Document.DomDocument;            win = (mshtml.IHTMLWindow2)currentDoc.parentWindow;
//注入自己的JS 代码            win.execScript("var tmpat = new App.RSAKey();tmpat.setPublic($CONFIG.$encode_key, $CONFIG.$key_plus || \"10001\");function tmpencrypt(str){return tmpat.encrypt(str)}", "javascript");            IsLoadFinish = true;        }        private static void ScriptReady()        {            IsLoadFinish = true;        }        public static string JSRSA(string str)        {            string result = "";            try            {                webBrowser1.Invoke(new System.Action(delegate()                {
//调用自己注入的JS 方法 获取到加密串                    result = webBrowser1.Document.InvokeScript("tmpencrypt", new object[] { str }).ToString();                }));            }            catch(Exception ex)            {                Spider.Common.ErrorHander.WriteRecord(ex.StackTrace);            }            return result;        }    }}

热点排行