mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
243 lines
5.0 KiB
243 lines
5.0 KiB
/*
|
|
** takernel.s
|
|
**
|
|
** Copyright(C) 1994 Microsoft Corporation.
|
|
** All Rights Reserved.
|
|
**
|
|
** HISTORY:
|
|
** Created: 01/27/94 - MarkRi
|
|
**
|
|
*/
|
|
|
|
#include "ksmips.h"
|
|
|
|
|
|
.data
|
|
|
|
Module:
|
|
.space 4
|
|
|
|
ModName:
|
|
.ascii "KERNEL32\0"
|
|
|
|
|
|
.text
|
|
.set noreorder ;
|
|
|
|
.extern LogData ;
|
|
.extern GetModuleHandleA ;
|
|
.extern GetProcAddress ;
|
|
|
|
.globl LogNote ;
|
|
.ent LogNote ;
|
|
LogNote:
|
|
// On Entry:
|
|
// t0 -> Note string
|
|
// t1 -> API Name
|
|
// t2 -> API Address
|
|
|
|
subu sp, 8 * 4
|
|
|
|
// Save arg regs and RA and t0
|
|
|
|
// store args 'back'
|
|
sw a3, 44(sp)
|
|
sw a2, 40(sp)
|
|
sw a1, 36(sp)
|
|
sw a0, 32(sp)
|
|
|
|
sw ra, 28(sp)
|
|
sw t0, 24(sp)
|
|
sw t1, 20(sp)
|
|
sw t2, 16(sp)
|
|
|
|
lw t2, 0(t2) // Do we already have the API addr?
|
|
nop
|
|
bne t2, zero, Found // Yes, go use it.
|
|
|
|
lw t3, Module // Do we have our module handle?
|
|
nop
|
|
bne t3, zero, Search // Yes, go use it for search
|
|
|
|
// Get module handle
|
|
la a0, ModName
|
|
jal GetModuleHandleA // Get our module handle
|
|
nop
|
|
|
|
sw v0, Module
|
|
|
|
// restore base ptrs
|
|
lw t0, 24(sp)
|
|
lw t1, 20(sp)
|
|
|
|
Search:
|
|
// Get address of API
|
|
lw a0, Module
|
|
or a1, zero, t1
|
|
jal GetProcAddress
|
|
nop
|
|
|
|
// save
|
|
lw t2, 16(sp)
|
|
sw v0, 0(t2) // Save the proc's address
|
|
|
|
lw t0, 24(sp)
|
|
Found:
|
|
// t0 -> Note string
|
|
|
|
or a0, zero, t0
|
|
jal LogData
|
|
nop
|
|
|
|
// restore arg regs
|
|
lw a0, 32(sp)
|
|
lw a1, 36(sp)
|
|
lw a2, 40(sp)
|
|
lw a3, 44(sp)
|
|
|
|
lw t2, 16(sp) // Get back address
|
|
nop
|
|
lw t1, 0(t2)
|
|
|
|
lw ra, 28(sp) // restore RA
|
|
|
|
addu sp, 8 * 4 // restore SP
|
|
|
|
j t1 // do it
|
|
nop
|
|
|
|
.end LogNote
|
|
|
|
#define ZJMP(argName) \
|
|
.data ; \
|
|
s##argName: ; \
|
|
.ascii "NOTE:" #argName " \0" ; \
|
|
n##argName: ;\
|
|
.ascii #argName "\0" ; \
|
|
.align 2 ;\
|
|
a##argName: ; \
|
|
.space 4 ; \
|
|
.text ; \
|
|
.globl z##argName ; \
|
|
.ent z##argName ; \
|
|
z##argName: ; \
|
|
la t0, s##argName ; \
|
|
la t1, n##argName ; \
|
|
la t2, a##argName ; \
|
|
j LogNote ; \
|
|
nop ; \
|
|
.end z##argName ;
|
|
|
|
|
|
|
|
ZJMP(AddConsoleAliasA)
|
|
ZJMP(AddConsoleAliasW)
|
|
ZJMP(BaseAttachCompleteThunk)
|
|
ZJMP(BasepDebugDump)
|
|
ZJMP(CloseConsoleHandle)
|
|
ZJMP(CloseProfileUserMapping)
|
|
ZJMP(CmdBatNotification)
|
|
ZJMP(ConsoleMenuControl)
|
|
ZJMP(ConsoleSubst)
|
|
ZJMP(CreateVirtualBuffer)
|
|
ZJMP(DuplicateConsoleHandle)
|
|
ZJMP(ExitVDM)
|
|
ZJMP(ExpungeConsoleCommandHistoryA)
|
|
ZJMP(ExpungeConsoleCommandHistoryW)
|
|
ZJMP(ExtendVirtualBuffer)
|
|
ZJMP(FreeVirtualBuffer)
|
|
ZJMP(GetBinaryType)
|
|
ZJMP(GetConsoleAliasA)
|
|
ZJMP(GetConsoleAliasExesA)
|
|
ZJMP(GetConsoleAliasExesLengthA)
|
|
ZJMP(GetConsoleAliasExesLengthW)
|
|
ZJMP(GetConsoleAliasExesW)
|
|
ZJMP(GetConsoleAliasW)
|
|
ZJMP(GetConsoleAliasesA)
|
|
ZJMP(GetConsoleAliasesLengthA)
|
|
ZJMP(GetConsoleAliasesLengthW)
|
|
ZJMP(GetConsoleAliasesW)
|
|
ZJMP(GetConsoleCommandHistoryA)
|
|
ZJMP(GetConsoleCommandHistoryLengthA)
|
|
ZJMP(GetConsoleCommandHistoryLengthW)
|
|
ZJMP(GetConsoleCommandHistoryW)
|
|
ZJMP(GetConsoleDisplayMode)
|
|
ZJMP(GetConsoleFontInfo)
|
|
ZJMP(GetConsoleFontSize)
|
|
ZJMP(GetConsoleHardwareState)
|
|
ZJMP(GetConsoleInputWaitHandle)
|
|
ZJMP(GetCurrentConsoleFont)
|
|
ZJMP(GetNextVDMCommand)
|
|
ZJMP(GetNumberOfConsoleFonts)
|
|
ZJMP(GetVDMCurrentDirectories)
|
|
ZJMP(InvalidateConsoleDIBits)
|
|
ZJMP(OpenConsoleW)
|
|
ZJMP(OpenProfileUserMapping)
|
|
ZJMP(QueryWin31IniFilesMappedToRegistry)
|
|
ZJMP(RegisterConsoleVDM)
|
|
ZJMP(RegisterWaitForInputIdle)
|
|
ZJMP(RtlUnwind)
|
|
ZJMP(SetConsoleCommandHistoryMode)
|
|
ZJMP(SetConsoleCursor)
|
|
ZJMP(SetConsoleDisplayMode)
|
|
ZJMP(SetConsoleFont)
|
|
ZJMP(SetConsoleHardwareState)
|
|
ZJMP(SetConsoleKeyShortcuts)
|
|
ZJMP(SetConsoleMaximumWindowSize)
|
|
ZJMP(SetConsoleMenuClose)
|
|
ZJMP(SetConsoleNumberOfCommandsA)
|
|
ZJMP(SetConsoleNumberOfCommandsW)
|
|
ZJMP(SetConsolePalette)
|
|
ZJMP(SetLastConsoleEventActive)
|
|
ZJMP(SetVDMCurrentDirectories)
|
|
ZJMP(ShowConsoleCursor)
|
|
ZJMP(TrimVirtualBuffer)
|
|
ZJMP(VDMConsoleOperation)
|
|
ZJMP(VDMOperationStarted)
|
|
ZJMP(ValidateLCID)
|
|
ZJMP(VerifyConsoleIoHandle)
|
|
ZJMP(VirtualBufferExceptionHandler)
|
|
ZJMP(WriteConsoleInputVDMA)
|
|
ZJMP(WriteConsoleInputVDMW)
|
|
ZJMP(lstrcat)
|
|
ZJMP(lstrcmp)
|
|
ZJMP(lstrcmpi)
|
|
ZJMP(lstrcpy)
|
|
ZJMP(lstrlen)
|
|
ZJMP(ConvertDefaultLocale)
|
|
ZJMP(DisableThreadLibraryCalls)
|
|
ZJMP(EnumCalendarInfoA)
|
|
ZJMP(EnumCalendarInfoW)
|
|
ZJMP(EnumDateFormatsA)
|
|
ZJMP(EnumDateFormatsW)
|
|
ZJMP(EnumSystemCodePagesA)
|
|
ZJMP(EnumSystemCodePagesW)
|
|
ZJMP(EnumSystemLocalesA)
|
|
ZJMP(EnumSystemLocalesW)
|
|
ZJMP(EnumTimeFormatsA)
|
|
ZJMP(EnumTimeFormatsW)
|
|
ZJMP(FoldStringA)
|
|
ZJMP(FreeLibraryAndExitThread)
|
|
ZJMP(GetBinaryTypeA)
|
|
ZJMP(GetBinaryTypeW)
|
|
ZJMP(GetCompressedFileSizeA)
|
|
ZJMP(GetCompressedFileSizeW)
|
|
ZJMP(GetCurrencyFormatA)
|
|
ZJMP(GetCurrencyFormatW)
|
|
ZJMP(GetEnvironmentStrings)
|
|
ZJMP(GetNumberFormatA)
|
|
ZJMP(GetNumberFormatW)
|
|
ZJMP(GetProcessAffinityMask)
|
|
ZJMP(GetShortPathNameA)
|
|
ZJMP(GetShortPathNameW)
|
|
ZJMP(GetStringTypeExA)
|
|
ZJMP(GetStringTypeExW)
|
|
ZJMP(GetSystemTimeAdjustment)
|
|
ZJMP(IsValidLocale)
|
|
ZJMP(RegisterWowExec)
|
|
ZJMP(SetLocaleInfoA)
|
|
ZJMP(SetLocaleInfoW)
|
|
ZJMP(SetSystemTimeAdjustment)
|
|
ZJMP(SystemTimeToTzSpecificLocalTime)
|
|
|
|
.set reorder
|