<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wtujoxk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yuhijk2055</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yuhijk2055]]></copyright><item><title><![CDATA[解决 vs2022 无法安装Microsoft.Net.4.8.Fullredist.20h2]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/152550115</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/152550115</guid><author>yuhijk2055</author><pubDate>Sun, 05 Oct 2025 10:14:10 +0800</pubDate><description><![CDATA[3.用下载到的开发者包重命名安装文件替换dotNetFxLatest-x86-x64-AllOS-ENU.exe。原因：vs2022原来的安装包是4.8.1的，安装时会出错，使用4.8的包替换后可以正常安装了。2.找到下面这个路径，盘符默认是C，根据情况更改。1.下载.NET Framework 4.8。]]></description><category></category></item><item><title><![CDATA[VisualStudio vsix插件自动加载]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/144513441</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/144513441</guid><author>yuhijk2055</author><pubDate>Mon, 16 Dec 2024 17:13:46 +0800</pubDate><description><![CDATA[本文介绍如何在Visual Studio扩展中实现PackageRegistration，包括设置UseManagedResourcesOnly为true，允许背景加载，并针对C#、VB、F#项目提供自动装载，附官方文档链接。增加以下特性即可……]]></description><category></category></item><item><title><![CDATA[手搓Nt*或Zw*函数，避免被hook 支持x86_x64]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/143594695</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/143594695</guid><author>yuhijk2055</author><pubDate>Thu, 07 Nov 2024 15:10:22 +0800</pubDate><description><![CDATA[【代码】手搓Nt*或Zw*函数，避免被hook 支持x86_x64。]]></description><category></category></item><item><title><![CDATA[C++ 获得管理员权限 以管理员身份运行程序]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/141430786</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/141430786</guid><author>yuhijk2055</author><pubDate>Thu, 22 Aug 2024 16:08:35 +0800</pubDate><description><![CDATA[使用时调用GetAdmin，一个参数是程序运行时的参数，另一个是启动窗口的状态。这个函数会先判断程序是否有管理员权限，如果没有就尝试获取，获取成功就会返回1（表示又启动了一个有管理员权限的程序，并非当前程序获得了管理员权限，这个不可能做到），获取失败返回0，本来已有管理员权限则返回2。]]></description><category></category></item><item><title><![CDATA[C/C++ x86 x64 自写劫持补丁 方法]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140933730</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140933730</guid><author>yuhijk2055</author><pubDate>Mon, 05 Aug 2024 18:22:47 +0800</pubDate><description><![CDATA[替换内存中的字符 加强，支持加壳的程序不允许修改内存的情况下进行修改，硬件断点设置，类型，大小，指定线程和全线程下断。例子：硬件断点、特征码搜索、字符串转特征码搜索。十六进制字符串转换为Unicode字符串。Unicode字符串转换为十六进制字符串。十六进制字符串转换为askii字符串。ascii字符串转换为十六进制字符串。Debug版  vs2017编译。Release版  LLVM编译。需要下载静态库复制到工程目录下。特征码搜索 支持堆内存搜索。单字符串转为宽字符串。宽字符串转为单字符串。]]></description><category></category></item><item><title><![CDATA[[WinForm] 控件自适应窗口位置和大小]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140576320</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140576320</guid><author>yuhijk2055</author><pubDate>Sat, 20 Jul 2024 19:39:49 +0800</pubDate><description><![CDATA[【代码】[WinForm] 控件自适应窗口位置和大小。]]></description><category></category></item><item><title><![CDATA[Detours库Windows API Hook]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/134927616</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/134927616</guid><author>yuhijk2055</author><pubDate>Mon, 08 Jul 2024 16:54:41 +0800</pubDate><description><![CDATA[/如果成功，则返回NO_ERROR；否则，返回0。否则，返回错误代码。开始事务开始事务之后，程序可以调用或API HOOK目标函数，调用API恢复目标函数，或者调用API在事务更新中线程。在程序调用或API 提交事务之后，附加，分离和线程操作才会生效。或者，程序可以使用API 中止事务。_In_ HANDLE hThread //待处理事务更新线程的句柄//如果成功，则返回NO_ERROR；否则，返回0。否则，返回错误代码。由API 打开的事务提交时，使用指定的线程进行更新。]]></description><category></category></item><item><title><![CDATA[微信逆向：文本消息发送]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140154569</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140154569</guid><author>yuhijk2055</author><pubDate>Wed, 03 Jul 2024 15:57:23 +0800</pubDate><description><![CDATA[第二篇，分析文本消息发送call，并自己写代码调用实现发文本消息。]]></description><category></category></item><item><title><![CDATA[微信逆向：hook 强制输出调试信息]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140154520</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140154520</guid><author>yuhijk2055</author><pubDate>Wed, 03 Jul 2024 15:56:05 +0800</pubDate><description><![CDATA[所以这里的思路是，直接hook log_message函数，执行log_message函数，拿到返回值，复制走返回值的字符串，然后OutputDebugStringA打印调试信息。这里log_message函数的类型是void，无返回值，但实际返回的时候，rax的值是Src指针，其实是返回了东西的，这个Src指针指向局部变量，很快就会被覆盖。对于大型软件来说，由于其庞大复杂的功能，为了开发人员更好的定位 bug，会输出调试信息辅助调试，对于逆向来说，有调试信息也会有助于更好的定位功能点。]]></description><category></category></item><item><title><![CDATA[DLL劫持三:inline hook JMP实例 (UDP recvfrom)]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140146554</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140146554</guid><author>yuhijk2055</author><pubDate>Wed, 03 Jul 2024 10:56:09 +0800</pubDate><description><![CDATA[核心代码从网上找的，但原始函数调用一直有问，经过分析 整理并测试成功。以上代码在进程内调用有效，也支持进程内DLL方式，实际调用时使用代码。就可以了,DLL的话在DllMain中直接加载。]]></description><category></category></item><item><title><![CDATA[DLL劫持及调用数据跟踪二: 利用 MS 的Detours]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140146509</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140146509</guid><author>yuhijk2055</author><pubDate>Wed, 03 Jul 2024 10:55:05 +0800</pubDate><description><![CDATA[这个办法不用写代码，并且效果还不错，找到 PE-DIY Tools　工具，利用Add Import Functions(往PE文件中添加需要的输入函数)这个功能，增加Hook DLL的文件名和接口，注意为了能Hook DLL必须有一个导出的接口，本例使用了hook_usb这个函数。我这里想使用简单的办法，给要调用原DLL的文件增加Import表，也就是修改调用程序，让他加载原DLL的同时了加载新的Hook DLL.以上代码中新的DLL首先劫持旧的DLL的地址，然后做日志记录，最后调用旧的DLL返回结果。]]></description><category></category></item><item><title><![CDATA[DLL劫持及调用数据跟踪一: 冒名顶替]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/140146442</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/140146442</guid><author>yuhijk2055</author><pubDate>Wed, 03 Jul 2024 10:53:39 +0800</pubDate><description><![CDATA[参数类型的分析：通过猜测与IDA以及动态调试的方式，对大部分简单的数据类型很容易分析出来。本列中调用时由于__stdcall和__cdecl的不同，作了调整，测试成功以后，就可以在新的dll中调用原来的dll,以达到功能不变，只跟踪日志的目的，当然也可以修改代码的逻辑。如果需要分析某一个DLL的调用过程和出入口参数，可以通过文件替换的方式，利用新的DLL调用原来的DLL来实现。接口参数的跟踪与分析，这个通过IDA直接分析出来，入口参数的个数类似于arg_0,这样的形式。]]></description><category></category></item><item><title><![CDATA[C# winform 垂直进度条控件]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/139562887</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/139562887</guid><author>yuhijk2055</author><pubDate>Sun, 09 Jun 2024 16:02:50 +0800</pubDate><description><![CDATA[【代码】C# winform 垂直进度条控件。]]></description><category></category></item><item><title><![CDATA[在C#中如何优雅的获取所有程序集]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/139126996</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/139126996</guid><author>yuhijk2055</author><pubDate>Wed, 22 May 2024 18:47:20 +0800</pubDate><description><![CDATA[某一天我正在写一些反射代码，目的是遍历所有的程序集来查找一个特定的接口，然后在Startup中调用其上的一个方法。看起来这个功能似乎很简单，但是在现实中，却没有一个清晰的，简单的，适合各种情形的方式来获取一个程序集。这篇文章获取对某些人来说非常的枯燥，但是如果我能够帮助哪怕一个人来解决此类问题，那么这篇文章也是值得的。说真的，由于有多种获取程序集的方法，我将不会说”使用这个方法”。很有可能，对于你的特定的工程来说，也许只有一种方式可以工作，所以依赖其他的方式是毫无意义的。]]></description><category></category></item><item><title><![CDATA[OutputDebugString完美封装]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/138903847</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/138903847</guid><author>yuhijk2055</author><pubDate>Wed, 15 May 2024 12:32:28 +0800</pubDate><description><![CDATA[它最大的优点的是缓冲区可以自动增长，不用担心缓冲区不够，输出内容被截断。在实际使用中，一般都会将其封装，支持可变参数，方便调用。C/C++开发中经常需要输出调试信息，我们一般使用。输出到DebugView或者调试器输出窗口。支持可变参数（类似printf）。它只支持一个字符串参数。]]></description><category></category></item><item><title><![CDATA[C++搜索内存特征码 支持模糊匹配]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/137428107</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/137428107</guid><author>yuhijk2055</author><pubDate>Sat, 06 Apr 2024 14:28:04 +0800</pubDate><description><![CDATA[【代码】C++搜索内存特征码 支持模糊匹配。]]></description><category></category></item><item><title><![CDATA[C++ Windows 下读取DMI（硬件）信息的方法]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/134121438</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/134121438</guid><author>yuhijk2055</author><pubDate>Mon, 30 Oct 2023 15:57:24 +0800</pubDate><description><![CDATA[系统要求在： Windows Vista, Windows XP Professional x64 Edition以上。GetSystemFirmwareTable（）：点击这里->]]></description><category></category></item><item><title><![CDATA[C++ - 使用标准库实现事件和委托，信号和槽机制]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/133875988</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/133875988</guid><author>yuhijk2055</author><pubDate>Tue, 17 Oct 2023 09:07:30 +0800</pubDate><description><![CDATA[即可，该类同时也是模板类，支持定义任何返回类型和可变参数的事件类，并通过返回委托函数ID，对委托函数进行删除操作。自定义事件绑定的委托函数参数列表，可以接受多个不同类型的参数。该类默认是线程安全的，如果不想要线程安全，可以在包含头文件之前定义。进行了模板化，使用变参模板。在上述代码中我们使用。操作符添加委托函数。]]></description><category></category></item><item><title><![CDATA[使用C++实现DNS欺骗攻击]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/133763457</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/133763457</guid><author>yuhijk2055</author><pubDate>Wed, 11 Oct 2023 11:02:32 +0800</pubDate><description><![CDATA[其中，domain_name表示需要欺骗的域名，dns_server_ip表示实际DNS服务器的IP地址，fake_ip表示需要重定向到的IP地址。在DNS查询过程中，当客户端向DNS服务器请求解析某个域名时，DNS服务器会返回该域名对应的IP地址。DNS劫持是一种常见的网络攻击方式，通过篡改DNS响应数据，使得用户访问的网站被重定向到攻击者指定的恶意站点。我们使用C++编写一个简单的DNS欺骗程序，使得当客户端请求解析特定的域名时，我们可以将其重定向到指定的IP地址。使用C++实现DNS欺骗攻击。]]></description><category></category></item><item><title><![CDATA[RSA签名验证]]></title><link>https://blog.youkuaiyun.com/yuhijk2055/article/details/129042202</link><guid>https://blog.youkuaiyun.com/yuhijk2055/article/details/129042202</guid><author>yuhijk2055</author><pubDate>Wed, 15 Feb 2023 14:09:22 +0800</pubDate><description><![CDATA[【代码】RSA签名验证。]]></description><category></category></item></channel></rss>