Skip to content

Commit 82cf68f

Browse files
authored
Merge 72de1d4 into 146c27e
2 parents 146c27e + 72de1d4 commit 82cf68f

32 files changed

+644
-48
lines changed

‎.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@
2020
# Build results
2121
[Dd]ebug/
2222
[Dd]ebug64/
23+
[Dd]ebugARM64/
2324
[Dd]ebugPublic/
2425
[Rr]elease/
2526
[Rr]elease64/
27+
[Rr]eleaseARM64/
2628
[Rr]eleases/
2729
x64/
2830
x86/
31+
ARM64/
2932
bld/
3033
[Bb]in/
3134
[Oo]bj/

‎Src/ClassicExplorer/ClassicExplorer.vcxproj

+16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|ARM64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>ARM64</Platform>
7+
</ProjectConfiguration>
48
<ProjectConfiguration Include="Debug|Win32">
59
<Configuration>Debug</Configuration>
610
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
913
<Configuration>Debug</Configuration>
1014
<Platform>x64</Platform>
1115
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|ARM64">
17+
<Configuration>Release</Configuration>
18+
<Platform>ARM64</Platform>
19+
</ProjectConfiguration>
1220
<ProjectConfiguration Include="Release|Win32">
1321
<Configuration>Release</Configuration>
1422
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
1725
<Configuration>Release</Configuration>
1826
<Platform>x64</Platform>
1927
</ProjectConfiguration>
28+
<ProjectConfiguration Include="Setup|ARM64">
29+
<Configuration>Setup</Configuration>
30+
<Platform>ARM64</Platform>
31+
</ProjectConfiguration>
2032
<ProjectConfiguration Include="Setup|Win32">
2133
<Configuration>Setup</Configuration>
2234
<Platform>Win32</Platform>
@@ -53,6 +65,9 @@
5365
<PropertyGroup Condition="'$(Platform)'=='x64'">
5466
<TargetName>$(ProjectName)64</TargetName>
5567
</PropertyGroup>
68+
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
69+
<TargetName>$(ProjectName)A64</TargetName>
70+
</PropertyGroup>
5671
<PropertyGroup>
5772
<IgnoreImportLibrary>true</IgnoreImportLibrary>
5873
</PropertyGroup>
@@ -98,6 +113,7 @@
98113
<None Include="ClassicExplorer.rgs" />
99114
<None Include="ClassicExplorer32.def" />
100115
<None Include="ClassicExplorer64.def" />
116+
<None Include="ClassicExplorerA64.def" />
101117
<None Include="ExplorerBand.rgs" />
102118
<None Include="ExplorerBHO.rgs" />
103119
<None Include="ExplorerL10N.ini">

‎Src/ClassicExplorer/ClassicExplorer.vcxproj.filters

+4-1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@
8080
<None Include="ShareOverlay.rgs">
8181
<Filter>Resource Files</Filter>
8282
</None>
83+
<None Include="ClassicExplorerA64.def">
84+
<Filter>Source Files</Filter>
85+
</None>
8386
</ItemGroup>
8487
<ItemGroup>
8588
<Text Include="..\Localization\English\ClassicExplorerADMX.txt">
@@ -146,4 +149,4 @@
146149
<Filter>Resource Files</Filter>
147150
</Image>
148151
</ItemGroup>
149-
</Project>
152+
</Project>
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
; ClassicExplorer.def : Declares the module parameters.
2+
3+
LIBRARY "ClassicExplorerA64.DLL"
4+
5+
EXPORTS
6+
DllCanUnloadNow PRIVATE
7+
DllGetClassObject PRIVATE
8+
DllRegisterServer PRIVATE
9+
DllUnregisterServer PRIVATE
10+
DllInstall PRIVATE
11+
ShowExplorerSettings
12+
DllImportSettingsXml
13+
DllExportSettingsXml

‎Src/ClassicIE/ClassicIE.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,10 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
189189
}
190190
}
191191

192-
#ifdef _WIN64
192+
#if defined(_M_AMD64)
193193
HMODULE hHookModule=GetModuleHandle(L"ClassicIEDLL_64.dll");
194+
#elif defined(_M_ARM64)
195+
HMODULE hHookModule=GetModuleHandle(L"ClassicIEDLL_A64.dll");
194196
#else
195197
HMODULE hHookModule=GetModuleHandle(L"ClassicIEDLL_32.dll");
196198
#endif

