Chuyu-Team/YY-Thunks

Locale-Emulator-Core兼容Windows XP缺少的函数

HIllya51 opened this issue · 3 comments

  • LdrRegisterDllNotification
  • LdrUnregisterDllNotification
  • RtlKnownExceptionFilter
  • NtInitializeNlsFiles
  • _vscwprintf CRT函数,不予受理

都是ntdll的函数
尝试编译 https://github.com/xupefei/Locale-Emulator-Core 到XP上运行时发现的
感谢

_vscwprintf属于CRT,它是无法通用处理的。只能自行特殊定制。毕竟我不能假设使用环境的CRT,这里处理了也会在MT的项目里产生符号冲突,这反而是更大的问题……

其他几个函数,我不想投入人力支持。主要是这些函数非常的非主流,我自己没有这样的需求,此外这些函数功能有些复杂投入时间也会不少……

建议你提供PR,我非常愿意采纳,你也可以帮助到更多的人。个人初步看LdrRegisterDllNotification这种除了hook,其他应该没有办法实现了……

vscwprinf在ntdll里面确实是有这个函数的,不过我自行写个同名函数顶替掉就可以了。
我试过hook ldrloaddll去模拟实现结果不是很管用,不过也有可能是我实现的有问题。。。
我再试试如果能搞定的话会pr的。感谢。

  • 第一个问题,我知道ntdll确实有vscwprinf,但是改变不了它是CRT函数的事实,只是说它的CRT是由ntdll提供的。但是很显然几乎没人使用ntdll的CRT,而且我这里做会污染其他的CRT。

  • 第二个问题,我感觉应该去hook dll的入口点的调用的地方。ntdll里应该有个位置在调用 dll入口点,理论上应该没问题,但是不确定这个东西通用性,怎么做通用性更好。