Created
February 26, 2025 09:39
-
-
Save bulk88/aeeeeed3131c427e97c78a260b0393ea to your computer and use it in GitHub Desktop.
ntdll.pl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #notes on MS usage of SSE instructions | |
| #x64 vcruntime140.dll memchr is SSE | |
| #x86 vcruntime140.dll memchr is no SSE, but DWORD at a time | |
| #x64 msvcr120.dll memchr is no SSE, U8 at a time BADDDD!!! | |
| #x64 msvcrt.dll Win7 memchr is no SSE, U8 at a time BADDDD!!! | |
| #x86 msvcrt.dll Win7 memchr is no SSE, but DWORD at a time | |
| #x64 ntdll.dll Win Built 1903 memchr is no SSE, U8 at a time BADDDD!!! | |
| #x64 ntdll.dll Win7 memchr is no SSE, U8 at a time BADDDD!!! | |
| #x86 ntdll.dll Win7 memchr is no SSE, but DWORD at a time | |
| #wcschr/strrchr/strchr also maybe are SSE, DWORD/time, or U8/time BADDDD!!! | |
| use Config; | |
| my $cc_out = qx'cl 2>&1'; | |
| my $is_64bit_build = !scalar($cc_out =~ /( for 80x86| for x86)/); | |
| my $is_msvc_compiler = index($cc_out, 'Microsoft (R) C/C++ Optimizing Compiler') != -1; | |
| die "fix GCC 64 det code if reused" if !$is_msvc_compiler; | |
| my $gen_ntdlldec_def = 'echo LIBRARY ntdll.dll> ntdlldec.def & echo EXPORTS>> ntdlldec.def' | |
| .' & echo NtReadFile@36 = NtReadFile>> ntdlldec.def' | |
| .' & echo NtCreateIoCompletion@16 = NtCreateIoCompletion>> ntdlldec.def' | |
| .' & echo NtRemoveIoCompletion@20 = NtRemoveIoCompletion>> ntdlldec.def' | |
| .' & echo NtSetInformationFile@20 = NtSetInformationFile>> ntdlldec.def' | |
| .' & echo NtSetIoCompletion@20 = NtSetIoCompletion>> ntdlldec.def' | |
| .' & echo NtClose@4 = NtClose>> ntdlldec.def' | |
| .' & echo _ultoa>> ntdlldec.def' | |
| .' & echo strrchr>> ntdlldec.def' | |
| .' & echo strchr>> ntdlldec.def' | |
| .' & echo strcmp>> ntdlldec.def' | |
| .' & echo wcsrchr>> ntdlldec.def' | |
| .' & echo strstr>> ntdlldec.def' | |
| .' & echo memcpy>> ntdlldec.def' | |
| .' & echo memmove>> ntdlldec.def' | |
| .' & echo memchr>> ntdlldec.def' | |
| .' & echo memcmp>> ntdlldec.def' | |
| .' & echo wcscmp>> ntdlldec.def' | |
| .' & echo wcschr>> ntdlldec.def' | |
| .' & echo swscanf_s>> ntdlldec.def' | |
| .' & echo memset>> ntdlldec.def'; | |
| if($is_msvc_compiler) { | |
| system 'echo LIBRARY ntdll.dll> ntdllundec.def & echo EXPORTS>> ntdllundec.def' | |
| .' & echo NtReadFile>> ntdllundec.def' | |
| .' & echo NtCreateIoCompletion>> ntdllundec.def' | |
| .' & echo NtRemoveIoCompletion>> ntdllundec.def' | |
| .' & echo NtSetInformationFile>> ntdllundec.def' | |
| .' & echo NtSetIoCompletion>> ntdllundec.def' | |
| .' & echo NtClose>> ntdllundec.def' | |
| .' & echo _ultoa>> ntdllundec.def' | |
| .' & echo strrchr>> ntdllundec.def' | |
| .' & echo strchr>> ntdllundec.def' | |
| .' & echo strcmp>> ntdllundec.def' | |
| .' & echo wcsrchr>> ntdllundec.def' | |
| .' & echo strstr>> ntdllundec.def' | |
| .' & echo memcpy>> ntdllundec.def' | |
| .' & echo memmove>> ntdllundec.def' | |
| .' & echo memchr>> ntdllundec.def' | |
| .' & echo memcmp>> ntdllundec.def' | |
| .' & echo wcscmp>> ntdllundec.def' | |
| .' & echo wcschr>> ntdllundec.def' | |
| .' & echo swscanf_s>> ntdllundec.def' | |
| .' & echo memset>> ntdllundec.def'; | |
| if($is_64bit_build) { | |
| system 'lib /out:ntdll.lib /def:ntdllundec.def /machine:x64'; | |
| } else { | |
| system $gen_ntdlldec_def; | |
| system 'lib /out:ntdllundec.lib /def:ntdllundec.def /machine:X86'; | |
| system 'lib /out:ntdll.lib /def:ntdlldec.def /machine:X86 ntdllundec.lib'; | |
| } | |
| } else { | |
| system $gen_ntdlldec_def; | |
| system 'dlltool -k -d ntdlldec.def -l ntdll.a'; | |
| } | |
| # __isascii | |
| # __iscsym | |
| # __iscsymf | |
| # __toascii | |
| # _alldiv | |
| # _allmul | |
| # _alloca_probe | |
| # _allrem | |
| # _allshl | |
| # _allshr | |
| # _atoi64 | |
| # _aulldiv | |
| # _aullrem | |
| # _aullshr | |
| # _chkstk | |
| # _fltused | |
| # _ftol | |
| # _i64toa | |
| # _i64tow | |
| # _itoa | |
| # _itow | |
| # _ltoa | |
| # _ltow | |
| # _memccpy | |
| # _memicmp | |
| # _snprintf | |
| # _snwprintf | |
| # _splitpath | |
| # _strcmpi | |
| # _stricmp | |
| # _strlwr | |
| # _strnicmp | |
| # _strupr | |
| # _tolower | |
| # _toupper | |
| # _ui64toa | |
| # _ultoa | |
| # _ultow | |
| # _vsnprintf | |
| # _wcsicmp | |
| # _wcslwr | |
| # _wcsnicmp | |
| # _wcsupr | |
| # _wtoi | |
| # _wtoi64 | |
| # _wtol | |
| # abs | |
| # atan | |
| # atoi | |
| # atol | |
| # ceil | |
| # cos | |
| # fabs | |
| # floor | |
| # isalnum | |
| # isalpha | |
| # iscntrl | |
| # isdigit | |
| # isgraph | |
| # islower | |
| # isprint | |
| # ispunct | |
| # isspace | |
| # isupper | |
| # iswalpha | |
| # iswctype | |
| # iswdigit | |
| # iswlower | |
| # iswspace | |
| # iswxdigit | |
| # isxdigit | |
| # labs | |
| # log | |
| # mbstowcs | |
| # memchr | |
| # memcmp | |
| # memcpy | |
| # memmove | |
| # memset | |
| # pow | |
| # qsort | |
| # sin | |
| # sprintf | |
| # sqrt | |
| # sscanf | |
| # strcat | |
| # strchr | |
| # strcmp | |
| # strcpy | |
| # strcspn | |
| # strlen | |
| # strncat | |
| # strncmp | |
| # strncpy | |
| # strpbrk | |
| # strrchr | |
| # strspn | |
| # strstr | |
| # strtol | |
| # strtoul | |
| # swprintf | |
| # tan | |
| # tolower | |
| # toupper | |
| # towlower | |
| # towupper | |
| # vsprintf | |
| # wcscat | |
| # wcschr | |
| # wcscmp | |
| # wcscpy | |
| # wcscspn | |
| # wcslen | |
| # wcsncat | |
| # wcsncmp | |
| # wcsncpy | |
| # wcspbrk | |
| # wcsrchr | |
| # wcsspn | |
| # wcsstr | |
| # wcstol | |
| # wcstombs | |
| # wcstoul |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment