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指令,再加上程序经常更新,所以想用网络拦截的方法,有什么实现思路吗?网络拦截最好只影响目标程序 hosts 直接域名转向即可
aiohttp建立一个服务器,返回你要的东西
https://www.52pojie.cn/thread-1915517-1-1.html 本帖最后由 kingdjh 于 2024-8-16 10:57 编辑
用DotNetDetour或者Harmony直接hook底层的http请求函数呢? 本帖最后由 wtujoxk 于 2024-8-16 10:58 编辑
bester 发表于 2024-8-16 10:03
hosts 直接域名转向即可
aiohttp建立一个服务器,返回你要的东西
DotNetDetour比那个更好,hook FetchDataAsync GetResponseStream ReadToEndAsync哪一个都行 直接HOOK系统自带的net程序集的GetResponseStream()方法返回数据,在HOOK里面判断一下是不是请求许可的,如果是就返回对应数据,如果不是就调用原始的方法代码. 都好复杂啊,还是用Reqable吧{:1_908:} 上鸿蒙X试试 盯一下此帖子,看下大佬们有何高招,一起学学。 能看到源码就好办了
5楼6楼的方法不错
自己用vs写个webapi也行,返回啥都能控制,serverIp用修改hosts文件解决 楼主,这是什么程序,发出来,有大佬直接就给你搞定吧
页:
[1]