k345bu 2015-07-24 06:11
浏览 3055

HOOK WebBrowser获取打开的网址 request response header等.

以下代码使用了EsayHook

想先获取到打开的网址. 无奈断点断不到..是否HOOK的函数错了?

 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 EasyHook;


namespace TestHookAPI
{
    public partial class Form1 : Form
    {
        LocalHook hookt = null;
        [DllImport("WININET.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        public static extern IntPtr InternetOpenUrlW(
                                IntPtr hInternet,
                                string lpszUrl,
                                string lpszHeaders,
                                Int32 dwHeadersLength,
                                Int32 dwFlags,
                                System.UIntPtr dwContext
                                );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
        public delegate IntPtr d_InternetOpenUrl(
                                        IntPtr hInternet,
                                        string lpszUrl,
                                        string lpszHeaders,
                                        Int32 dwHeadersLength,
                                        Int32 dwFlags,
                                        System.UIntPtr dwContext
                                        );
        public static IntPtr h_InternetOpenUrl(
                                        IntPtr hInternet,
                                        string lpszUrl,
                                        string lpszHeaders,
                                        Int32 dwHeadersLength,
                                        Int32 dwFlags,
                                        System.UIntPtr dwContext
                                        )
        {
            IntPtr pret = InternetOpenUrlW(hInternet, lpszUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext);
            return pret;
        }

        public Form1()
        {
            InitializeComponent();

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            hookt = LocalHook.Create(LocalHook.GetProcAddress("WININET.dll", "InternetOpenUrlW"), new d_InternetOpenUrl(h_InternetOpenUrl), this);
            hookt.ThreadACL.SetExclusiveACL(new Int32[0]);
            webBrowser1.Navigate("http://www.baidu.com/");
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

        }
    }
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 (关键词-电路设计)
    • ¥15 如何解决MIPS计算是否溢出
    • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
    • ¥15 操作系统相关算法中while();的含义
    • ¥15 CNVcaller安装后无法找到文件
    • ¥15 visual studio2022中文乱码无法解决
    • ¥15 关于华为5g模块mh5000-31接线问题
    • ¥15 keil L6007U报错
    • ¥15 webapi 发布到iis后无法访问
    • ¥15 初学者如何快速上手学习stm32?