万神fake 发表于 2024-8-16 09:42

Net程序,如何hook或重定向服务器?


[*]使用NETReactorSlayer反编译出来了程序源码,分析出来程序判断Vip是通过HttpWebRequest从网络获取的信息,使用Reqable拦截修改请求,设置Vip信息成功。
    private const string DefaultServerIp = "x.x.x.x";
    private const string AlternateServerIp = "x.x.x.x";
    private const string UserAgent = "Mozilla/5.2 (KHTML-XVA)";
    private const int TimeoutMilliseconds = 5000;
    private string _authToken;

    public async Task<string> FetchDataAsync(string endpoint, string id = "")
    {
      string serverIp = DefaultServerIp;
      string result = string.Empty;

      try
      {
            string url = $"http://{serverIp}:6096/api/{endpoint}{(string.IsNullOrEmpty(id) ? "" : $"/{id}")}";
            
            using (var request = (HttpWebRequest)WebRequest.Create(url))
            {
                request.UserAgent = UserAgent;
                request.Headers.Add("CL", Convert.ToBase64String(Encoding.UTF8.GetBytes(_authToken)));
                request.Timeout = TimeoutMilliseconds;

                using (var response = await request.GetResponseAsync() as HttpWebResponse)
                using (var stream = response.GetResponseStream())
                using (var reader = new StreamReader(stream, Encoding.UTF8))
                {
                  result = await reader.ReadToEndAsync();
                }
            }
      }
      catch (Exception ex)
      {
            Console.WriteLine($"Error: {ex.Message}");
            serverIp = serverIp == DefaultServerIp ? AlternateServerIp : DefaultServerIp;
            result = "X";
      }

      return result;
    }
现在问题是用Reqable不够优雅,会影响到游戏加速器的使用,因为是反编译出来的程序,研究了DotNetDetour,函数名称是会变动的,也不能修改il指令,再加上程序经常更新,所以想用网络拦截的方法,有什么实现思路吗?网络拦截最好只影响目标程序

bester 发表于 2024-8-16 10:03

hosts 直接域名转向即可
aiohttp建立一个服务器,返回你要的东西

https://www.52pojie.cn/thread-1915517-1-1.html

kingdjh 发表于 2024-8-16 10:54

本帖最后由 kingdjh 于 2024-8-16 10:57 编辑

用DotNetDetour或者Harmony直接hook底层的http请求函数呢?

wtujoxk 发表于 2024-8-16 10:55

本帖最后由 wtujoxk 于 2024-8-16 10:58 编辑

bester 发表于 2024-8-16 10:03
hosts 直接域名转向即可
aiohttp建立一个服务器,返回你要的东西


DotNetDetour比那个更好,hook FetchDataAsync GetResponseStream ReadToEndAsync哪一个都行

gksj 发表于 2024-8-16 11:37

直接HOOK系统自带的net程序集的GetResponseStream()方法返回数据,在HOOK里面判断一下是不是请求许可的,如果是就返回对应数据,如果不是就调用原始的方法代码.

万神fake 发表于 2024-8-16 12:46

都好复杂啊,还是用Reqable吧{:1_908:}

艾莉希雅 发表于 2024-8-16 15:41

上鸿蒙X试试

3yu3 发表于 2024-8-16 18:55

盯一下此帖子,看下大佬们有何高招,一起学学。

msmvc 发表于 2024-8-17 18:39

能看到源码就好办了
5楼6楼的方法不错
自己用vs写个webapi也行,返回啥都能控制,serverIp用修改hosts文件解决

msmvc 发表于 2024-8-17 18:42

楼主,这是什么程序,发出来,有大佬直接就给你搞定吧
页: [1]
查看完整版本: Net程序,如何hook或重定向服务器?