• Stars
    star
    533
  • Rank 83,238 (Top 2 %)
  • Language
    C++
  • License
    MIT License
  • Created over 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fix DecodePointer, EncodePointer,RegDeleteKeyEx etc. APIs not found in Windows XP RTM.

YY-Thunks - 让兼容 Windows 更轻松

license downloads contributors release nuget Build&Test

关于 YY-Thunks

众所周知,从 Windows 的每次更新又会新增大量 API,这使得兼容不同版本的 Windows 需要花费很大精力。导致现在大量开源项目已经不再兼容一些早期的 Windows 版本,比如 Windows XP RTM。

难道就没有一种快速高效的方案解决无法定位程序输入点的问题吗?

YY-Thunks(鸭船),存在的目的就是抹平不同系统的差异,编译时单纯添加一个 obj 即可自动解决这些兼容性问题。让你兼容旧版本 Windows 更轻松!

[ 鸭船交流群 633710173 ]

原理

使用 LoadLibrary 以及 GetProcAddress 动态加载 API,不存在时做出补偿措施, 最大限度模拟原始 API 行为,让你的程序正常运行。

亮点

  • 更快!更安全!鸭船内建2级缓存以及按需加载机制,同时自动加密所有函数指针, 防止内存爆破攻击。最大程度减少不需要和不必要的 LoadLibrary 以及 GetProcAddress 调用以及潜在安全风险。
  • 轻松兼容 Windows XP,让你安心专注于业务逻辑。
  • 完全开源且广泛接受用户意见,希望大家能踊跃的创建 PR,为鸭船添砖加瓦。

使用方法

大家可以在以下方案中任选一种,但是我们优先推荐 NuGet 方案。

NuGet(推荐)

  1. 项目右键 “管理 NuGet 程序包”。
  2. NuGet搜索框中输入:YY-Thunks,搜索后点击安装。
  3. 项目右键 - 属性 - YY-Thunks 中,自行调整YY-Thunks等级,允许 Windows 2000, Windows XP 以及 Windows Vista(默认)。
  4. 重新编译代码

手工配置

  1. 下载 YY-Thunks-Binary, 然后解压到你的工程目录。
  2. 【链接器】-【输入】-【附加依赖项】,添加 objs\$(PlatformShortName)\YY_Thunks_for_WinXP.obj
  3. 重新编译代码。

温馨提示:如果需要兼容 Vista,请选择 objs\$(PlatformShortName)\YY_Thunks_for_Vista.obj

兼容性

支持的编译器

全平台ABI兼容。

  • 所有Visual Studio版本均支持 (比如:VC6.0、VS2008、VS2010、VS2015、VS2017、VS2019等等)。
  • 所有运行库模式均支持(比如:/MD/MT/MDd/MTd)。

SDK版本要求

至少需要SDK 6.0(VS2008默认附带)

温馨提示:VC6.0、VS2005用户请注意,由于这些编译器默认附带的SDK版本太低。请先将SDK升级到6.0或者更高版本,然后再使用YY-Thunks,否则将发生链接失败! 高版本的SDK不影响对老系统的兼容性,请坐和放宽,安心升级。

Thunks 清单

请参阅 ThunksList.md

更新日志

请参阅 Changelog.md

More Repositories

1

Dism-Multi-language

Dism++ Multi-language Support & BUG Report
HTML
14,965
star
2

VC-LTL

Shared to msvcrt.dll and optimize the C/C++ application file size.
C++
1,049
star
3

VC-LTL5

Shared to msvcrt.dll or ucrtbase.dll and optimize the C/C++ application file size.
C++
476
star
4

CPPHelper

C++基础辅助类库,比如异步进行-Thread,安全句柄-CHandle,资源守卫-Guard,XML解析-rapidxml,以及其他注册表、文件基础操作。用于更加高效、安全的进行C++开发。温馨提示:至少需要支持C++0x标准的编译器。
C++
459
star
5

MINT

Contains the definitions for the Windows Internal UserMode API from ntdll.dll, samlib.dll and winsta.dll.
C++
357
star
6

YY-Guard

Mitigating DLL preloading attacks.
C++
62
star
7

libkcrt

Provide an easy way to use C Run-time Library from Windows Kernel exported from ntdll.dll in your user-mode applications
C
42
star
8

DismPlusPlus_PluginDevDoc

Dism++插件文档
41
star
9

MSBuildCppCrossToolset

基于MSBuild的C++跨平台工具集,让Linux、MacOS等也支持编译vcxproj。
C#
32
star
10

DISMSDK

Contains the definitions for using Deployment Image Servicing and Management (DISM) from DismApi.dll and DismCore.dll
C
25
star
11

MegaUI

轻量、灵活、跨平台C++ UI库。
22
star
12

woflib

An open source library for operating the Windows Overlay Filter driver.
C
20
star
13

Chuyu-Team.github.io

[WIP] Chuyu Team official website based on GitHub Pages
12
star
14

vc-ltl-samples

Usage samples for the VC-LTL.
Batchfile
12
star
15

covscript-bridge

Covariant Script Experimental Support Plugin, the offical source code sample of Dism++ plugin development.
C++
9
star
16

M2MShim

The static library of Windows API shim for ntdll.dll.
6
star
17

YY.CRT.Handler.Thunks

自动将_invalid_parameter、_purecall转换到SEH异常而不是fastfail退出,方便收集dmp。
C++
6
star
18

LibMaker

初雨团队内部的lib制作工具,仅为内部需求服务,因此不接受任何功能性的PR!
C++
4
star
19

vc-ltl-docs

Documents for the VC-LTL
2
star