‎Src/ClassicIE/ClassicIE.vcxproj

+15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|ARM64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>ARM64</Platform>
7+
</ProjectConfiguration>
48
<ProjectConfiguration Include="Debug|Win32">
59
<Configuration>Debug</Configuration>
610
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
913
<Configuration>Debug</Configuration>
1014
<Platform>x64</Platform>
1115
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|ARM64">
17+
<Configuration>Release</Configuration>
18+
<Platform>ARM64</Platform>
19+
</ProjectConfiguration>
1220
<ProjectConfiguration Include="Release|Win32">
1321
<Configuration>Release</Configuration>
1422
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
1725
<Configuration>Release</Configuration>
1826
<Platform>x64</Platform>
1927
</ProjectConfiguration>
28+
<ProjectConfiguration Include="Setup|ARM64">
29+
<Configuration>Setup</Configuration>
30+
<Platform>ARM64</Platform>
31+
</ProjectConfiguration>
2032
<ProjectConfiguration Include="Setup|Win32">
2133
<Configuration>Setup</Configuration>
2234
<Platform>Win32</Platform>
@@ -53,6 +65,9 @@
5365
<PropertyGroup Condition="'$(Platform)'=='x64'">
5466
<TargetName>$(ProjectName)_64</TargetName>
5567
</PropertyGroup>
68+
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
69+
<TargetName>$(ProjectName)_A64</TargetName>
70+
</PropertyGroup>
5671
<ItemDefinitionGroup>
5772
<ClCompile>
5873
<PrecompiledHeader>NotUsing</PrecompiledHeader>

‎Src/ClassicIE/ClassicIEDLL/ClassicIEBHO.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ static DWORD StartBroker( bool bWait, const wchar_t *param )
5050
PathAppend(path,L"ClassicIE_32.exe");
5151
else
5252
#endif
53+
#if defined(_M_AMD64) || defined(_M_IX86)
5354
PathAppend(path,L"ClassicIE_64.exe");
55+
#elif defined(_M_ARM64)
56+
PathAppend(path,L"ClassicIE_A64.exe");
57+
#endif
5458

5559
wchar_t cmdLine[1024];
5660
Sprintf(cmdLine,_countof(cmdLine),L"\"%s\" %s",path,param);

‎Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj

+16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|ARM64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>ARM64</Platform>
7+
</ProjectConfiguration>
48
<ProjectConfiguration Include="Debug|Win32">
59
<Configuration>Debug</Configuration>
610
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
913
<Configuration>Debug</Configuration>
1014
<Platform>x64</Platform>
1115
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|ARM64">
17+
<Configuration>Release</Configuration>
18+
<Platform>ARM64</Platform>
19+
</ProjectConfiguration>
1220
<ProjectConfiguration Include="Release|Win32">
1321
<Configuration>Release</Configuration>
1422
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
1725
<Configuration>Release</Configuration>
1826
<Platform>x64</Platform>
1927
</ProjectConfiguration>
28+
<ProjectConfiguration Include="Setup|ARM64">
29+
<Configuration>Setup</Configuration>
30+
<Platform>ARM64</Platform>
31+
</ProjectConfiguration>
2032
<ProjectConfiguration Include="Setup|Win32">
2133
<Configuration>Setup</Configuration>
2234
<Platform>Win32</Platform>
@@ -53,6 +65,9 @@
5365
<PropertyGroup Condition="'$(Platform)'=='x64'">
5466
<TargetName>$(ProjectName)_64</TargetName>
5567
</PropertyGroup>
68+
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
69+
<TargetName>$(ProjectName)_A64</TargetName>
70+
</PropertyGroup>
5671
<ItemDefinitionGroup>
5772
<ClCompile>
5873
<PreprocessorDefinitions>_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -92,6 +107,7 @@
92107
<None Include="ClassicIEDLL.rgs" />
93108
<None Include="ClassicIEDLL_32.def" />
94109
<None Include="ClassicIEDLL_64.def" />
110+
<None Include="ClassicIEDLL_A64.def" />
95111
</ItemGroup>
96112
<ItemGroup>
97113
<ClInclude Include="ClassicIEBHO.h" />

