首页 > 其他分享 >HarmonyLib Patch

HarmonyLib Patch

时间:2023-06-07 10:34:07浏览次数:28  
标签:__ string Postfix System Patch static result HarmonyLib


using System;
using System.IO;
using System.Linq.Expressions;
using System.Net;
using System.Reflection;
using HarmonyLib;

public static class Pacth
{
	public static void MyPacth()
	{	foreach (string text in Directory.GetFiles("C:\\Users\\Administrator\\Desktop\\t5\\bin\\Debug\\net5.0\\ttt", "*.dll"))
			{
				AppDomain.CurrentDomain.Load(File.ReadAllBytes(text));
			}
		foreach (MethodInfo methodInfo in AccessTools.GetDeclaredMethods(Type.GetType("Netch.Utils.WebUtil")))
		{
		     var harmony = new Harmony(methodInfo.MetadataToken.ToString());
                var mPrefix = SymbolExtensions.GetMethodInfo(() => Prefix(null));
                harmony.Patch(methodInfo, new HarmonyMethod(mPrefix), new HarmonyMethod(Postfix));
		}
	}

	private static void Postfix2(ref object __result)
    {
		if (__result is string){
			System.IO.File.AppendAllText("vvv2.log","Postfix:"+(string)__result+"\r\n");
		}
    }
    private static void Postfix(ref object __instance, ref object __result)
    {
        if (__result.GetType()==)
		System.IO.File.AppendAllText("vvv2.log","Postfix result:"+__result.GetType().FullName+"\r\n");
    }
    
	private static bool Prefix(object[] __args)
	{
		if (__args.Length > 2)
		{
			if (__args[0] is HttpWebRequest)
			{
				File.AppendAllText("vvv2.log", "Prefix:"+((HttpWebRequest)__args[0]).RequestUri.ToString()+"\r\n");
			}
			if (__args[1] is string)
			{
				File.AppendAllText("vvv2.log","Prefix:"+ (string)__args[1]+"\r\n");
			}
		}
		return true;
	}
}
[HarmonyPatch(typeof(YourClassName))] // 替换 "YourClassName" 为包含 DownloadStringAsyncPost 方法的类名
[HarmonyPatch("DownloadStringAsyncPost")]
public class DownloadStringAsyncPostPatch
{
    [HarmonyPostfix] // 使用 HarmonyPostfix 注解来在方法执行后执行你的代码
    public static void Postfix(string __result) // 使用 Postfix 方法来接收返回值
    {
        Console.WriteLine("返回数据:" + __result);
    }

    [HarmonyPostfix] // 使用 HarmonyPostfix 注解来在方法执行后执行你的代码
    public static void Postfix(HttpWebRequest req, string json, string encoding) // 使用 Postfix 方法来接收参数
    {
        Console.WriteLine("请求参数 req:" + req);
        Console.WriteLine("请求参数 json:" + json);
        Console.WriteLine("请求参数 encoding:" + encoding);
    }
}

标签:__,string,Postfix,System,Patch,static,result,HarmonyLib
From: https://www.cnblogs.com/yzpopulation/p/17462617.html

相关文章

  • Spring 学习笔记(8)—— SpringMVC 简介、DispatcherServlet 配置
    一、SpirngMVC简介SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,无需实现任何接口。在数据绑定、视图解析、本地化处理及静态资源处理上都有不俗的表现。SpringMVC处理请求的整体过程:二、配置DispatcherServlet1配置DispatcherServlet,截获特定的URL请求显式......
  • git打patch
    原文地址:https://www.jb51.net/article/191549.htm平时我们在使用git管理项目的时候,会遇到这样一种情况,那就是客户使用git生成patch给到我们,那我们就需要把客户给到patch打入到我们的project,基于这样一个场景,我把git如何生成patch和如何打入patch做总结生成patch的方法......
  • 在不受支持的 Mac 上安装 macOS Ventura、Monterey、Big Sur (OpenCore Legacy Patche
    在不受支持的Mac上安装macOSVentura、Monterey、BigSur(OpenCoreLegacyPatcher)请访问原文链接:https://sysin.org/blog/install-macos-13-on-unsupported-mac/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.org距离WWDC2023只有几天的时间了,期待macOS14......
  • Gitlab 本地部署全过程、Gitlab Pages、企业版 PATCH
    Gitlab官网目前提供了EnterpriseEdition和CommunityEdition两种版本,分别对应linux系统的软件包gitlab-ee和gitlab-ce。看名字就知道,gitlab-ee是收费的功能更加丰富的版本。此外,企业版根据用户付费情况的不同,又分为了Starter、Premiun、Ultimate三种PLAN,可以在htt......
  • Spring MVC官方文档学习笔记(二)之DispatcherServlet
    1.DispatcherServlet入门(1)SpringMVC是以前端控制器模式(即围绕着一个中央的Servelt,DispatcherServlet)进行设计的,这个DispatcherServlet为请求的处理提供了一个共用的算法,即它都会将实际的处理工作委托给那些可配置的组件进行执行,说白了,DispatcherServlet的作用就是统......
  • throw,throw ex 与 ExceptionDispatchInfo.Throw(ex)
    有以下代码usingSystem.Diagnostics;usingSystem.Runtime.ExceptionServices;usingMicrosoft.AspNetCore.Mvc;usingstaticSystem.Net.Mime.MediaTypeNames;namespaceWebSignalR.Controllers{[ApiController][Route("[controller]")]publi......
  • Cisco Identity Services Engine (ISE) 3.2 Patch2 发布 - 思科身份服务引擎
    CiscoIdentityServicesEngine(ISE)3.2Patch2发布-思科身份服务引擎请访问原文链接:https://sysin.org/blog/cisco-ise-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org工作场所零信任安全的核心所在任何零信任策略的一个关键组成部分是确保所有人和所有设......
  • IDA keypatch IDApatcher 安装问题
    将“idapatcher.py”置于plugins目录下在IDA/python38目录下cmdpython-mpipinstall--upgradepippython-mpipinstallkeystone-engine启动IDApro容易踩坑nomodulenamedkeystonepython-mpipinstallkeystone-engineIDA_Pro_v7.5_Portable\plugins\keypatch......
  • Linux 生成/查看/测试/应用 patch
    Linux生成/查看/测试/应用patch修改了开源代码后可以将差异保存为patch这样,随时可以打补丁。下面以u-boot开源代码为例,说明patch的常用方法。设开源软件包u-boot.zip解压为u-boot,而u-boot-changed是用户修改后代码。生成patchdiff-Naurp./u-boot./u-boot-ch......
  • servJump extends HttpServlet //request.getRequestDispatcher //response.sendRed
    packagecom.test;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.HashMap;importjava.util.Map;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;impo......