Locale-Emulator-Core兼容Windows XP缺少的函数
HIllya51 opened this issue · 3 comments
HIllya51 commented
- LdrRegisterDllNotification
- LdrUnregisterDllNotification
- RtlKnownExceptionFilter
- NtInitializeNlsFiles
_vscwprintfCRT函数,不予受理
都是ntdll的函数
尝试编译 https://github.com/xupefei/Locale-Emulator-Core 到XP上运行时发现的
感谢
mingkuang-Chuyu commented
_vscwprintf属于CRT,它是无法通用处理的。只能自行特殊定制。毕竟我不能假设使用环境的CRT,这里处理了也会在MT的项目里产生符号冲突,这反而是更大的问题……
其他几个函数,我不想投入人力支持。主要是这些函数非常的非主流,我自己没有这样的需求,此外这些函数功能有些复杂投入时间也会不少……
建议你提供PR,我非常愿意采纳,你也可以帮助到更多的人。个人初步看LdrRegisterDllNotification这种除了hook,其他应该没有办法实现了……
HIllya51 commented
vscwprinf在ntdll里面确实是有这个函数的,不过我自行写个同名函数顶替掉就可以了。
我试过hook ldrloaddll去模拟实现结果不是很管用,不过也有可能是我实现的有问题。。。
我再试试如果能搞定的话会pr的。感谢。
mingkuang-Chuyu commented
-
第一个问题,我知道ntdll确实有vscwprinf,但是改变不了它是CRT函数的事实,只是说它的CRT是由ntdll提供的。但是很显然几乎没人使用ntdll的CRT,而且我这里做会污染其他的CRT。
-
第二个问题,我感觉应该去hook dll的入口点的调用的地方。ntdll里应该有个位置在调用 dll入口点,理论上应该没问题,但是不确定这个东西通用性,怎么做通用性更好。