‎Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj.filters

+3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@
5858
<None Include="ClassicIEDLL.rgs">
5959
<Filter>Resource Files</Filter>
6060
</None>
61+
<None Include="ClassicIEDLL_A64.def">
62+
<Filter>Source Files</Filter>
63+
</None>
6164
</ItemGroup>
6265
<ItemGroup>
6366
<ClInclude Include="ClassicIEBHO.h">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
; ClassicIEDLL.def : Declares the module parameters.
2+
3+
LIBRARY "ClassicIEDLL_A64.DLL"
4+
5+
EXPORTS
6+
DllCanUnloadNow PRIVATE
7+
DllGetClassObject PRIVATE
8+
DllRegisterServer PRIVATE
9+
DllUnregisterServer PRIVATE
10+
DllInstall PRIVATE

‎Src/Common.props

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
<OutDir>$(MSBuildThisFileDirectory)..\build\bin\$(Configuration)64\</OutDir>
1717
<IntDir>$(MSBuildThisFileDirectory)..\build\obj\$(ProjectName)\$(Configuration)64\</IntDir>
1818
</PropertyGroup>
19+
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
20+
<OutDir>$(MSBuildThisFileDirectory)..\build\bin\$(Configuration)ARM64\</OutDir>
21+
<IntDir>$(MSBuildThisFileDirectory)..\build\obj\$(ProjectName)\$(Configuration)ARM64\</IntDir>
22+
</PropertyGroup>
1923

2024
<!-- Common settings for all configurations -->
2125
<ItemDefinitionGroup>

‎Src/Lib/IatHookHelper.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,17 @@ IatHookData *SetIatHook( IMAGE_DOS_HEADER *dosHeader, DWORD iatOffset, DWORD int
7070
{
7171
IatHookData *hook=g_IatHooks+g_IatHookCount;
7272
g_IatHookCount++;
73+
#if defined(_M_AMD64) || defined(_M_IX86)
7374
hook->jump[0]=hook->jump[1]=0x90; // NOP
7475
hook->jump[2]=0xFF; hook->jump[3]=0x25; // JUMP
75-
#ifdef _WIN64
76+
#if defined(_M_AMD64)
7677
hook->jumpOffs=0;
7778
#else
7879
hook->jumpOffs=(DWORD)(hook)+8;
80+
#endif
81+
#elif defined(_M_ARM64)
82+
hook->jump[0]=0x48; hook->jump[1]=0x00; hook->jump[2]=0x00; hook->jump[3]=0x58; // LDR X8, newProc
83+
hook->jump[4]=0x00; hook->jump[5]=0x01; hook->jump[6]=0x1F; hook->jump[7]=0xD6; // BR X8
7984
#endif
8085
hook->newProc=newProc;
8186
hook->oldProc=(void*)thunk->u1.Function;

‎Src/Lib/IatHookHelper.h

+4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66

77
struct IatHookData
88
{
9+
#if defined(_M_AMD64) || defined(_M_IX86)
910
unsigned char jump[4]; // jump instruction 0x90, 0x90, 0xFF, 0x25
1011
DWORD jumpOffs; // jump instruction offset
12+
#elif defined(_M_ARM64)
13+
unsigned char jump[8]; // LDR <address>, BR
14+
#endif
1115
void *newProc; // the address of the new proc
1216
void *oldProc; // the address of the old proc
1317
IMAGE_THUNK_DATA *thunk; // the IAT thunk

‎Src/Lib/Lib.vcxproj

+8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|ARM64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>ARM64</Platform>
7+
</ProjectConfiguration>
48
<ProjectConfiguration Include="Debug|Win32">
59
<Configuration>Debug</Configuration>
610
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
913
<Configuration>Debug</Configuration>
1014
<Platform>x64</Platform>
1115
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|ARM64">
17+
<Configuration>Release</Configuration>
18+
<Platform>ARM64</Platform>
19+
</ProjectConfiguration>
1220
<ProjectConfiguration Include="Release|Win32">
1321
<Configuration>Release</Configuration>
1422
<Platform>Win32</Platform>

0 commit comments

Comments
 (0)