拡張カーネル v20p。XPでも動かないソフトが一部動く?
Windows 2000 Kernel32 改造計画【BM】
拡張カーネル v2.0pを公開しました。
今回の更新は、v2.0を冠していますが、実質はv2.1です。
変更点から
まず、mfc4x / msvcrt が NT5系/NT6系の好きな方をインストールできるようになりました。
NT6系を選択すると 以下の関数を追加で持った msvcrt.dll や mfc42/mfc40がインストールされます。
??0__non_rtti_object@@QAE@PBD@Z
??0bad_cast@@AAE@PBQBD@Z
??0bad_cast@@QAE@ABQBD@Z
??0bad_cast@@QAE@ABV0@@Z
??0bad_cast@@QAE@PBD@Z
??0bad_typeid@@QAE@ABV0@@Z
??0bad_typeid@@QAE@PBD@Z
??0exception@@QAE@ABQBD@Z
??0exception@@QAE@ABQBDH@Z
??0exception@@QAE@ABV0@@Z
??0exception@@QAE@XZ
??1__non_rtti_object@@UAE@XZ
??1bad_cast@@UAE@XZ
??1bad_typeid@@UAE@XZ
??1exception@@UAE@XZ
??1type_info@@UAE@XZ
??2@YAPAXI@Z
??2@YAPAXIHPBDH@Z
??3@YAXPAX@Z
??4__non_rtti_object@@QAEAAV0@ABV0@@Z
??4bad_cast@@QAEAAV0@ABV0@@Z
??4bad_typeid@@QAEAAV0@ABV0@@Z
??4exception@@QAEAAV0@ABV0@@Z
??8type_info@@QBEHABV0@@Z
??9type_info@@QBEHABV0@@Z
??_7__non_rtti_object@@6B@
??_7bad_cast@@6B@
??_7bad_typeid@@6B@
??_7exception@@6B@
??_E__non_rtti_object@@UAEPAXI@Z
??_Ebad_cast@@UAEPAXI@Z
??_Ebad_typeid@@UAEPAXI@Z
??_Eexception@@UAEPAXI@Z
??_Fbad_cast@@QAEXXZ
??_Fbad_typeid@@QAEXXZ
??_G__non_rtti_object@@UAEPAXI@Z
??_Gbad_cast@@UAEPAXI@Z
??_Gbad_typeid@@UAEPAXI@Z
??_Gexception@@UAEPAXI@Z
??_U@YAPAXI@Z
??_U@YAPAXIHPBDH@Z
??_V@YAXPAX@Z
?_query_new_handler@@YAP6AHI@ZXZ
?_query_new_mode@@YAHXZ
?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
?_set_new_mode@@YAHH@Z
?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
?before@type_info@@QBEHABV1@@Z
?name@type_info@@QBEPBDXZ
?raw_name@type_info@@QBEPBDXZ
?set_new_handler@@YAP6AXXZP6AXXZ@Z
?set_terminate@@YAP6AXXZP6AXXZ@Z
?set_unexpected@@YAP6AXXZP6AXXZ@Z
?terminate@@YAXXZ
?unexpected@@YAXXZ
?what@exception@@UBEPBDXZ
_CrtCheckMemory
_CrtDbgBreak
_CrtDbgReport
_CrtDbgReportV
_CrtDbgReportW
_CrtDbgReportWV
_CrtDoForAllClientObjects
_CrtDumpMemoryLeaks
_CrtIsMemoryBlock
_CrtIsValidHeapPointer
_CrtIsValidPointer
_CrtMemCheckpoint
_CrtMemDifference
_CrtMemDumpAllObjectsSince
_CrtMemDumpStatistics
_CrtReportBlockType
_CrtSetAllocHook
_CrtSetBreakAlloc
_CrtSetDbgBlockType
_CrtSetDbgFlag
_CrtSetDumpClient
_CrtSetReportFile
_CrtSetReportHook
_CrtSetReportHook2
_CrtSetReportMode
__CxxCallUnwindDelDtor
__CxxFrameHandler3
__daylight
__dstbias
__libm_sse2_acos
__libm_sse2_acosf
__libm_sse2_asin
__libm_sse2_asinf
__libm_sse2_atan
__libm_sse2_atan2
__libm_sse2_atanf
__libm_sse2_cos
__libm_sse2_cosf
__libm_sse2_exp
__libm_sse2_expf
__libm_sse2_log
__libm_sse2_log10
__libm_sse2_log10f
__libm_sse2_logf
__libm_sse2_pow
__libm_sse2_powf
__libm_sse2_sin
__libm_sse2_sinf
__libm_sse2_tan
__libm_sse2_tanf
__strncnt
__wcserror_s
__wcsncnt
_access_s
_aligned_free_dbg
_aligned_malloc_dbg
_aligned_offset_malloc_dbg
_aligned_offset_realloc_dbg
_aligned_realloc_dbg
_atodbl_l
_atof_l
_atoflt_l
_atoi64_l
_atoi_l
_atol_l
_atoldbl_l
_calloc_dbg
_cgets_s
_cgetws_s
_chsize_s
_chvalidator
_chvalidator_l
_controlfp_s
_cprintf_l
_cprintf_p
_cprintf_p_l
_cprintf_s
_cprintf_s_l
_crtAssertBusy
_crtBreakAlloc
_crtDbgFlag
_cscanf_l
_cscanf_s
_cscanf_s_l
_ctime32
_ctime32_s
_ctime64_s
_cwprintf_l
_cwprintf_p
_cwprintf_p_l
_cwprintf_s
_cwprintf_s_l
_cwscanf_l
_cwscanf_s
_cwscanf_s_l
_difftime32
_difftime64
_ecvt_s
_except_handler4_common
_expand_dbg
_fcvt_s
_fprintf_l
_fprintf_p
_fprintf_p_l
_fprintf_s_l
_free_dbg
_freea
_freea_s
_fscanf_l
_fscanf_s_l
_fseeki64
_ftime32
_ftime32_s
_ftime64_s
_ftol2
_ftol2_sse
_ftol2_sse_excpt
_fullpath_dbg
_futime32
_fwprintf_l
_fwprintf_p
_fwprintf_p_l
_fwprintf_s_l
_fwscanf_l
_fwscanf_s_l
_gcvt_s
_get_doserrno
_get_environ
_get_errno
_get_fileinfo
_get_fmode
_get_osplatform
_get_osver
_get_output_format
_get_pgmptr
_get_wenviron
_get_winmajor
_get_winminor
_get_winver
_get_wpgmptr
_gmtime32
_gmtime32_s
_gmtime64_s
_i64toa_s
_i64tow_s
_initterm_e
_invalid_parameter
_isalnum_l
_isalpha_l
_iscntrl_l
_isctype_l
_isdigit_l
_isgraph_l
_isleadbyte_l
_islower_l
_ismbbalnum_l
_ismbbalpha_l
_ismbbgraph_l
_ismbbkalnum_l
_ismbbkana_l
_ismbbkprint_l
_ismbbkpunct_l
_ismbblead_l
_ismbbprint_l
_ismbbpunct_l
_ismbbtrail_l
_ismbcalnum_l
_ismbcalpha_l
_ismbcdigit_l
_ismbcgraph_l
_ismbchira_l
_ismbckata_l
_ismbcl0_l
_ismbcl1_l
_ismbcl2_l
_ismbclegal_l
_ismbclower_l
_ismbcprint_l
_ismbcpunct_l
_ismbcspace_l
_ismbcsymbol_l
_ismbcupper_l
_ismbslead_l
_ismbstrail_l
_isprint_l
_isspace_l
_isupper_l
_iswalnum_l
_iswalpha_l
_iswcntrl_l
_iswctype_l
_iswdigit_l
_iswgraph_l
_iswlower_l
_iswprint_l
_iswpunct_l
_iswspace_l
_iswupper_l
_iswxdigit_l
_isxdigit_l
_itoa_s
_itow_s
_lfind_s
_local_unwind4
_localtime32
_localtime32_s
_localtime64_s
_lsearch_s
_ltoa_s
_ltow_s
_makepath_s
_malloc_dbg
_mbbtombc_l
_mbccpy_l
_mbccpy_s
_mbccpy_s_l
_mbcjistojms_l
_mbcjmstojis_l
_mbclen_l
_mbctohira_l
_mbctokata_l
_mbctolower_l
_mbctombb_l
_mbctoupper_l
_mblen_l
_mbsbtype_l
_mbscat_s
_mbscat_s_l
_mbschr_l
_mbscmp_l
_mbscoll_l
_mbscpy_s
_mbscpy_s_l
_mbscspn_l
_mbsdec_l
_mbsicmp_l
_mbsicoll_l
_mbsinc_l
_mbslen_l
_mbslwr_l
_mbslwr_s
_mbslwr_s_l
_mbsnbcat_l
_mbsnbcat_s
_mbsnbcat_s_l
_mbsnbcmp_l
_mbsnbcnt_l
_mbsnbcoll_l
_mbsnbcpy_l
_mbsnbcpy_s
_mbsnbcpy_s_l
_mbsnbicmp_l
_mbsnbicoll_l
_mbsnbset_l
_mbsnbset_s
_mbsnbset_s_l
_mbsncat_l
_mbsncat_s
_mbsncat_s_l
_mbsnccnt_l
_mbsncmp_l
_mbsncoll_l
_mbsncpy_l
_mbsncpy_s
_mbsncpy_s_l
_mbsnextc_l
_mbsnicmp_l
_mbsnicoll_l
_mbsninc_l
_mbsnlen
_mbsnlen_l
_mbsnset_l
_mbsnset_s
_mbsnset_s_l
_mbspbrk_l
_mbsrchr_l
_mbsrev_l
_mbsset_l
_mbsset_s
_mbsset_s_l
_mbsspn_l
_mbsspnp_l
_mbsstr_l
_mbstok_l
_mbstok_s
_mbstok_s_l
_mbstowcs_l
_mbstowcs_s_l
_mbstrlen_l
_mbstrnlen
_mbstrnlen_l
_mbsupr_l
_mbsupr_s
_mbsupr_s_l
_mbtowc_l
_memicmp_l
_mkgmtime32
_mktemp_s
_mktime32
_msize_debug
_printf_l
_printf_p
_printf_p_l
_printf_s_l
_putenv_s
_realloc_dbg
_scanf_l
_scanf_s_l
_scprintf_l
_scprintf_p_l
_scwprintf_l
_scwprintf_p_l
_searchenv_s
_seh_longjmp_unwind4
_set_controlfp
_set_doserrno
_set_errno
_set_fileinfo
_set_fmode
_set_output_format
_snprintf_c
_snprintf_c_l
_snprintf_l
_snprintf_s
_snprintf_s_l
_snscanf_l
_snscanf_s
_snscanf_s_l
_snwprintf_l
_snwprintf_s
_snwprintf_s_l
_snwscanf_l
_snwscanf_s
_snwscanf_s_l
_sopen_s
_splitpath_s
_sprintf_l
_sprintf_p_l
_sprintf_s_l
_sscanf_l
_sscanf_s_l
_strcoll_l
_strdate_s
_strdup_dbg
_strerror_s
_stricmp_l
_stricoll_l
_strlwr_l
_strlwr_s
_strlwr_s_l
_strncoll_l
_strnicmp_l
_strnicoll_l
_strnset_s
_strset_s
_strtime_s
_strtod_l
_strtoi64_l
_strtol_l
_strtoui64_l
_strtoul_l
_strupr_l
_strupr_s
_strupr_s_l
_strxfrm_l
_swprintf
_swprintf_c
_swprintf_c_l
_swprintf_p_l
_swprintf_s_l
_swscanf_l
_swscanf_s_l
_tempnam_dbg
_time32
_tolower_l
_toupper_l
_towlower_l
_towupper_l
_ui64toa_s
_ui64tow_s
_ultoa_s
_ultow_s
_umask_s
_utime32
_vcprintf
_vcprintf_l
_vcprintf_p
_vcprintf_p_l
_vcprintf_s
_vcprintf_s_l
_vcwprintf
_vcwprintf_l
_vcwprintf_p
_vcwprintf_p_l
_vcwprintf_s
_vcwprintf_s_l
_vfprintf_l
_vfprintf_p
_vfprintf_p_l
_vfprintf_s_l
_vfwprintf_l
_vfwprintf_p
_vfwprintf_p_l
_vfwprintf_s_l
_vprintf_l
_vprintf_p
_vprintf_p_l
_vprintf_s_l
_vscprintf_l
_vscprintf_p_l
_vscwprintf_l
_vscwprintf_p_l
_vsnprintf_c
_vsnprintf_c_l
_vsnprintf_l
_vsnprintf_s
_vsnprintf_s_l
_vsnwprintf_l
_vsnwprintf_s
_vsnwprintf_s_l
_vsprintf_l
_vsprintf_p
_vsprintf_p_l
_vsprintf_s_l
_vswprintf
_vswprintf_c
_vswprintf_c_l
_vswprintf_l
_vswprintf_p_l
_vswprintf_s_l
_vwprintf_l
_vwprintf_p
_vwprintf_p_l
_vwprintf_s_l
_waccess_s
_wasctime_s
_wassert
_wcscoll_l
_wcsdup_dbg
_wcserror_s
_wcsftime_l
_wcsicmp_l
_wcsicoll_l
_wcslwr_l
_wcslwr_s
_wcslwr_s_l
_wcsncoll_l
_wcsnicmp_l
_wcsnicoll_l
_wcsnset_s
_wcsset_s
_wcstoi64_l
_wcstol_l
_wcstombs_l
_wcstombs_s_l
_wcstoui64_l
_wcstoul_l
_wcsupr_l
_wcsupr_s
_wcsupr_s_l
_wcsxfrm_l
_wctime32
_wctime32_s
_wctime64_s
_wctomb_l
_wctomb_s_l
_wfopen_s
_wfreopen_s
_wfullpath_dbg
_wgetenv_s
_winput_s
_wmakepath_s
_wmktemp_s
_woutput_s
_wprintf_l
_wprintf_p
_wprintf_p_l
_wprintf_s_l
_wputenv_s
_wscanf_l
_wscanf_s_l
_wsearchenv_s
_wsopen_s
_wsplitpath_s
_wstrdate_s
_wstrtime_s
_wtempnam_dbg
_wtmpnam_s
_wtof_l
_wtoi64_l
_wtoi_l
_wtol_l
_wutime32
asctime_s
bsearch_s
btowc
clearerr_s
fopen_s
fprintf_s
freopen_s
fscanf_s
fwprintf_s
fwscanf_s
getenv_s
mbrlen
mbrtowc
mbsdup_dbg
mbsrtowcs
mbsrtowcs_s
mbstowcs_s
memcpy_s
memmove_s
printf_s
qsort_s
rand_s
scanf_s
sprintf_s
sscanf_s
strcat_s
strcpy_s
strerror_s
strncat_s
strncpy_s
strnlen
strtok_s
swprintf_s
swscanf_s
tmpfile_s
tmpnam_s
utime
vfprintf_s
vfwprintf_s
vprintf_s
vsnprintf
vsprintf_s
vswprintf_s
vwprintf_s
wcrtomb
wcrtomb_s
wcscat_s
wcscpy_s
wcsncat_s
wcsncpy_s
wcsnlen
wcsrtombs
wcsrtombs_s
wcstok_s
wcstombs_s
wctob
wctomb_s
wprintf_s
wscanf_s
NT5版をインストールしても、XPにもない以下の関数付きでインストールされます(NT6版にはもちろん含まれています)
_abs64
__CppXcptFilter
__CxxCallUnwindVecDtor
__CxxFrameHandler2
exception::exception(char const * const &,int)
___lc_collate_cp_func
_mkgmtime
_mkgmtime64
__pwctype_func
_rotl64
_rotr64
_wctype
ちなみに、XP版は 2000/Me版より以下の関数が増えています
_aligned_free
_aligned_malloc
_aligned_offset_malloc
_aligned_offset_realloc
_aligned_realloc
void bad_cast::`default constructor closure'(void)
void * bad_cast::`scalar deleting destructor'(unsigned int)
void * bad_cast::`vector deleting destructor'(unsigned int)
const bad_cast::`vftable'
bad_cast::bad_cast(char const * const *)
bad_cast::bad_cast(char const * const &)
bad_cast::bad_cast(class bad_cast const &)
bad_cast::bad_cast(char const *)
class bad_cast & bad_cast::operator=(class bad_cast const &)
bad_cast::~bad_cast(void)
void bad_typeid::`default constructor closure'(void)
void * bad_typeid::`scalar deleting destructor'(unsigned int)
void * bad_typeid::`vector deleting destructor'(unsigned int)
const bad_typeid::`vftable'
bad_typeid::bad_typeid(class bad_typeid const &)
bad_typeid::bad_typeid(char const *)
class bad_typeid & bad_typeid::operator=(class bad_typeid const &)
bad_typeid::~bad_typeid(void)
_cgetws
_cputws
__crtCompareStringW
__crtGetStringTypeW
__crtLCMapStringW
_cwprintf
_cwscanf
__CxxCallUnwindDtor
__CxxDetectRethrow
__CxxExceptionFilter
__CxxQueryExceptionSize
__CxxRegisterExceptionObject
__CxxUnregisterExceptionObject
__DestructExceptionObject
void * exception::`scalar deleting destructor'(unsigned int)
void * exception::`vector deleting destructor'(unsigned int)
const exception::`vftable'
exception::exception(char const * const &)
exception::exception(class exception const &)
exception::exception(void)
class exception & exception::operator=(class exception const &)
char const * exception::what(void)
exception::~exception(void)
_getwch
_getwche
__iob_func
___lc_codepage_func
___lc_handle_func
___mb_cur_max_func
__non_rtti_object::__non_rtti_object(class __non_rtti_object const &)
__non_rtti_object::__non_rtti_object(char const *)
void * __non_rtti_object::`scalar deleting destructor'(unsigned int)
void * __non_rtti_object::`vector deleting destructor'(unsigned int)
const __non_rtti_object::`vftable'
class __non_rtti_object & __non_rtti_object::operator=(class __non_rtti_object const &)
__non_rtti_object::~__non_rtti_object(void)
void operator delete(void *)
void operator delete[](void *)
void * operator new(unsigned int)
void * operator new[](unsigned int)
__pctype_func
_putwch
int (*_query_new_handler(void))(unsigned int)
int _query_new_mode(void)
_resetstkoflw
_scprintf
_scwprintf
int (*_set_new_handler(int (*)(unsigned int)))(unsigned int)
void (*set_new_handler(void (*)(void)))(void)
int _set_new_mode(int)
void (*_set_se_translator(void (*)(unsigned int,struct _EXCEPTION_POINTERS *)))(unsigned int,struct _EXCEPTION_POINTERS *)
_set_SSE2_enable
void (*set_terminate(void (*)(void)))(void)
void (*set_unexpected(void (*)(void)))(void)
___setlc_active_func
_snscanf
_snwscanf
_strtoi64
_strtoui64
void terminate(void)
int type_info::before(class type_info const &)
char const * type_info::name(void)
int type_info::operator!=(class type_info const &)
int type_info::operat
or==(class type_info const &)
char const * type_info::raw_name(void)
type_info::~type_info(void)
__uncaught_exception
void unexpected(void)
_ungetwch
___unguarded_readlc_active_add_func
_vscprintf
_vscwprintf
__wcserror
_wcserror
_wcstoi64
_wcstoui64
_wtof
次が、SxS.dllと licdll.dll の追加。
XP版 SxS 5.1.2600.5699 と licdll 5.1.2600.5977 を存在しない日本語版にローカライズして 改造したものが入っています
kernel32 に以下の関数を実装
SetThreadStackGuarantee
InitializeCriticalSectionEx
FlsFree
FlsGetValue
FlsSetValue
FlsAlloc
FindActCtxSectionGuid
上の赤文字の関数は XPにもない関数です
NTDLLに以下の関数を実装
NtLockProductActivationKeys
RtlPopFrame
RtlPushFrame
_lfind
_ui64tow
RtlNtStatusToDosErrorNoTeb
RtlSetLastWin32ErrorAndNtStatusFromNtStatus
RtlGetFrame
NtQueryDebugFilterState
RtlValidateUnicodeString
RtlFindCharInUnicodeString
RtlHashUnicodeString
試しに、 Windows XP用の GDIPLUS を XP互換モードにしてインストールしてみたら SxS フォルダにインストールされるようになったのですが、 肝心のアプリ起動時に SxS が機能しなくて、ロードされなかったという・ω・ しょんぼり
Comments