xpext
xpext copied to clipboard
Windows XP API extension
xpext - Windows XP API补全计划
已完成:
nk_criticalsection.cpp
InitializeCriticalSectionEx(仅接口)
nt_srwlock.cpp
InitializeSRWLock
AcquireSRWLockExclusive
AcquireSRWLockShared
ReleaseSRWLockExclusive
ReleaseSRWLockShared
TryAcquireSRWLockExclusive
TryAcquireSRWLockShared
nk_conditionvariable.cpp
InitializeConditionVariable
SleepConditionVariableCS
SleepConditionVariableSRW
WakeConditionVariable
WakeAllConditionVariable
nk_runonce.cpp
InitOnceInitialize
InitOnceBeginInitialize
InitOnceComplete
InitOnceExecuteOnce
k32_processthread.cpp
GetThreadId
GetProcessId
GetProcessIdOfThread
SetThreadErrorMode(仅接口)
GetThreadErrorMode(仅接口)
QueryFullProcessImageNameA
QueryFullProcessImageNameW
InitializeProcThreadAttributeList(仅接口)
UpdateProcThreadAttribute(仅接口)
DeleteProcThreadAttributeList(仅接口)
k32_processor.cpp
GetCurrentProcessorNumber
GetCurrentProcessorNumberEx
GetActiveProcessorGroupCount
GetMaximumProcessorGroupCount
GetActiveProcessorCount
GetMaximumProcessorCount
k32_miscellaneous.cpp
GetTickCount64
RaiseFailFastException
k32_file.cpp
GetFileInformationByHandleEx
SetFileInformationByHandle
GetFinalPathNameByHandleA
GetFinalPathNameByHandleW
CreateSymbolicLinkA
CreateSymbolicLinkW
nk_fiber.cpp
ConvertThreadToFiberEx
IsThreadAFiber
ConvertThreadToFiber(增强)
CreateFiberEx(增强)
CreateFiber(增强)
DeleteFiber(增强)
ConvertFiberToThread(增强)
SwitchToFiber(增强)
FlsAlloc
FlsFree
FlsGetValue
FlsSetValue
近期计划:
GetSystemInfo
GetVersion
GetVersionEx
VerifyVersionInfoA/W
GetProductInfo
制作PE编辑工具
分析中:
GetErrorMode
ws2_32.inet_ntop
ws2_32.inet_pton
ws2_32.WSAPoll
CreateEventExA/W
CreateMutexExA/W
CreateSemaphoreExA/W
PathCchCanonicalizeEx(Win8+)
PathCchCombineEx(Win8+)
advapi32.RegGetValueA/W
advapi32.RegSetKeyValueA/W
advapi32.RegDeleteKeyValueA/W
mpr.WNetRestoreConnectionA
运行时TLS动态分配槽的问题
Wow64DisableWow64FsRedirection
Wow64EnableWow64FsRedirection
Wow64RevertWow64FsRedirection
AddDllDirectory
RemoveDllDirectory
SetDefaultDllDirectories
LoadLibraryEx的LOAD_LIBRARY_SEARCH_USER_DIRS标记
ReOpenFile
CreateFile2(Win8+)
user32.SetProcessDPIAware
CompareStringEx
PsSetCreateProcessNotifyRoutineEx
shell32.SHGetKnownFolderPath
暂时无法实现:
QueryThreadCycleTime
QueryProcessCycleTime
CreateProcess应用ProcThreadAttribute
ThreadPool相关API
NtXXXKeyedEvent允许句柄传入NULL
IoConnectInterruptEx和MSIX
CreateRemoteThreadEx
Core Audio系列API
NTFS的transacted
NtQueryObject用在某些对象上会卡死
完成端口的CloseHandle可以直接唤醒线程并返回-1
CancelIoEx
GetOverlappedResultEx
normaliz.dll
SetLastError断点
更新说明:
ver4 2021.06.12
增加fiber相关API,以及一些其他API
内核模块尝试新功能
在study文件夹里给出一些代码中难以描述的信息
将废弃的代码打包成zip文件
ver3 2021.05.11
增加一些文件相关的API,修复ver2中BaseSetLastNTError的严重bug
由于Github展示代码的算法不完善,从ver3开始代码文件全部使用BOM+UTF8编码
由于Github目录操作设计太差,从ver3开始新版和旧版都放在根目录下,以最新版本号为准
ver2 2021.05.02
添加内核支持模块xpextk
增加RunOnce系列API,以及一些其他API
项目名由ntext改为xpext,调整代码结构,重新编排文件名
ver1 2021.03.21
确定了基本框架和实现方向
增加Condition Variable系列API,以及一些其他API
调整SRW Lock,使之与Condition Variable一致
ver0 2020.05.29
初版,SRW Lock系列API
其它说明:
代码是开源出来参考的,希望能得到反馈,更正错误,你编译了也没用
将来会通过私人工具修改PE文件,重定向API调用,在release里提供
某些功能需要内核驱动辅助实现,请使用reg文件将驱动设为开机启动
有什么用?
The procedure entry point XXX could not be located in the dynamic link library XXX.dll
相关项目:
SharedReadWriteLock
YY-Thunks - 让兼容 Windows 更轻松
PHP 7 and PHP 5.6 for Windows XP/2003
win7lib
wine
ReactOS
NTOSKRNL Emu_Extender
CreateProcessInternal
ExtendedXP-Core-Api-implementation