├── .gitattributes
├── .gitignore
├── Bin
└── .gitignore
├── Dcu
└── .gitignore
├── Delphinus.Info.json
├── Delphinus.Install.json
├── Demos
├── BPL
│ ├── Demo.dpr
│ ├── Demo.dproj
│ └── Demo.res
├── FMX
│ ├── Demo.dpr
│ ├── Demo.dproj
│ ├── Demo.res
│ ├── MainFrm.fmx
│ └── MainFrm.pas
├── FPC
│ ├── Demo.ico
│ ├── Demo.lpi
│ ├── Demo.lpr
│ ├── Demo.res
│ ├── MainFrm.lfm
│ └── MainFrm.pas
├── IE
│ ├── Dll.bdsproj
│ ├── Dll.cfg
│ ├── Dll.dpr
│ ├── Dll.res
│ ├── Exe.bdsproj
│ ├── Exe.cfg
│ ├── Exe.dpr
│ ├── Exe.res
│ ├── IE.bdsgroup
│ ├── MainFrm.dfm
│ └── MainFrm.pas
├── VCL
│ ├── Demo.bdsproj
│ ├── Demo.cfg
│ ├── Demo.dpr
│ ├── Demo.dproj
│ ├── Demo.res
│ ├── MainFrm.dfm
│ └── MainFrm.pas
└── XP
│ ├── Demo.dpr
│ ├── Demo.dproj
│ ├── Demo.res
│ ├── MainFrm.dfm
│ ├── MainFrm.pas
│ └── XPCmpatibilityTweak.pas
├── Doc
└── Logo.png
├── LICENSE
├── README.md
├── README.zh-CN.md
└── Source
├── HookIntfs.pas
├── HookUtils.32.inc
├── HookUtils.64.inc
└── HookUtils.pas
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.bdsproj linguist-language=Pascal
2 | *.cer linguist-language=Pascal
3 | *.cfg linguist-language=Pascal
4 | *.exe linguist-language=Pascal
5 | *.inc linguist-language=Pascal
6 | *.res linguist-language=Pascal
7 | *.txt linguist-language=Pascal
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Uncomment these types if you want even more clean repository. But be careful.
2 | # It can make harm to an existing project source. Read explanations below.
3 | #
4 | # Resource files are binaries containing manifest, project icon and version info.
5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
6 | #*.res
7 | #
8 | # Type library file (binary). In old Delphi versions it should be stored.
9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
10 | #*.tlb
11 | #
12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
13 | # Uncomment this if you are not using diagrams or use newer Delphi version.
14 | #*.ddp
15 | #
16 | # Visual LiveBindings file. Added in Delphi XE2.
17 | # Uncomment this if you are not using LiveBindings Designer.
18 | #*.vlb
19 | #
20 | # Deployment Manager configuration file for your project. Added in Delphi XE2.
21 | # Uncomment this if it is not mobile development and you do not use remote debug feature.
22 | #*.deployproj
23 | #
24 | # C++ object files produced when C/C++ Output file generation is configured.
25 | # Uncomment this if you are not using external objects (zlib library for example).
26 | #*.obj
27 | #
28 |
29 | # Delphi compiler-generated binaries (safe to delete)
30 | *.exe
31 | *.dll
32 | *.bpl
33 | *.bpi
34 | *.dcp
35 | *.so
36 | *.apk
37 | *.drc
38 | *.map
39 | *.dres
40 | *.rsm
41 | *.tds
42 | *.dcu
43 | *.lib
44 | *.a
45 | *.o
46 | *.ocx
47 |
48 | # Delphi autogenerated files (duplicated info)
49 | *.cfg
50 | *.hpp
51 | *Resource.rc
52 |
53 | # Delphi local files (user-specific info)
54 | *.local
55 | *.identcache
56 | *.projdata
57 | *.tvsconfig
58 | *.dsk
59 |
60 | # Delphi history and backups
61 | __history/
62 | __recovery/
63 | *.~*
64 |
65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi)
66 | *.stat
67 |
68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss
69 | modules/
70 |
--------------------------------------------------------------------------------
/Bin/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Bin/.gitignore
--------------------------------------------------------------------------------
/Dcu/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Dcu/.gitignore
--------------------------------------------------------------------------------
/Delphinus.Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "{DE08E400-269C-49BC-997A-739F390A358A}",
3 | "name": "DelphiHookUtils",
4 | "picture": "Doc\\Logo.png",
5 | "license_type": "MPL-2.0",
6 | "license_file": "License",
7 | "platforms": "Win32;Win64",
8 | "first_version": "1.0.0",
9 | "package_compiler_min": 15,
10 | "compiler_min": 15
11 | }
--------------------------------------------------------------------------------
/Delphinus.Install.json:
--------------------------------------------------------------------------------
1 | {
2 | "search_pathes": [
3 | {
4 | "pathes": "Source",
5 | "platforms": "Win32;Win64"
6 | }
7 | ],
8 | "browsing_pathes": [
9 | {
10 | "pathes": "Source",
11 | "platforms": "Win32;Win64"
12 | }
13 | ],
14 | "source_folders": [
15 | {
16 | "folder": "Source",
17 | "base": "",
18 | "recursive": true,
19 | "filter": "*;*.*"
20 | }
21 | ],
22 | "projects": [
23 | {
24 | "project": "Demos\\VCL\\Demo.dproj",
25 | "compiler_min": 15
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/Demos/BPL/Demo.dpr:
--------------------------------------------------------------------------------
1 | program Demo;
2 |
3 | {$IF CompilerVersion >= 21.0}
4 | {$WEAKLINKRTTI ON}
5 | {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
6 | {$IFEND}
7 |
8 | uses
9 | Forms,
10 |
11 | HookUtils in '..\..\Source\HookUtils.pas',
12 | HookIntfs in '..\..\Source\HookIntfs.pas',
13 |
14 | MainFrm in '..\VCL\MainFrm.pas' {MainForm};
15 |
16 | {$R *.res}
17 |
18 | begin
19 | Application.Initialize;
20 | Application.CreateForm(TMainForm, MainForm);
21 | Application.Run;
22 | end.
23 |
--------------------------------------------------------------------------------
/Demos/BPL/Demo.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {58563B04-68D3-47BF-A8FF-5A781C480F37}
4 | 18.4
5 | VCL
6 | Demo.dpr
7 | True
8 | Debug
9 | Win64
10 | 3
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Cfg_1
34 | true
35 | true
36 |
37 |
38 | true
39 | Cfg_1
40 | true
41 | true
42 |
43 |
44 | true
45 | Base
46 | true
47 |
48 |
49 | true
50 | Cfg_2
51 | true
52 | true
53 |
54 |
55 | true
56 | Cfg_2
57 | true
58 | true
59 |
60 |
61 | None
62 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
63 | 2052
64 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
65 | $(BDS)\bin\delphi_PROJECTICON.ico
66 | rtl;vcl;$(DCC_UsePackage)
67 | ..\..\Dcu
68 | ..\..\Bin
69 | Demo
70 | true
71 |
72 |
73 | true
74 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
75 | 1033
76 | $(BDS)\bin\default_app.manifest
77 | true
78 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
79 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
80 |
81 |
82 | true
83 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
84 | 1033
85 | $(BDS)\bin\default_app.manifest
86 | true
87 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
88 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
89 |
90 |
91 | None
92 | true
93 | DEBUG;$(DCC_Define)
94 | false
95 | true
96 | true
97 | true
98 |
99 |
100 | true
101 | false
102 | Debug
103 | 1033
104 | true
105 |
106 |
107 | true
108 | 1033
109 | Debug
110 | true
111 |
112 |
113 | false
114 | RELEASE;$(DCC_Define)
115 | 0
116 | 0
117 |
118 |
119 | true
120 | $(BDS)\bin\default_app.manifest
121 | 1033
122 | true
123 |
124 |
125 | true
126 | 1033
127 | $(BDS)\bin\default_app.manifest
128 | true
129 |
130 |
131 |
132 | MainSource
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 | Cfg_2
141 | Base
142 |
143 |
144 | Base
145 |
146 |
147 | Cfg_1
148 | Base
149 |
150 |
151 |
152 | Delphi.Personality.12
153 |
154 |
155 |
156 |
157 | False
158 | False
159 | 1
160 | 0
161 | 0
162 | 0
163 | False
164 | False
165 | False
166 | False
167 | False
168 | 2052
169 | 936
170 |
171 |
172 |
173 |
174 | 1.0.0.0
175 |
176 |
177 |
178 |
179 |
180 | 1.0.0.0
181 |
182 |
183 |
184 | Demo.dpr
185 |
186 |
187 |
188 |
189 |
190 | True
191 | True
192 |
193 |
194 | 12
195 |
196 |
197 |
198 |
199 |
200 |
--------------------------------------------------------------------------------
/Demos/BPL/Demo.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/BPL/Demo.res
--------------------------------------------------------------------------------
/Demos/FMX/Demo.dpr:
--------------------------------------------------------------------------------
1 | program Demo;
2 |
3 | {$IF CompilerVersion >= 21.0}
4 | {$WEAKLINKRTTI ON}
5 | {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
6 | {$IFEND}
7 |
8 | uses
9 | System.StartUpCopy,
10 | FMX.Forms,
11 |
12 | HookUtils in '..\..\Source\HookUtils.pas',
13 | HookIntfs in '..\..\Source\HookIntfs.pas',
14 |
15 | MainFrm in 'MainFrm.pas' {MainForm};
16 |
17 | {$R *.res}
18 |
19 | begin
20 | Application.Initialize;
21 | Application.CreateForm(TMainForm, MainForm);
22 | Application.Run;
23 | end.
24 |
--------------------------------------------------------------------------------
/Demos/FMX/Demo.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/FMX/Demo.res
--------------------------------------------------------------------------------
/Demos/FMX/MainFrm.fmx:
--------------------------------------------------------------------------------
1 | object MainForm: TMainForm
2 | Left = 0
3 | Top = 0
4 | Caption = 'Form1'
5 | ClientHeight = 260
6 | ClientWidth = 424
7 | FormFactor.Width = 320
8 | FormFactor.Height = 480
9 | FormFactor.Devices = [Desktop]
10 | DesignerMasterStyle = 0
11 | object cbHookObject: TCheckBox
12 | Position.X = 112.000000000000000000
13 | Position.Y = 160.000000000000000000
14 | Size.Width = 200.000000000000000000
15 | Size.Height = 17.000000000000000000
16 | Size.PlatformDefault = False
17 | TabOrder = 1
18 | Text = 'Hook Method'
19 | OnClick = cbHookObjectClick
20 | Left = 112
21 | Top = 160
22 | end
23 | object btnTestObject: TButton
24 | Position.X = 114.000000000000000000
25 | Position.Y = 123.000000000000000000
26 | Size.Width = 100.000000000000000000
27 | Size.Height = 22.000000000000000000
28 | Size.PlatformDefault = False
29 | TabOrder = 2
30 | Text = 'Test Method'
31 | OnClick = btnTestObjectClick
32 | end
33 | end
34 |
--------------------------------------------------------------------------------
/Demos/FMX/MainFrm.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/FMX/MainFrm.pas
--------------------------------------------------------------------------------
/Demos/FPC/Demo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/FPC/Demo.ico
--------------------------------------------------------------------------------
/Demos/FPC/Demo.lpi:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
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 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | -
77 |
78 |
79 | -
80 |
81 |
82 | -
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/Demos/FPC/Demo.lpr:
--------------------------------------------------------------------------------
1 | program Demo;
2 |
3 | {$mode objfpc}{$H+}
4 |
5 | uses
6 | {$IFDEF UNIX}
7 | cthreads,
8 | {$ENDIF}
9 | {$IFDEF HASAMIGA}
10 | athreads,
11 | {$ENDIF}
12 | Interfaces, // this includes the LCL widgetset
13 |
14 | HookUtils in '..\..\Source\HookUtils.pas',
15 | HookIntfs in '..\..\Source\HookIntfs.pas',
16 |
17 | Forms, MainFrm
18 | { you can add units after this };
19 |
20 | {$R *.res}
21 |
22 | begin
23 | RequireDerivedFormResource:=True;
24 | Application.Scaled:=True;
25 | Application.Initialize;
26 | Application.CreateForm(TMainForm, MainForm);
27 | Application.Run;
28 | end.
29 |
--------------------------------------------------------------------------------
/Demos/FPC/Demo.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/FPC/Demo.res
--------------------------------------------------------------------------------
/Demos/FPC/MainFrm.lfm:
--------------------------------------------------------------------------------
1 | object MainForm: TMainForm
2 | Left = 460
3 | Top = 265
4 | Caption = 'MainForm'
5 | ClientHeight = 260
6 | ClientWidth = 424
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | Position = poScreenCenter
15 | OnCreate = FormCreate
16 | OnDestroy = FormDestroy
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object cbHookAPI: TCheckBox
20 | Left = 112
21 | Top = 84
22 | Width = 200
23 | Height = 17
24 | Caption = 'Hook Windows API'
25 | TabOrder = 0
26 | OnClick = cbHookAPIClick
27 | end
28 | object cbHookCOM: TCheckBox
29 | Left = 112
30 | Top = 121
31 | Width = 200
32 | Height = 17
33 | Caption = 'Hook COM'
34 | TabOrder = 1
35 | OnClick = cbHookCOMClick
36 | end
37 | object cbHookObject: TCheckBox
38 | Left = 112
39 | Top = 160
40 | Width = 200
41 | Height = 17
42 | Caption = 'Hook Method'
43 | TabOrder = 2
44 | OnClick = cbHookObjectClick
45 | end
46 | end
47 |
--------------------------------------------------------------------------------
/Demos/FPC/MainFrm.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/FPC/MainFrm.pas
--------------------------------------------------------------------------------
/Demos/IE/Dll.bdsproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Dll.dpr
14 |
15 |
16 | 7.0
17 |
18 |
19 | 8
20 | 0
21 | 1
22 | 1
23 | 0
24 | 0
25 | 1
26 | 1
27 | 1
28 | 0
29 | 0
30 | 1
31 | 0
32 | 1
33 | 1
34 | 1
35 | 0
36 | 0
37 | 0
38 | 0
39 | 0
40 | 1
41 | 0
42 | 1
43 | 1
44 | 1
45 | True
46 | True
47 | WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
48 |
49 | False
50 |
51 | True
52 | True
53 | True
54 | True
55 | True
56 | True
57 | True
58 | True
59 | True
60 | True
61 | True
62 | True
63 | True
64 | True
65 | True
66 | True
67 | True
68 | True
69 | True
70 | True
71 | True
72 | True
73 | True
74 | True
75 | True
76 | True
77 | True
78 | True
79 | True
80 | True
81 | True
82 | True
83 | True
84 | True
85 | True
86 | True
87 | True
88 | True
89 | True
90 | True
91 | True
92 | True
93 | True
94 | True
95 | True
96 | True
97 | False
98 | False
99 | False
100 | True
101 | True
102 | True
103 | True
104 | True
105 | True
106 | True
107 | True
108 | True
109 | True
110 | True
111 | True
112 | True
113 | True
114 | True
115 |
116 |
117 |
118 | 0
119 | 0
120 | False
121 | 1
122 | False
123 | False
124 | False
125 | 16384
126 | 1048576
127 | 4194304
128 |
129 |
130 |
131 | ..\..\Bin
132 | ..\..\Dcu
133 |
134 |
135 | ..\..\Source
136 | rtl;vcl
137 |
138 |
139 | False
140 |
141 |
142 |
143 | ..\..\Bin\Exe.exe
144 |
145 | False
146 | ..\..\Bin
147 |
148 | True
149 | False
150 |
151 |
152 | False
153 |
154 |
155 | False
156 | False
157 | 1
158 | 0
159 | 0
160 | 0
161 | False
162 | False
163 | False
164 | False
165 | False
166 | 2052
167 | 936
168 |
169 |
170 |
171 |
172 | 1.0.0.0
173 |
174 |
175 |
176 |
177 |
178 | 1.0.0.0
179 |
180 |
181 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/Demos/IE/Dll.cfg:
--------------------------------------------------------------------------------
1 | -$A8
2 | -$B-
3 | -$C+
4 | -$D+
5 | -$E-
6 | -$F-
7 | -$G+
8 | -$H+
9 | -$I+
10 | -$J-
11 | -$K-
12 | -$L+
13 | -$M-
14 | -$N+
15 | -$O+
16 | -$P+
17 | -$Q-
18 | -$R-
19 | -$S-
20 | -$T-
21 | -$U-
22 | -$V+
23 | -$W-
24 | -$X+
25 | -$YD
26 | -$Z1
27 | -cg
28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
29 | -H+
30 | -W+
31 | -M
32 | -$M16384,1048576
33 | -K$00400000
34 | -E"..\..\Bin"
35 | -N0"..\..\Dcu"
36 | -LE"C:\Users\Public\Documents\RAD Studio\5.0\Bpl"
37 | -LN"C:\Users\Public\Documents\RAD Studio\5.0\Dcp"
38 | -U"..\..\Source"
39 | -O"..\..\Source"
40 | -I"..\..\Source"
41 | -R"..\..\Source"
42 |
--------------------------------------------------------------------------------
/Demos/IE/Dll.dpr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/IE/Dll.dpr
--------------------------------------------------------------------------------
/Demos/IE/Dll.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/IE/Dll.res
--------------------------------------------------------------------------------
/Demos/IE/Exe.bdsproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Exe.dpr
14 |
15 |
16 | 7.0
17 |
18 |
19 | 8
20 | 0
21 | 1
22 | 1
23 | 0
24 | 0
25 | 1
26 | 1
27 | 1
28 | 0
29 | 0
30 | 1
31 | 0
32 | 1
33 | 1
34 | 1
35 | 0
36 | 0
37 | 0
38 | 0
39 | 0
40 | 1
41 | 0
42 | 1
43 | 1
44 | 1
45 | True
46 | True
47 | WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
48 |
49 | False
50 |
51 | True
52 | True
53 | True
54 | True
55 | True
56 | True
57 | True
58 | True
59 | True
60 | True
61 | True
62 | True
63 | True
64 | True
65 | True
66 | True
67 | True
68 | True
69 | True
70 | True
71 | True
72 | True
73 | True
74 | True
75 | True
76 | True
77 | True
78 | True
79 | True
80 | True
81 | True
82 | True
83 | True
84 | True
85 | True
86 | True
87 | True
88 | True
89 | True
90 | True
91 | True
92 | True
93 | True
94 | True
95 | True
96 | True
97 | False
98 | False
99 | False
100 | True
101 | True
102 | True
103 | True
104 | True
105 | True
106 | True
107 | True
108 | True
109 | True
110 | True
111 | True
112 | True
113 | True
114 | True
115 |
116 |
117 |
118 | 0
119 | 0
120 | False
121 | 1
122 | False
123 | False
124 | False
125 | 16384
126 | 1048576
127 | 4194304
128 |
129 |
130 |
131 | ..\..\Bin
132 | ..\..\Dcu
133 |
134 |
135 | ..\..\Source
136 | rtl;vcl
137 |
138 |
139 | False
140 |
141 |
142 |
143 |
144 |
145 | False
146 |
147 |
148 | True
149 | False
150 |
151 |
152 | False
153 |
154 |
155 | False
156 | False
157 | 1
158 | 0
159 | 0
160 | 0
161 | False
162 | False
163 | False
164 | False
165 | False
166 | 2052
167 | 936
168 |
169 |
170 |
171 |
172 | 1.0.0.0
173 |
174 |
175 |
176 |
177 |
178 | 1.0.0.0
179 |
180 |
181 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/Demos/IE/Exe.cfg:
--------------------------------------------------------------------------------
1 | -$A8
2 | -$B-
3 | -$C+
4 | -$D+
5 | -$E-
6 | -$F-
7 | -$G+
8 | -$H+
9 | -$I+
10 | -$J-
11 | -$K-
12 | -$L+
13 | -$M-
14 | -$N+
15 | -$O+
16 | -$P+
17 | -$Q-
18 | -$R-
19 | -$S-
20 | -$T-
21 | -$U-
22 | -$V+
23 | -$W-
24 | -$X+
25 | -$YD
26 | -$Z1
27 | -cg
28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
29 | -H+
30 | -W+
31 | -M
32 | -$M16384,1048576
33 | -K$00400000
34 | -E"..\..\Bin"
35 | -N0"..\..\Dcu"
36 | -LE"C:\Users\Public\Documents\RAD Studio\5.0\Bpl"
37 | -LN"C:\Users\Public\Documents\RAD Studio\5.0\Dcp"
38 | -U"..\..\Source"
39 | -O"..\..\Source"
40 | -I"..\..\Source"
41 | -R"..\..\Source"
42 |
--------------------------------------------------------------------------------
/Demos/IE/Exe.dpr:
--------------------------------------------------------------------------------
1 | program Exe;
2 |
3 | uses
4 | Forms,
5 | MainFrm in 'MainFrm.pas' {MainForm};
6 |
7 | {$R *.res}
8 |
9 | begin
10 | Application.Initialize;
11 | Application.MainFormOnTaskbar := True;
12 | Application.CreateForm(TMainForm, MainForm);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/Demos/IE/Exe.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/IE/Exe.res
--------------------------------------------------------------------------------
/Demos/IE/IE.bdsgroup:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Dll.bdsproj
14 | Exe.bdsproj
15 | Dll.dll Exe.exe
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Demos/IE/MainFrm.dfm:
--------------------------------------------------------------------------------
1 | object MainForm: TMainForm
2 | Left = 0
3 | Top = 0
4 | Caption = 'MainForm'
5 | ClientHeight = 299
6 | ClientWidth = 635
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | OnCreate = FormCreate
15 | OnShow = FormShow
16 | PixelsPerInch = 96
17 | TextHeight = 13
18 | end
19 |
--------------------------------------------------------------------------------
/Demos/IE/MainFrm.pas:
--------------------------------------------------------------------------------
1 | unit MainFrm;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, SHDocVw;
8 |
9 | type
10 | TMainForm = class(TForm)
11 | procedure FormCreate(Sender: TObject);
12 | procedure FormShow(Sender: TObject);
13 | private
14 | FWebBrowser: TWebBrowser;
15 | end;
16 |
17 | var
18 | MainForm: TMainForm;
19 |
20 | implementation
21 |
22 | {$R *.dfm}
23 |
24 | { TMainForm }
25 |
26 | procedure TMainForm.FormCreate(Sender: TObject);
27 | begin
28 | LoadLibrary('Dll.dll');
29 | end;
30 |
31 | procedure TMainForm.FormShow(Sender: TObject);
32 | begin
33 | FWebBrowser := TWebBrowser.Create(Self);
34 | TWinControl(FWebBrowser).Parent := Self;
35 | FWebBrowser.Align := alClient;
36 | FWebBrowser.Navigate('www.baidu.com');
37 | end;
38 |
39 | end.
40 |
--------------------------------------------------------------------------------
/Demos/VCL/Demo.bdsproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Demo.dpr
14 |
15 |
16 | 7.0
17 |
18 |
19 | 8
20 | 0
21 | 1
22 | 1
23 | 0
24 | 0
25 | 1
26 | 1
27 | 1
28 | 0
29 | 0
30 | 1
31 | 0
32 | 1
33 | 1
34 | 1
35 | 0
36 | 0
37 | 0
38 | 0
39 | 0
40 | 1
41 | 0
42 | 1
43 | 1
44 | 1
45 | True
46 | True
47 | WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
48 |
49 | False
50 |
51 | True
52 | True
53 | True
54 | True
55 | True
56 | True
57 | True
58 | True
59 | True
60 | True
61 | True
62 | True
63 | True
64 | True
65 | True
66 | True
67 | True
68 | True
69 | True
70 | True
71 | True
72 | True
73 | True
74 | True
75 | True
76 | True
77 | True
78 | True
79 | True
80 | True
81 | True
82 | True
83 | True
84 | True
85 | True
86 | True
87 | True
88 | True
89 | True
90 | True
91 | True
92 | True
93 | True
94 | True
95 | True
96 | True
97 | False
98 | False
99 | False
100 | True
101 | True
102 | True
103 | True
104 | True
105 | True
106 | True
107 | True
108 | True
109 | True
110 | True
111 | True
112 | True
113 | True
114 | True
115 |
116 |
117 |
118 | 0
119 | 0
120 | False
121 | 1
122 | False
123 | False
124 | False
125 | 16384
126 | 1048576
127 | 4194304
128 |
129 |
130 |
131 | ..\..\Bin
132 | ..\..\Dcu
133 |
134 |
135 |
136 |
137 |
138 |
139 | False
140 |
141 |
142 |
143 |
144 |
145 | False
146 |
147 |
148 | True
149 | False
150 |
151 |
152 | False
153 |
154 |
155 | True
156 | False
157 | 1
158 | 0
159 | 0
160 | 0
161 | False
162 | False
163 | False
164 | False
165 | False
166 | 1033
167 | 1252
168 |
169 |
170 |
171 |
172 | 1.0.0.0
173 |
174 |
175 |
176 |
177 |
178 | 1.0.0.0
179 |
180 |
181 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/Demos/VCL/Demo.cfg:
--------------------------------------------------------------------------------
1 | -$A8
2 | -$B-
3 | -$C+
4 | -$D+
5 | -$E-
6 | -$F-
7 | -$G+
8 | -$H+
9 | -$I+
10 | -$J-
11 | -$K-
12 | -$L+
13 | -$M-
14 | -$N+
15 | -$O+
16 | -$P+
17 | -$Q-
18 | -$R-
19 | -$S-
20 | -$T-
21 | -$U-
22 | -$V+
23 | -$W-
24 | -$X+
25 | -$YD
26 | -$Z1
27 | -cg
28 | -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
29 | -H+
30 | -W+
31 | -M
32 | -$M16384,1048576
33 | -K$00400000
34 | -E"..\..\Bin"
35 | -N0"..\..\Dcu"
36 | -LE"C:\Users\Public\Documents\RAD Studio\5.0\Bpl"
37 | -LN"C:\Users\Public\Documents\RAD Studio\5.0\Dcp"
38 |
--------------------------------------------------------------------------------
/Demos/VCL/Demo.dpr:
--------------------------------------------------------------------------------
1 | program Demo;
2 |
3 | {$IF CompilerVersion >= 21.0}
4 | {$WEAKLINKRTTI ON}
5 | {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
6 | {$IFEND}
7 |
8 | uses
9 | Forms,
10 |
11 | HookUtils in '..\..\Source\HookUtils.pas',
12 | HookIntfs in '..\..\Source\HookIntfs.pas',
13 |
14 | MainFrm in 'MainFrm.pas' {MainForm};
15 |
16 | {$R *.res}
17 |
18 | begin
19 | Application.Initialize;
20 | Application.CreateForm(TMainForm, MainForm);
21 | Application.Run;
22 | end.
23 |
--------------------------------------------------------------------------------
/Demos/VCL/Demo.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {58563B04-68D3-47BF-A8FF-5A781C480F37}
4 | 13.4
5 | VCL
6 | Demo.dpr
7 | True
8 | Debug
9 | Win32
10 | 3
11 | Application
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Cfg_1
34 | true
35 | true
36 |
37 |
38 | true
39 | Cfg_1
40 | true
41 | true
42 |
43 |
44 | true
45 | Base
46 | true
47 |
48 |
49 | true
50 | Cfg_2
51 | true
52 | true
53 |
54 |
55 | None
56 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
57 | 2052
58 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
59 | $(BDS)\bin\delphi_PROJECTICON.ico
60 | bindcompfmx;CustomIPTransport;fmx;dsnap;rtl;dbrtl;fmxase;bindcomp;inetdb;inet;fmxobj;xmlrtl;inetdbxpress;fmxdae;bindengine;soaprtl;$(DCC_UsePackage)
61 | ..\..\Dcu
62 | ..\..\Bin
63 |
64 |
65 | bindcompvcl;vclie;websnap;VclSmp;vcl;dsnapcon;vclx;webdsnap;vclimg;vclactnband;adortl;vcldb;$(DCC_UsePackage)
66 | true
67 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
68 | 1033
69 | $(BDS)\bin\default_app.manifest
70 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
71 |
72 |
73 | bindcompvcl;vclie;websnap;vclribbon;VclSmp;vcl;inetdbbde;dsnapcon;vclx;webdsnap;vclimg;fmi;vclactnband;adortl;vcldb;$(DCC_UsePackage)
74 | true
75 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
76 | 1033
77 | $(BDS)\bin\default_app.manifest
78 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
79 |
80 |
81 | None
82 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
83 | true
84 | 2052
85 | DEBUG;$(DCC_Define)
86 | false
87 | true
88 | true
89 | true
90 |
91 |
92 | true
93 | 1033
94 |
95 |
96 | true
97 | false
98 |
99 |
100 | false
101 | RELEASE;$(DCC_Define)
102 | 0
103 | false
104 |
105 |
106 | true
107 | $(BDS)\bin\default_app.manifest
108 | 1033
109 |
110 |
111 |
112 | MainSource
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 | Cfg_2
121 | Base
122 |
123 |
124 | Base
125 |
126 |
127 | Cfg_1
128 | Base
129 |
130 |
131 |
132 | Delphi.Personality.12
133 |
134 |
135 |
136 |
137 | False
138 | False
139 | 1
140 | 0
141 | 0
142 | 0
143 | False
144 | False
145 | False
146 | False
147 | False
148 | 2052
149 | 936
150 |
151 |
152 |
153 |
154 | 1.0.0.0
155 |
156 |
157 |
158 |
159 |
160 | 1.0.0.0
161 |
162 |
163 |
164 | Demo.dpr
165 |
166 |
167 |
168 |
169 |
170 | True
171 | True
172 |
173 |
174 | 12
175 |
176 |
177 |
178 |
179 |
--------------------------------------------------------------------------------
/Demos/VCL/Demo.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/VCL/Demo.res
--------------------------------------------------------------------------------
/Demos/VCL/MainFrm.dfm:
--------------------------------------------------------------------------------
1 | object MainForm: TMainForm
2 | Left = 460
3 | Top = 265
4 | Caption = 'MainForm'
5 | ClientHeight = 260
6 | ClientWidth = 424
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -11
11 | Font.Name = 'Tahoma'
12 | Font.Style = []
13 | OldCreateOrder = False
14 | Position = poScreenCenter
15 | OnCreate = FormCreate
16 | OnDestroy = FormDestroy
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object cbHookAPI: TCheckBox
20 | Left = 112
21 | Top = 84
22 | Width = 200
23 | Height = 17
24 | Caption = 'Hook Windows API'
25 | TabOrder = 0
26 | OnClick = cbHookAPIClick
27 | end
28 | object cbHookCOM: TCheckBox
29 | Left = 112
30 | Top = 121
31 | Width = 200
32 | Height = 17
33 | Caption = 'Hook COM'
34 | TabOrder = 1
35 | OnClick = cbHookCOMClick
36 | end
37 | object cbHookObject: TCheckBox
38 | Left = 112
39 | Top = 160
40 | Width = 200
41 | Height = 17
42 | Caption = 'Hook Method'
43 | TabOrder = 2
44 | OnClick = cbHookObjectClick
45 | end
46 | end
47 |
--------------------------------------------------------------------------------
/Demos/VCL/MainFrm.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/VCL/MainFrm.pas
--------------------------------------------------------------------------------
/Demos/XP/Demo.dpr:
--------------------------------------------------------------------------------
1 | program Demo;
2 |
3 | {$IF CompilerVersion >= 21.0}
4 | {$WEAKLINKRTTI ON}
5 | {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
6 | {$IFEND}
7 |
8 | uses
9 | System.SysUtils,
10 |
11 | HookUtils in '..\..\Source\HookUtils.pas',
12 | HookIntfs in '..\..\Source\HookIntfs.pas',
13 |
14 | XPCmpatibilityTweak in 'XPCmpatibilityTweak.pas',
15 |
16 | Vcl.Forms,
17 |
18 | MainFrm in 'MainFrm.pas' {MainForm};
19 |
20 | {$R *.res}
21 |
22 | {$SETPEOSVERSION 5.0}
23 | {$SETPESUBSYSVERSION 5.0} { for Windows XP }
24 |
25 | begin
26 | Application.Initialize;
27 | Application.MainFormOnTaskbar := True;
28 | Application.CreateForm(TMainForm, MainForm);
29 | Application.Run;
30 | end.
31 |
--------------------------------------------------------------------------------
/Demos/XP/Demo.dproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | {4CCBD917-AAAD-4972-811A-5C787CDBACC4}
4 | 19.3
5 | VCL
6 | True
7 | Debug
8 | Win32
9 | 3
10 | Application
11 | Demo.dpr
12 |
13 |
14 | true
15 |
16 |
17 | true
18 | Base
19 | true
20 |
21 |
22 | true
23 | Base
24 | true
25 |
26 |
27 | true
28 | Base
29 | true
30 |
31 |
32 | true
33 | Cfg_1
34 | true
35 | true
36 |
37 |
38 | true
39 | Cfg_1
40 | true
41 | true
42 |
43 |
44 | true
45 | Base
46 | true
47 |
48 |
49 | true
50 | Cfg_2
51 | true
52 | true
53 |
54 |
55 | true
56 | Cfg_2
57 | true
58 | true
59 |
60 |
61 | ..\..\Dcu\$(Platform)\$(Config)
62 | ..\..\Bin\$(Platform)\$(Config)
63 | false
64 | false
65 | false
66 | false
67 | false
68 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)
69 | $(BDS)\bin\delphi_PROJECTICON.ico
70 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
71 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
72 | Demo
73 | 2052
74 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
75 |
76 |
77 | DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)
78 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
79 | Debug
80 | true
81 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
82 | 1033
83 | $(BDS)\bin\default_app.manifest
84 |
85 |
86 | DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)
87 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
88 | Debug
89 | true
90 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
91 | 1033
92 | $(BDS)\bin\default_app.manifest
93 |
94 |
95 | DEBUG;$(DCC_Define)
96 | true
97 | false
98 | true
99 | true
100 | true
101 | true
102 | true
103 |
104 |
105 | false
106 | true
107 | PerMonitorV2
108 | true
109 | 1033
110 |
111 |
112 | true
113 | PerMonitorV2
114 |
115 |
116 | false
117 | RELEASE;$(DCC_Define)
118 | 0
119 | 0
120 |
121 |
122 | true
123 | PerMonitorV2
124 |
125 |
126 | true
127 | PerMonitorV2
128 |
129 |
130 |
131 | MainSource
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 | Base
141 |
142 |
143 | Cfg_1
144 | Base
145 |
146 |
147 | Cfg_2
148 | Base
149 |
150 |
151 |
152 | Delphi.Personality.12
153 | Application
154 |
155 |
156 |
157 | Demo.dpr
158 |
159 |
160 | Microsoft Office 2000 Sample Automation Server Wrapper Components
161 | Microsoft Office XP Sample Automation Server Wrapper Components
162 |
163 |
164 |
165 |
166 |
167 | Demo.exe
168 | true
169 |
170 |
171 |
172 |
173 | 1
174 |
175 |
176 | Contents\MacOS
177 | 1
178 |
179 |
180 | 0
181 |
182 |
183 |
184 |
185 | classes
186 | 64
187 |
188 |
189 | classes
190 | 64
191 |
192 |
193 |
194 |
195 | res\xml
196 | 1
197 |
198 |
199 | res\xml
200 | 1
201 |
202 |
203 |
204 |
205 | library\lib\armeabi-v7a
206 | 1
207 |
208 |
209 |
210 |
211 | library\lib\armeabi
212 | 1
213 |
214 |
215 | library\lib\armeabi
216 | 1
217 |
218 |
219 |
220 |
221 | library\lib\armeabi-v7a
222 | 1
223 |
224 |
225 |
226 |
227 | library\lib\mips
228 | 1
229 |
230 |
231 | library\lib\mips
232 | 1
233 |
234 |
235 |
236 |
237 | library\lib\armeabi-v7a
238 | 1
239 |
240 |
241 | library\lib\arm64-v8a
242 | 1
243 |
244 |
245 |
246 |
247 | library\lib\armeabi-v7a
248 | 1
249 |
250 |
251 |
252 |
253 | res\drawable
254 | 1
255 |
256 |
257 | res\drawable
258 | 1
259 |
260 |
261 |
262 |
263 | res\values
264 | 1
265 |
266 |
267 | res\values
268 | 1
269 |
270 |
271 |
272 |
273 | res\values-v21
274 | 1
275 |
276 |
277 | res\values-v21
278 | 1
279 |
280 |
281 |
282 |
283 | res\values
284 | 1
285 |
286 |
287 | res\values
288 | 1
289 |
290 |
291 |
292 |
293 | res\drawable
294 | 1
295 |
296 |
297 | res\drawable
298 | 1
299 |
300 |
301 |
302 |
303 | res\drawable-xxhdpi
304 | 1
305 |
306 |
307 | res\drawable-xxhdpi
308 | 1
309 |
310 |
311 |
312 |
313 | res\drawable-xxxhdpi
314 | 1
315 |
316 |
317 | res\drawable-xxxhdpi
318 | 1
319 |
320 |
321 |
322 |
323 | res\drawable-ldpi
324 | 1
325 |
326 |
327 | res\drawable-ldpi
328 | 1
329 |
330 |
331 |
332 |
333 | res\drawable-mdpi
334 | 1
335 |
336 |
337 | res\drawable-mdpi
338 | 1
339 |
340 |
341 |
342 |
343 | res\drawable-hdpi
344 | 1
345 |
346 |
347 | res\drawable-hdpi
348 | 1
349 |
350 |
351 |
352 |
353 | res\drawable-xhdpi
354 | 1
355 |
356 |
357 | res\drawable-xhdpi
358 | 1
359 |
360 |
361 |
362 |
363 | res\drawable-mdpi
364 | 1
365 |
366 |
367 | res\drawable-mdpi
368 | 1
369 |
370 |
371 |
372 |
373 | res\drawable-hdpi
374 | 1
375 |
376 |
377 | res\drawable-hdpi
378 | 1
379 |
380 |
381 |
382 |
383 | res\drawable-xhdpi
384 | 1
385 |
386 |
387 | res\drawable-xhdpi
388 | 1
389 |
390 |
391 |
392 |
393 | res\drawable-xxhdpi
394 | 1
395 |
396 |
397 | res\drawable-xxhdpi
398 | 1
399 |
400 |
401 |
402 |
403 | res\drawable-xxxhdpi
404 | 1
405 |
406 |
407 | res\drawable-xxxhdpi
408 | 1
409 |
410 |
411 |
412 |
413 | res\drawable-small
414 | 1
415 |
416 |
417 | res\drawable-small
418 | 1
419 |
420 |
421 |
422 |
423 | res\drawable-normal
424 | 1
425 |
426 |
427 | res\drawable-normal
428 | 1
429 |
430 |
431 |
432 |
433 | res\drawable-large
434 | 1
435 |
436 |
437 | res\drawable-large
438 | 1
439 |
440 |
441 |
442 |
443 | res\drawable-xlarge
444 | 1
445 |
446 |
447 | res\drawable-xlarge
448 | 1
449 |
450 |
451 |
452 |
453 | res\values
454 | 1
455 |
456 |
457 | res\values
458 | 1
459 |
460 |
461 |
462 |
463 | 1
464 |
465 |
466 | Contents\MacOS
467 | 1
468 |
469 |
470 | 0
471 |
472 |
473 |
474 |
475 | Contents\MacOS
476 | 1
477 | .framework
478 |
479 |
480 | Contents\MacOS
481 | 1
482 | .framework
483 |
484 |
485 | Contents\MacOS
486 | 1
487 | .framework
488 |
489 |
490 | 0
491 |
492 |
493 |
494 |
495 | 1
496 | .dylib
497 |
498 |
499 | 1
500 | .dylib
501 |
502 |
503 | 1
504 | .dylib
505 |
506 |
507 | Contents\MacOS
508 | 1
509 | .dylib
510 |
511 |
512 | Contents\MacOS
513 | 1
514 | .dylib
515 |
516 |
517 | Contents\MacOS
518 | 1
519 | .dylib
520 |
521 |
522 | 0
523 | .dll;.bpl
524 |
525 |
526 |
527 |
528 | 1
529 | .dylib
530 |
531 |
532 | 1
533 | .dylib
534 |
535 |
536 | 1
537 | .dylib
538 |
539 |
540 | Contents\MacOS
541 | 1
542 | .dylib
543 |
544 |
545 | Contents\MacOS
546 | 1
547 | .dylib
548 |
549 |
550 | Contents\MacOS
551 | 1
552 | .dylib
553 |
554 |
555 | 0
556 | .bpl
557 |
558 |
559 |
560 |
561 | 0
562 |
563 |
564 | 0
565 |
566 |
567 | 0
568 |
569 |
570 | 0
571 |
572 |
573 | 0
574 |
575 |
576 | Contents\Resources\StartUp\
577 | 0
578 |
579 |
580 | Contents\Resources\StartUp\
581 | 0
582 |
583 |
584 | Contents\Resources\StartUp\
585 | 0
586 |
587 |
588 | 0
589 |
590 |
591 |
592 |
593 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
594 | 1
595 |
596 |
597 |
598 |
599 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
600 | 1
601 |
602 |
603 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
604 | 1
605 |
606 |
607 |
608 |
609 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
610 | 1
611 |
612 |
613 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
614 | 1
615 |
616 |
617 |
618 |
619 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
620 | 1
621 |
622 |
623 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
624 | 1
625 |
626 |
627 |
628 |
629 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
630 | 1
631 |
632 |
633 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
634 | 1
635 |
636 |
637 |
638 |
639 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
640 | 1
641 |
642 |
643 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
644 | 1
645 |
646 |
647 |
648 |
649 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
650 | 1
651 |
652 |
653 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
654 | 1
655 |
656 |
657 |
658 |
659 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
660 | 1
661 |
662 |
663 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
664 | 1
665 |
666 |
667 |
668 |
669 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
670 | 1
671 |
672 |
673 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
674 | 1
675 |
676 |
677 |
678 |
679 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
680 | 1
681 |
682 |
683 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
684 | 1
685 |
686 |
687 |
688 |
689 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
690 | 1
691 |
692 |
693 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
694 | 1
695 |
696 |
697 |
698 |
699 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
700 | 1
701 |
702 |
703 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
704 | 1
705 |
706 |
707 |
708 |
709 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
710 | 1
711 |
712 |
713 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
714 | 1
715 |
716 |
717 |
718 |
719 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
720 | 1
721 |
722 |
723 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
724 | 1
725 |
726 |
727 |
728 |
729 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
730 | 1
731 |
732 |
733 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
734 | 1
735 |
736 |
737 |
738 |
739 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
740 | 1
741 |
742 |
743 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
744 | 1
745 |
746 |
747 |
748 |
749 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
750 | 1
751 |
752 |
753 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
754 | 1
755 |
756 |
757 |
758 |
759 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
760 | 1
761 |
762 |
763 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
764 | 1
765 |
766 |
767 |
768 |
769 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
770 | 1
771 |
772 |
773 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
774 | 1
775 |
776 |
777 |
778 |
779 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
780 | 1
781 |
782 |
783 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
784 | 1
785 |
786 |
787 |
788 |
789 | 1
790 |
791 |
792 | 1
793 |
794 |
795 |
796 |
797 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
798 | 1
799 |
800 |
801 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
802 | 1
803 |
804 |
805 |
806 |
807 | ..\
808 | 1
809 |
810 |
811 | ..\
812 | 1
813 |
814 |
815 |
816 |
817 | 1
818 |
819 |
820 | 1
821 |
822 |
823 | 1
824 |
825 |
826 |
827 |
828 | ..\$(PROJECTNAME).launchscreen
829 | 64
830 |
831 |
832 | ..\$(PROJECTNAME).launchscreen
833 | 64
834 |
835 |
836 |
837 |
838 | 1
839 |
840 |
841 | 1
842 |
843 |
844 | 1
845 |
846 |
847 |
848 |
849 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
850 | 1
851 |
852 |
853 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
854 | 1
855 |
856 |
857 |
858 |
859 | ..\
860 | 1
861 |
862 |
863 | ..\
864 | 1
865 |
866 |
867 | ..\
868 | 1
869 |
870 |
871 |
872 |
873 | Contents
874 | 1
875 |
876 |
877 | Contents
878 | 1
879 |
880 |
881 | Contents
882 | 1
883 |
884 |
885 |
886 |
887 | Contents\Resources
888 | 1
889 |
890 |
891 | Contents\Resources
892 | 1
893 |
894 |
895 | Contents\Resources
896 | 1
897 |
898 |
899 |
900 |
901 | library\lib\armeabi-v7a
902 | 1
903 |
904 |
905 | library\lib\arm64-v8a
906 | 1
907 |
908 |
909 | 1
910 |
911 |
912 | 1
913 |
914 |
915 | 1
916 |
917 |
918 | 1
919 |
920 |
921 | Contents\MacOS
922 | 1
923 |
924 |
925 | Contents\MacOS
926 | 1
927 |
928 |
929 | Contents\MacOS
930 | 1
931 |
932 |
933 | 0
934 |
935 |
936 |
937 |
938 | library\lib\armeabi-v7a
939 | 1
940 |
941 |
942 |
943 |
944 | 1
945 |
946 |
947 | 1
948 |
949 |
950 |
951 |
952 | Assets
953 | 1
954 |
955 |
956 | Assets
957 | 1
958 |
959 |
960 |
961 |
962 | Assets
963 | 1
964 |
965 |
966 | Assets
967 | 1
968 |
969 |
970 |
971 |
972 |
973 |
974 |
975 |
976 |
977 |
978 |
979 |
980 |
981 |
982 |
983 | True
984 | True
985 |
986 |
987 | 12
988 |
989 |
990 |
991 |
992 |
993 |
--------------------------------------------------------------------------------
/Demos/XP/Demo.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Demos/XP/Demo.res
--------------------------------------------------------------------------------
/Demos/XP/MainFrm.dfm:
--------------------------------------------------------------------------------
1 | object MainForm: TMainForm
2 | Left = 0
3 | Top = 0
4 | Caption = 'MainForm'
5 | ClientHeight = 441
6 | ClientWidth = 624
7 | Color = clBtnFace
8 | Font.Charset = DEFAULT_CHARSET
9 | Font.Color = clWindowText
10 | Font.Height = -12
11 | Font.Name = 'Segoe UI'
12 | Font.Style = []
13 | OnCreate = FormCreate
14 | PixelsPerInch = 96
15 | TextHeight = 15
16 | object Label1: TLabel
17 | Left = 128
18 | Top = 136
19 | Width = 18
20 | Height = 15
21 | Caption = 'OS:'
22 | end
23 | object Button1: TButton
24 | Left = 128
25 | Top = 168
26 | Width = 100
27 | Height = 25
28 | Caption = 'GetTickCount64'
29 | TabOrder = 0
30 | OnClick = Button1Click
31 | end
32 | end
33 |
--------------------------------------------------------------------------------
/Demos/XP/MainFrm.pas:
--------------------------------------------------------------------------------
1 | unit MainFrm;
2 |
3 | interface
4 |
5 | uses
6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
8 |
9 | type
10 | TMainForm = class(TForm)
11 | Label1: TLabel;
12 | Button1: TButton;
13 | procedure FormCreate(Sender: TObject);
14 | procedure Button1Click(Sender: TObject);
15 | private
16 | { Private declarations }
17 | public
18 | { Public declarations }
19 | end;
20 |
21 | var
22 | MainForm: TMainForm;
23 |
24 | implementation
25 |
26 | {$R *.dfm}
27 |
28 | procedure TMainForm.Button1Click(Sender: TObject);
29 | begin
30 | ShowMessage('TThread.GetTickCount64: ' + IntToStr(TThread.GetTickCount64));
31 | end;
32 |
33 | procedure TMainForm.FormCreate(Sender: TObject);
34 | begin
35 | Label1.Caption := TOSVersion.ToString;
36 | end;
37 |
38 | end.
39 |
--------------------------------------------------------------------------------
/Demos/XP/XPCmpatibilityTweak.pas:
--------------------------------------------------------------------------------
1 | { *********************************************************************** }
2 | { }
3 | { Delphi 11 Windows XP compatibility tweak Thread TickCount Fix 单元 }
4 | { }
5 | { 设计:Lsuper 2021.09.15 }
6 | { 备注: }
7 | { 审核: }
8 | { }
9 | { See: http://bbs.2ccc.com/topic.asp?topicid=617636 }
10 | { http://bbs.2ccc.com/topic.asp?topicid=617767 }
11 | { }
12 | { Copyright (c) 1998-2021 Super Studio }
13 | { }
14 | { *********************************************************************** }
15 |
16 | unit XPCmpatibilityTweak;
17 |
18 | {$IFDEF FPC}
19 | {$MODE Delphi}
20 | {$ENDIF}
21 |
22 | interface
23 |
24 | implementation
25 |
26 | uses
27 | Winapi.Windows, System.SysUtils, HookUtils;
28 |
29 | var
30 | GetTickCount64Next: function : UInt64; stdcall;
31 |
32 | function GetTickCount64CallBack: UInt64; stdcall;
33 | begin
34 | if TOSVersion.Major < 6 then
35 | Result := Winapi.Windows.GetTickCount
36 | else Result := GetTickCount64Next;
37 | end;
38 |
39 | initialization
40 | if TOSVersion.Major < 6 then
41 | begin
42 | HookProc(@Winapi.Windows.GetTickCount64, @GetTickCount64CallBack, @GetTickCount64Next);
43 | end;
44 |
45 | finalization
46 | if Assigned(@GetTickCount64Next) then
47 | begin
48 | UnHookProc(@GetTickCount64Next);
49 | end;
50 |
51 | end.
52 |
--------------------------------------------------------------------------------
/Doc/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Doc/Logo.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Mozilla Public License Version 2.0
2 | ==================================
3 |
4 | 1. Definitions
5 | --------------
6 |
7 | 1.1. "Contributor"
8 | means each individual or legal entity that creates, contributes to
9 | the creation of, or owns Covered Software.
10 |
11 | 1.2. "Contributor Version"
12 | means the combination of the Contributions of others (if any) used
13 | by a Contributor and that particular Contributor's Contribution.
14 |
15 | 1.3. "Contribution"
16 | means Covered Software of a particular Contributor.
17 |
18 | 1.4. "Covered Software"
19 | means Source Code Form to which the initial Contributor has attached
20 | the notice in Exhibit A, the Executable Form of such Source Code
21 | Form, and Modifications of such Source Code Form, in each case
22 | including portions thereof.
23 |
24 | 1.5. "Incompatible With Secondary Licenses"
25 | means
26 |
27 | (a) that the initial Contributor has attached the notice described
28 | in Exhibit B to the Covered Software; or
29 |
30 | (b) that the Covered Software was made available under the terms of
31 | version 1.1 or earlier of the License, but not also under the
32 | terms of a Secondary License.
33 |
34 | 1.6. "Executable Form"
35 | means any form of the work other than Source Code Form.
36 |
37 | 1.7. "Larger Work"
38 | means a work that combines Covered Software with other material, in
39 | a separate file or files, that is not Covered Software.
40 |
41 | 1.8. "License"
42 | means this document.
43 |
44 | 1.9. "Licensable"
45 | means having the right to grant, to the maximum extent possible,
46 | whether at the time of the initial grant or subsequently, any and
47 | all of the rights conveyed by this License.
48 |
49 | 1.10. "Modifications"
50 | means any of the following:
51 |
52 | (a) any file in Source Code Form that results from an addition to,
53 | deletion from, or modification of the contents of Covered
54 | Software; or
55 |
56 | (b) any new file in Source Code Form that contains any Covered
57 | Software.
58 |
59 | 1.11. "Patent Claims" of a Contributor
60 | means any patent claim(s), including without limitation, method,
61 | process, and apparatus claims, in any patent Licensable by such
62 | Contributor that would be infringed, but for the grant of the
63 | License, by the making, using, selling, offering for sale, having
64 | made, import, or transfer of either its Contributions or its
65 | Contributor Version.
66 |
67 | 1.12. "Secondary License"
68 | means either the GNU General Public License, Version 2.0, the GNU
69 | Lesser General Public License, Version 2.1, the GNU Affero General
70 | Public License, Version 3.0, or any later versions of those
71 | licenses.
72 |
73 | 1.13. "Source Code Form"
74 | means the form of the work preferred for making modifications.
75 |
76 | 1.14. "You" (or "Your")
77 | means an individual or a legal entity exercising rights under this
78 | License. For legal entities, "You" includes any entity that
79 | controls, is controlled by, or is under common control with You. For
80 | purposes of this definition, "control" means (a) the power, direct
81 | or indirect, to cause the direction or management of such entity,
82 | whether by contract or otherwise, or (b) ownership of more than
83 | fifty percent (50%) of the outstanding shares or beneficial
84 | ownership of such entity.
85 |
86 | 2. License Grants and Conditions
87 | --------------------------------
88 |
89 | 2.1. Grants
90 |
91 | Each Contributor hereby grants You a world-wide, royalty-free,
92 | non-exclusive license:
93 |
94 | (a) under intellectual property rights (other than patent or trademark)
95 | Licensable by such Contributor to use, reproduce, make available,
96 | modify, display, perform, distribute, and otherwise exploit its
97 | Contributions, either on an unmodified basis, with Modifications, or
98 | as part of a Larger Work; and
99 |
100 | (b) under Patent Claims of such Contributor to make, use, sell, offer
101 | for sale, have made, import, and otherwise transfer either its
102 | Contributions or its Contributor Version.
103 |
104 | 2.2. Effective Date
105 |
106 | The licenses granted in Section 2.1 with respect to any Contribution
107 | become effective for each Contribution on the date the Contributor first
108 | distributes such Contribution.
109 |
110 | 2.3. Limitations on Grant Scope
111 |
112 | The licenses granted in this Section 2 are the only rights granted under
113 | this License. No additional rights or licenses will be implied from the
114 | distribution or licensing of Covered Software under this License.
115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a
116 | Contributor:
117 |
118 | (a) for any code that a Contributor has removed from Covered Software;
119 | or
120 |
121 | (b) for infringements caused by: (i) Your and any other third party's
122 | modifications of Covered Software, or (ii) the combination of its
123 | Contributions with other software (except as part of its Contributor
124 | Version); or
125 |
126 | (c) under Patent Claims infringed by Covered Software in the absence of
127 | its Contributions.
128 |
129 | This License does not grant any rights in the trademarks, service marks,
130 | or logos of any Contributor (except as may be necessary to comply with
131 | the notice requirements in Section 3.4).
132 |
133 | 2.4. Subsequent Licenses
134 |
135 | No Contributor makes additional grants as a result of Your choice to
136 | distribute the Covered Software under a subsequent version of this
137 | License (see Section 10.2) or under the terms of a Secondary License (if
138 | permitted under the terms of Section 3.3).
139 |
140 | 2.5. Representation
141 |
142 | Each Contributor represents that the Contributor believes its
143 | Contributions are its original creation(s) or it has sufficient rights
144 | to grant the rights to its Contributions conveyed by this License.
145 |
146 | 2.6. Fair Use
147 |
148 | This License is not intended to limit any rights You have under
149 | applicable copyright doctrines of fair use, fair dealing, or other
150 | equivalents.
151 |
152 | 2.7. Conditions
153 |
154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155 | in Section 2.1.
156 |
157 | 3. Responsibilities
158 | -------------------
159 |
160 | 3.1. Distribution of Source Form
161 |
162 | All distribution of Covered Software in Source Code Form, including any
163 | Modifications that You create or to which You contribute, must be under
164 | the terms of this License. You must inform recipients that the Source
165 | Code Form of the Covered Software is governed by the terms of this
166 | License, and how they can obtain a copy of this License. You may not
167 | attempt to alter or restrict the recipients' rights in the Source Code
168 | Form.
169 |
170 | 3.2. Distribution of Executable Form
171 |
172 | If You distribute Covered Software in Executable Form then:
173 |
174 | (a) such Covered Software must also be made available in Source Code
175 | Form, as described in Section 3.1, and You must inform recipients of
176 | the Executable Form how they can obtain a copy of such Source Code
177 | Form by reasonable means in a timely manner, at a charge no more
178 | than the cost of distribution to the recipient; and
179 |
180 | (b) You may distribute such Executable Form under the terms of this
181 | License, or sublicense it under different terms, provided that the
182 | license for the Executable Form does not attempt to limit or alter
183 | the recipients' rights in the Source Code Form under this License.
184 |
185 | 3.3. Distribution of a Larger Work
186 |
187 | You may create and distribute a Larger Work under terms of Your choice,
188 | provided that You also comply with the requirements of this License for
189 | the Covered Software. If the Larger Work is a combination of Covered
190 | Software with a work governed by one or more Secondary Licenses, and the
191 | Covered Software is not Incompatible With Secondary Licenses, this
192 | License permits You to additionally distribute such Covered Software
193 | under the terms of such Secondary License(s), so that the recipient of
194 | the Larger Work may, at their option, further distribute the Covered
195 | Software under the terms of either this License or such Secondary
196 | License(s).
197 |
198 | 3.4. Notices
199 |
200 | You may not remove or alter the substance of any license notices
201 | (including copyright notices, patent notices, disclaimers of warranty,
202 | or limitations of liability) contained within the Source Code Form of
203 | the Covered Software, except that You may alter any license notices to
204 | the extent required to remedy known factual inaccuracies.
205 |
206 | 3.5. Application of Additional Terms
207 |
208 | You may choose to offer, and to charge a fee for, warranty, support,
209 | indemnity or liability obligations to one or more recipients of Covered
210 | Software. However, You may do so only on Your own behalf, and not on
211 | behalf of any Contributor. You must make it absolutely clear that any
212 | such warranty, support, indemnity, or liability obligation is offered by
213 | You alone, and You hereby agree to indemnify every Contributor for any
214 | liability incurred by such Contributor as a result of warranty, support,
215 | indemnity or liability terms You offer. You may include additional
216 | disclaimers of warranty and limitations of liability specific to any
217 | jurisdiction.
218 |
219 | 4. Inability to Comply Due to Statute or Regulation
220 | ---------------------------------------------------
221 |
222 | If it is impossible for You to comply with any of the terms of this
223 | License with respect to some or all of the Covered Software due to
224 | statute, judicial order, or regulation then You must: (a) comply with
225 | the terms of this License to the maximum extent possible; and (b)
226 | describe the limitations and the code they affect. Such description must
227 | be placed in a text file included with all distributions of the Covered
228 | Software under this License. Except to the extent prohibited by statute
229 | or regulation, such description must be sufficiently detailed for a
230 | recipient of ordinary skill to be able to understand it.
231 |
232 | 5. Termination
233 | --------------
234 |
235 | 5.1. The rights granted under this License will terminate automatically
236 | if You fail to comply with any of its terms. However, if You become
237 | compliant, then the rights granted under this License from a particular
238 | Contributor are reinstated (a) provisionally, unless and until such
239 | Contributor explicitly and finally terminates Your grants, and (b) on an
240 | ongoing basis, if such Contributor fails to notify You of the
241 | non-compliance by some reasonable means prior to 60 days after You have
242 | come back into compliance. Moreover, Your grants from a particular
243 | Contributor are reinstated on an ongoing basis if such Contributor
244 | notifies You of the non-compliance by some reasonable means, this is the
245 | first time You have received notice of non-compliance with this License
246 | from such Contributor, and You become compliant prior to 30 days after
247 | Your receipt of the notice.
248 |
249 | 5.2. If You initiate litigation against any entity by asserting a patent
250 | infringement claim (excluding declaratory judgment actions,
251 | counter-claims, and cross-claims) alleging that a Contributor Version
252 | directly or indirectly infringes any patent, then the rights granted to
253 | You by any and all Contributors for the Covered Software under Section
254 | 2.1 of this License shall terminate.
255 |
256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257 | end user license agreements (excluding distributors and resellers) which
258 | have been validly granted by You or Your distributors under this License
259 | prior to termination shall survive termination.
260 |
261 | ************************************************************************
262 | * *
263 | * 6. Disclaimer of Warranty *
264 | * ------------------------- *
265 | * *
266 | * Covered Software is provided under this License on an "as is" *
267 | * basis, without warranty of any kind, either expressed, implied, or *
268 | * statutory, including, without limitation, warranties that the *
269 | * Covered Software is free of defects, merchantable, fit for a *
270 | * particular purpose or non-infringing. The entire risk as to the *
271 | * quality and performance of the Covered Software is with You. *
272 | * Should any Covered Software prove defective in any respect, You *
273 | * (not any Contributor) assume the cost of any necessary servicing, *
274 | * repair, or correction. This disclaimer of warranty constitutes an *
275 | * essential part of this License. No use of any Covered Software is *
276 | * authorized under this License except under this disclaimer. *
277 | * *
278 | ************************************************************************
279 |
280 | ************************************************************************
281 | * *
282 | * 7. Limitation of Liability *
283 | * -------------------------- *
284 | * *
285 | * Under no circumstances and under no legal theory, whether tort *
286 | * (including negligence), contract, or otherwise, shall any *
287 | * Contributor, or anyone who distributes Covered Software as *
288 | * permitted above, be liable to You for any direct, indirect, *
289 | * special, incidental, or consequential damages of any character *
290 | * including, without limitation, damages for lost profits, loss of *
291 | * goodwill, work stoppage, computer failure or malfunction, or any *
292 | * and all other commercial damages or losses, even if such party *
293 | * shall have been informed of the possibility of such damages. This *
294 | * limitation of liability shall not apply to liability for death or *
295 | * personal injury resulting from such party's negligence to the *
296 | * extent applicable law prohibits such limitation. Some *
297 | * jurisdictions do not allow the exclusion or limitation of *
298 | * incidental or consequential damages, so this exclusion and *
299 | * limitation may not apply to You. *
300 | * *
301 | ************************************************************************
302 |
303 | 8. Litigation
304 | -------------
305 |
306 | Any litigation relating to this License may be brought only in the
307 | courts of a jurisdiction where the defendant maintains its principal
308 | place of business and such litigation shall be governed by laws of that
309 | jurisdiction, without reference to its conflict-of-law provisions.
310 | Nothing in this Section shall prevent a party's ability to bring
311 | cross-claims or counter-claims.
312 |
313 | 9. Miscellaneous
314 | ----------------
315 |
316 | This License represents the complete agreement concerning the subject
317 | matter hereof. If any provision of this License is held to be
318 | unenforceable, such provision shall be reformed only to the extent
319 | necessary to make it enforceable. Any law or regulation which provides
320 | that the language of a contract shall be construed against the drafter
321 | shall not be used to construe this License against a Contributor.
322 |
323 | 10. Versions of the License
324 | ---------------------------
325 |
326 | 10.1. New Versions
327 |
328 | Mozilla Foundation is the license steward. Except as provided in Section
329 | 10.3, no one other than the license steward has the right to modify or
330 | publish new versions of this License. Each version will be given a
331 | distinguishing version number.
332 |
333 | 10.2. Effect of New Versions
334 |
335 | You may distribute the Covered Software under the terms of the version
336 | of the License under which You originally received the Covered Software,
337 | or under the terms of any subsequent version published by the license
338 | steward.
339 |
340 | 10.3. Modified Versions
341 |
342 | If you create software not governed by this License, and you want to
343 | create a new license for such software, you may create and use a
344 | modified version of this License if you rename the license and remove
345 | any references to the name of the license steward (except to note that
346 | such modified license differs from this License).
347 |
348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary
349 | Licenses
350 |
351 | If You choose to distribute Source Code Form that is Incompatible With
352 | Secondary Licenses under the terms of this version of the License, the
353 | notice described in Exhibit B of this License must be attached.
354 |
355 | Exhibit A - Source Code Form License Notice
356 | -------------------------------------------
357 |
358 | This Source Code Form is subject to the terms of the Mozilla Public
359 | License, v. 2.0. If a copy of the MPL was not distributed with this
360 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
361 |
362 | If it is not possible or desirable to put the notice in a particular
363 | file, then You may include the notice in a location (such as a LICENSE
364 | file in a relevant directory) where a recipient would be likely to look
365 | for such a notice.
366 |
367 | You may add additional accurate notices of copyright ownership.
368 |
369 | Exhibit B - "Incompatible With Secondary Licenses" Notice
370 | ---------------------------------------------------------
371 |
372 | This Source Code Form is "Incompatible With Secondary Licenses", as
373 | defined by the Mozilla Public License, v. 2.0.
374 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DelphiHookUtils
2 |
3 | 
4 | 
5 | 
6 | 
7 |
8 | [English](./README.md) | [Chinese](./README.zh-CN.md)
9 |
10 | DelphiHookUtils is a utility library for code hooking, inspired by wr960204's [delphi-hook-library](https://code.google.com/p/delphi-hook-library). This library replaces BeaEngine with [LDE64](https://github.com/BeaEngine/lde64) to reduce size, along with additional modifications and improvements.
11 |
12 | ## Features
13 | * Support **x86** and **x64** architecture.
14 | * Support hooking interfaces methods by **MethodIndex**.
15 | * Support hooking Object Method.
16 | * Support Delphi 7-12 x86/x64 for Win.
17 | * Support Lazarus/FPC x86/x64 for Win.
18 |
19 | ## Installation: Manual
20 | To install the DelphiHookUtils binding, follow these steps:
21 |
22 | 1. Clone the repository:
23 | ```sh
24 | git clone https://github.com/delphilite/DelphiHookUtils.git
25 | ```
26 |
27 | 2. Add the DelphiHookUtils\Source directory to the project or IDE's search path.
28 |
29 | ## Installation: Delphinus-Support
30 | DelphiHookUtils should now be listed in [Delphinus package manager](https://github.com/Memnarch/Delphinus/wiki/Installing-Delphinus).
31 |
32 | Be sure to restart Delphi after installing via Delphinus otherwise the units may not be found in your test projects.
33 |
34 | ## Usage
35 | For more examples, refer to the ones under the Demos folder in the library.
36 |
37 | ## Documentation
38 | For more information, refer to the wiki documentation below.
39 |
40 | 1. [Windows API Hooking Techniques](https://en.wikipedia.org/wiki/Hooking) - General overview of hooking methods in software.
41 | 2. [Microsoft Detours](https://github.com/microsoft/Detours/wiki) - Microsoft's library for intercepting Win32 functions.
42 | 3. [MahdiSafsafi DDetours](https://github.com/MahdiSafsafi/DDetours/wiki) - MahdiSafsafi's library for intercepting Win32 functions.
43 |
44 | ## Contributing
45 | Contributions are welcome! Please fork this repository and submit pull requests with your improvements.
46 |
47 | ## License
48 | This project is licensed under the Mozilla Public License 2.0. See the [LICENSE](LICENSE) file for details.
49 |
--------------------------------------------------------------------------------
/README.zh-CN.md:
--------------------------------------------------------------------------------
1 | # DelphiHookUtils
2 |
3 | 
4 | 
5 | 
6 | 
7 |
8 | [English](./README.md) | [Chinese](./README.zh-CN.md)
9 |
10 | Delphi API Hook 工具项目
11 |
12 | ## 由来
13 |
14 | 国庆帝都雾霾,一直闷家里发霉,也终于有时间搞搞自己的东东了!
15 |
16 | 年初基于 wr960204 武稀松大哥的 HookUtils 写了个 x64 的东东,效果很 8 错,不过呢,这个实现基于 BeaEngine 的静态库,额外胖了几百 K,对于我这只有“洁癖”的程序员,着实不爽!
17 |
18 | 之前关注过 BeaEngine 官网还有个 LDE64(Length Disassembler Engine)的东东,事实上对于武大哥那份 Hook 的实现,BeaEngine 只是为了查找足够的“代码间隙”,其实单个 LDE 应该是 ok 的!
19 |
20 | 遂,花了两天时间搞了这个东东:
21 |
22 | [https://github.com/delphilite/DelphiHookUtils](https://github.com/delphilite/DelphiHookUtils)
23 |
24 | ## 实现
25 |
26 | 基于 LDE64 相对 BeaEngine 的优势非常明显,新 HookUtils 代码编译大约 10K 左右,相对武大哥“原版”,新版 HookUtils 主要修改:
27 |
28 | 1. 参考 wr960204 武稀松 的原始实现:
29 | [https://code.google.com/p/delphi-hook-library](https://code.google.com/p/delphi-hook-library)
30 | 2. 修改 BeaEngine 引擎为 LDE64 长度反编译引擎,大幅降低大小
31 | [https://github.com/BeaEngine/lde64](https://github.com/BeaEngine/lde64)
32 | 3. 去除原始实现对多线程冻结的处理,通常建议 Hook/Unhook 放到单元初始化、析构中做,否则可能因改写内存没挂起其他线程造成错误
33 | 4. 由 HookUtils 中拆分 COM 相关函数至 HookIntfs 单元
34 |
35 | ## 其他
36 |
37 | 初步 Delphi 2007-12, Lazarus/Typhon/FPC/FMX x86/x64 for Win 一切正常,大家有问题及时反馈 !?
38 |
--------------------------------------------------------------------------------
/Source/HookIntfs.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Source/HookIntfs.pas
--------------------------------------------------------------------------------
/Source/HookUtils.32.inc:
--------------------------------------------------------------------------------
1 | defLde64ShellCode: array[0..7744] of byte = (
2 | $55, $83, $EC, $27, $89, $E5, $51, $52, $56, $E8, $80, $10, $00, $00, $60, $11,
3 | $00, $00, $5C, $11, $00, $00, $58, $11, $00, $00, $54, $11, $00, $00, $64, $11,
4 | $00, $00, $9C, $11, $00, $00, $88, $11, $00, $00, $84, $11, $00, $00, $40, $11,
5 | $00, $00, $3C, $11, $00, $00, $38, $11, $00, $00, $34, $11, $00, $00, $44, $11,
6 | $00, $00, $7C, $11, $00, $00, $68, $11, $00, $00, $39, $1A, $00, $00, $20, $11,
7 | $00, $00, $1C, $11, $00, $00, $18, $11, $00, $00, $14, $11, $00, $00, $24, $11,
8 | $00, $00, $5C, $11, $00, $00, $48, $11, $00, $00, $44, $11, $00, $00, $00, $11,
9 | $00, $00, $FC, $10, $00, $00, $F8, $10, $00, $00, $F4, $10, $00, $00, $04, $11,
10 | $00, $00, $3C, $11, $00, $00, $28, $11, $00, $00, $24, $11, $00, $00, $E0, $10,
11 | $00, $00, $DC, $10, $00, $00, $D8, $10, $00, $00, $D4, $10, $00, $00, $E4, $10,
12 | $00, $00, $1C, $11, $00, $00, $A6, $11, $00, $00, $04, $11, $00, $00, $C0, $10,
13 | $00, $00, $BC, $10, $00, $00, $B8, $10, $00, $00, $B4, $10, $00, $00, $C4, $10,
14 | $00, $00, $FC, $10, $00, $00, $86, $11, $00, $00, $E4, $10, $00, $00, $A0, $10,
15 | $00, $00, $9C, $10, $00, $00, $98, $10, $00, $00, $94, $10, $00, $00, $A4, $10,
16 | $00, $00, $DC, $10, $00, $00, $66, $11, $00, $00, $C4, $10, $00, $00, $80, $10,
17 | $00, $00, $7C, $10, $00, $00, $78, $10, $00, $00, $74, $10, $00, $00, $84, $10,
18 | $00, $00, $BC, $10, $00, $00, $46, $11, $00, $00, $A4, $10, $00, $00, $10, $11,
19 | $00, $00, $0C, $11, $00, $00, $08, $11, $00, $00, $04, $11, $00, $00, $00, $11,
20 | $00, $00, $FC, $10, $00, $00, $F8, $10, $00, $00, $F4, $10, $00, $00, $C4, $10,
21 | $00, $00, $C0, $10, $00, $00, $BC, $10, $00, $00, $B8, $10, $00, $00, $B4, $10,
22 | $00, $00, $B0, $10, $00, $00, $AC, $10, $00, $00, $A8, $10, $00, $00, $30, $10,
23 | $00, $00, $2C, $10, $00, $00, $28, $10, $00, $00, $24, $10, $00, $00, $20, $10,
24 | $00, $00, $1C, $10, $00, $00, $18, $10, $00, $00, $14, $10, $00, $00, $10, $10,
25 | $00, $00, $0C, $10, $00, $00, $08, $10, $00, $00, $04, $10, $00, $00, $00, $10,
26 | $00, $00, $FC, $0F, $00, $00, $F8, $0F, $00, $00, $F4, $0F, $00, $00, $F0, $0F,
27 | $00, $00, $EC, $0F, $00, $00, $0E, $11, $00, $00, $D4, $0F, $00, $00, $AE, $10,
28 | $00, $00, $AA, $10, $00, $00, $BF, $17, $00, $00, $EC, $17, $00, $00, $01, $12,
29 | $00, $00, $A4, $11, $00, $00, $CC, $0F, $00, $00, $2F, $10, $00, $00, $C0, $0F,
30 | $00, $00, $BC, $0F, $00, $00, $B8, $0F, $00, $00, $B4, $0F, $00, $00, $B4, $0F,
31 | $00, $00, $B0, $0F, $00, $00, $AC, $0F, $00, $00, $A8, $0F, $00, $00, $A4, $0F,
32 | $00, $00, $A0, $0F, $00, $00, $9C, $0F, $00, $00, $98, $0F, $00, $00, $94, $0F,
33 | $00, $00, $90, $0F, $00, $00, $8C, $0F, $00, $00, $88, $0F, $00, $00, $84, $0F,
34 | $00, $00, $80, $0F, $00, $00, $7C, $0F, $00, $00, $78, $0F, $00, $00, $DB, $0F,
35 | $00, $00, $E6, $11, $00, $00, $CC, $11, $00, $00, $CF, $0F, $00, $00, $50, $0F,
36 | $00, $00, $4C, $0F, $00, $00, $48, $0F, $00, $00, $44, $0F, $00, $00, $40, $0F,
37 | $00, $00, $3C, $0F, $00, $00, $38, $0F, $00, $00, $34, $0F, $00, $00, $30, $0F,
38 | $00, $00, $2C, $0F, $00, $00, $28, $0F, $00, $00, $4E, $11, $00, $00, $30, $0F,
39 | $00, $00, $2C, $0F, $00, $00, $28, $0F, $00, $00, $24, $0F, $00, $00, $20, $0F,
40 | $00, $00, $1C, $0F, $00, $00, $18, $0F, $00, $00, $14, $0F, $00, $00, $10, $0F,
41 | $00, $00, $0C, $0F, $00, $00, $C3, $10, $00, $00, $04, $0F, $00, $00, $00, $0F,
42 | $00, $00, $FC, $0E, $00, $00, $F8, $0E, $00, $00, $F4, $0E, $00, $00, $44, $10,
43 | $00, $00, $50, $10, $00, $00, $3C, $10, $00, $00, $48, $10, $00, $00, $E0, $0E,
44 | $00, $00, $DC, $0E, $00, $00, $D8, $0E, $00, $00, $D4, $0E, $00, $00, $D4, $0E,
45 | $00, $00, $0C, $0F, $00, $00, $C8, $0E, $00, $00, $C4, $0E, $00, $00, $C0, $0E,
46 | $00, $00, $BC, $0E, $00, $00, $B8, $0E, $00, $00, $B4, $0E, $00, $00, $B4, $0E,
47 | $00, $00, $B0, $0E, $00, $00, $AC, $0E, $00, $00, $A8, $0E, $00, $00, $A4, $0E,
48 | $00, $00, $A0, $0E, $00, $00, $9C, $0E, $00, $00, $98, $0E, $00, $00, $E0, $0E,
49 | $00, $00, $DC, $0E, $00, $00, $D8, $0E, $00, $00, $D4, $0E, $00, $00, $D0, $0E,
50 | $00, $00, $CC, $0E, $00, $00, $C8, $0E, $00, $00, $C4, $0E, $00, $00, $DB, $0E,
51 | $00, $00, $D7, $0E, $00, $00, $B7, $0F, $00, $00, $64, $0E, $00, $00, $86, $0F,
52 | $00, $00, $82, $0F, $00, $00, $C3, $0E, $00, $00, $45, $0F, $00, $00, $6C, $0F,
53 | $00, $00, $4C, $0E, $00, $00, $97, $0F, $00, $00, $44, $0E, $00, $00, $40, $0E,
54 | $00, $00, $40, $0E, $00, $00, $68, $0E, $00, $00, $34, $0E, $00, $00, $20, $0E,
55 | $00, $00, $1C, $0E, $00, $00, $18, $0E, $00, $00, $14, $0E, $00, $00, $2B, $0F,
56 | $00, $00, $27, $0F, $00, $00, $18, $0E, $00, $00, $14, $0E, $00, $00, $8A, $17,
57 | $00, $00, $BC, $17, $00, $00, $51, $18, $00, $00, $AF, $18, $00, $00, $2A, $19,
58 | $00, $00, $78, $19, $00, $00, $DE, $19, $00, $00, $31, $1A, $00, $00, $F4, $0D,
59 | $00, $00, $F0, $0D, $00, $00, $EC, $0D, $00, $00, $E8, $0D, $00, $00, $E4, $0D,
60 | $00, $00, $E0, $0D, $00, $00, $DC, $0D, $00, $00, $D8, $0D, $00, $00, $10, $0E,
61 | $00, $00, $0C, $0E, $00, $00, $C6, $0F, $00, $00, $C8, $0D, $00, $00, $C0, $0D,
62 | $00, $00, $BC, $0D, $00, $00, $B8, $0D, $00, $00, $B4, $0D, $00, $00, $7E, $0E,
63 | $00, $00, $AC, $0D, $00, $00, $F3, $15, $00, $00, $36, $16, $00, $00, $A0, $0D,
64 | $00, $00, $9C, $0D, $00, $00, $2C, $10, $00, $00, $5A, $10, $00, $00, $90, $0D,
65 | $00, $00, $8C, $0D, $00, $00, $88, $0D, $00, $00, $84, $0D, $00, $00, $80, $0D,
66 | $00, $00, $7C, $0D, $00, $00, $A8, $10, $00, $00, $C5, $10, $00, $00, $E2, $10,
67 | $00, $00, $FF, $10, $00, $00, $58, $0D, $00, $00, $54, $0D, $00, $00, $BE, $0F,
68 | $00, $00, $5C, $0D, $00, $00, $58, $0D, $00, $00, $54, $0D, $00, $00, $50, $0D,
69 | $00, $00, $4C, $0D, $00, $00, $A6, $0F, $00, $00, $44, $0D, $00, $00, $9E, $0F,
70 | $00, $00, $2C, $0D, $00, $00, $38, $0D, $00, $00, $92, $0F, $00, $00, $20, $0D,
71 | $00, $00, $1C, $0D, $00, $00, $18, $0D, $00, $00, $14, $0D, $00, $00, $10, $0D,
72 | $00, $00, $0C, $0D, $00, $00, $08, $0D, $00, $00, $04, $0D, $00, $00, $85, $14,
73 | $00, $00, $FC, $0C, $00, $00, $F8, $0C, $00, $00, $F4, $0C, $00, $00, $F0, $0C,
74 | $00, $00, $EC, $0C, $00, $00, $E8, $0C, $00, $00, $E4, $0C, $00, $00, $28, $0E,
75 | $00, $00, $24, $0E, $00, $00, $20, $0E, $00, $00, $1C, $0E, $00, $00, $3E, $0F,
76 | $00, $00, $3A, $0F, $00, $00, $36, $0F, $00, $00, $32, $0F, $00, $00, $C0, $0C,
77 | $00, $00, $BC, $0C, $00, $00, $B8, $0C, $00, $00, $B4, $0C, $00, $00, $B0, $0C,
78 | $00, $00, $AC, $0C, $00, $00, $A8, $0C, $00, $00, $A4, $0C, $00, $00, $B0, $0C,
79 | $00, $00, $AC, $0C, $00, $00, $A8, $0C, $00, $00, $A4, $0C, $00, $00, $A0, $0C,
80 | $00, $00, $9C, $0C, $00, $00, $F6, $0E, $00, $00, $F2, $0E, $00, $00, $BC, $15,
81 | $00, $00, $EA, $0E, $00, $00, $DB, $15, $00, $00, $E2, $0E, $00, $00, $DE, $0E,
82 | $00, $00, $DA, $0E, $00, $00, $D6, $0E, $00, $00, $D2, $0E, $00, $00, $60, $0C,
83 | $00, $00, $5C, $0C, $00, $00, $58, $0C, $00, $00, $54, $0C, $00, $00, $50, $0C,
84 | $00, $00, $4C, $0C, $00, $00, $48, $0C, $00, $00, $44, $0C, $00, $00, $40, $0C,
85 | $00, $00, $3C, $0C, $00, $00, $38, $0C, $00, $00, $34, $0C, $00, $00, $30, $0C,
86 | $00, $00, $2C, $0C, $00, $00, $28, $0C, $00, $00, $24, $0C, $00, $00, $20, $0C,
87 | $00, $00, $1C, $0C, $00, $00, $18, $0C, $00, $00, $14, $0C, $00, $00, $10, $0C,
88 | $00, $00, $0C, $0C, $00, $00, $08, $0C, $00, $00, $04, $0C, $00, $00, $00, $0C,
89 | $00, $00, $FC, $0B, $00, $00, $F8, $0B, $00, $00, $F4, $0B, $00, $00, $F0, $0B,
90 | $00, $00, $EC, $0B, $00, $00, $E8, $0B, $00, $00, $E4, $0B, $00, $00, $E0, $0B,
91 | $00, $00, $DC, $0B, $00, $00, $D8, $0B, $00, $00, $D4, $0B, $00, $00, $D0, $0B,
92 | $00, $00, $CC, $0B, $00, $00, $C8, $0B, $00, $00, $C4, $0B, $00, $00, $C0, $0B,
93 | $00, $00, $BC, $0B, $00, $00, $B8, $0B, $00, $00, $B4, $0B, $00, $00, $C9, $0B,
94 | $00, $00, $C5, $0B, $00, $00, $A8, $0B, $00, $00, $A4, $0B, $00, $00, $1B, $0C,
95 | $00, $00, $8E, $10, $00, $00, $15, $11, $00, $00, $9C, $11, $00, $00, $90, $0B,
96 | $00, $00, $8C, $0B, $00, $00, $88, $0B, $00, $00, $94, $0B, $00, $00, $80, $0B,
97 | $00, $00, $7C, $0B, $00, $00, $E6, $0D, $00, $00, $E2, $0D, $00, $00, $70, $0B,
98 | $00, $00, $6C, $0B, $00, $00, $68, $0B, $00, $00, $64, $0B, $00, $00, $B0, $0B,
99 | $00, $00, $AC, $0B, $00, $00, $89, $0C, $00, $00, $85, $0C, $00, $00, $81, $0C,
100 | $00, $00, $7D, $0C, $00, $00, $98, $0B, $00, $00, $94, $0B, $00, $00, $90, $0B,
101 | $00, $00, $8C, $0B, $00, $00, $88, $0B, $00, $00, $84, $0B, $00, $00, $80, $0B,
102 | $00, $00, $7C, $0B, $00, $00, $78, $0B, $00, $00, $74, $0B, $00, $00, $20, $0B,
103 | $00, $00, $1C, $0B, $00, $00, $18, $0B, $00, $00, $14, $0B, $00, $00, $10, $0B,
104 | $00, $00, $0C, $0B, $00, $00, $08, $0B, $00, $00, $04, $0B, $00, $00, $00, $0B,
105 | $00, $00, $FC, $0A, $00, $00, $F8, $0A, $00, $00, $F4, $0A, $00, $00, $F0, $0A,
106 | $00, $00, $EC, $0A, $00, $00, $E8, $0A, $00, $00, $E4, $0A, $00, $00, $F0, $0A,
107 | $00, $00, $EC, $0A, $00, $00, $E8, $0A, $00, $00, $D4, $0A, $00, $00, $4B, $0B,
108 | $00, $00, $CC, $0A, $00, $00, $36, $0D, $00, $00, $32, $0D, $00, $00, $D0, $0A,
109 | $00, $00, $CC, $0A, $00, $00, $C8, $0A, $00, $00, $B4, $0A, $00, $00, $2B, $0B,
110 | $00, $00, $AC, $0A, $00, $00, $68, $11, $00, $00, $A4, $0A, $00, $00, $A0, $0A,
111 | $00, $00, $9C, $0A, $00, $00, $98, $0A, $00, $00, $94, $0A, $00, $00, $90, $0A,
112 | $00, $00, $8C, $0A, $00, $00, $88, $0A, $00, $00, $84, $0A, $00, $00, $80, $0A,
113 | $00, $00, $8C, $0A, $00, $00, $EC, $0E, $00, $00, $74, $0A, $00, $00, $70, $0A,
114 | $00, $00, $6C, $0A, $00, $00, $68, $0A, $00, $00, $64, $0A, $00, $00, $60, $0A,
115 | $00, $00, $5C, $0A, $00, $00, $58, $0A, $00, $00, $54, $0A, $00, $00, $50, $0A,
116 | $00, $00, $4C, $0A, $00, $00, $48, $0A, $00, $00, $D9, $0E, $00, $00, $50, $0A,
117 | $00, $00, $4C, $0A, $00, $00, $48, $0A, $00, $00, $44, $0A, $00, $00, $40, $0A,
118 | $00, $00, $3C, $0A, $00, $00, $38, $0A, $00, $00, $34, $0A, $00, $00, $20, $0A,
119 | $00, $00, $1C, $0A, $00, $00, $18, $0A, $00, $00, $14, $0A, $00, $00, $10, $0A,
120 | $00, $00, $0C, $0A, $00, $00, $A9, $0B, $00, $00, $04, $0A, $00, $00, $00, $0A,
121 | $00, $00, $FC, $09, $00, $00, $F8, $09, $00, $00, $F4, $09, $00, $00, $F0, $09,
122 | $00, $00, $EC, $09, $00, $00, $E8, $09, $00, $00, $E4, $09, $00, $00, $E0, $09,
123 | $00, $00, $DC, $09, $00, $00, $D8, $09, $00, $00, $D4, $09, $00, $00, $D0, $09,
124 | $00, $00, $CC, $09, $00, $00, $69, $0B, $00, $00, $C4, $09, $00, $00, $C0, $09,
125 | $00, $00, $BC, $09, $00, $00, $B8, $09, $00, $00, $B4, $09, $00, $00, $B0, $09,
126 | $00, $00, $AC, $09, $00, $00, $A8, $09, $00, $00, $A4, $09, $00, $00, $FC, $0B,
127 | $00, $00, $9C, $09, $00, $00, $98, $09, $00, $00, $94, $09, $00, $00, $90, $09,
128 | $00, $00, $8C, $09, $00, $00, $88, $09, $00, $00, $84, $09, $00, $00, $80, $09,
129 | $00, $00, $7C, $09, $00, $00, $78, $09, $00, $00, $74, $09, $00, $00, $70, $09,
130 | $00, $00, $6C, $09, $00, $00, $68, $09, $00, $00, $D2, $0B, $00, $00, $60, $09,
131 | $00, $00, $5C, $09, $00, $00, $58, $09, $00, $00, $54, $09, $00, $00, $50, $09,
132 | $00, $00, $4C, $09, $00, $00, $48, $09, $00, $00, $44, $09, $00, $00, $40, $09,
133 | $00, $00, $3C, $09, $00, $00, $38, $09, $00, $00, $34, $09, $00, $00, $9E, $0B,
134 | $00, $00, $9A, $0B, $00, $00, $96, $0B, $00, $00, $92, $0B, $00, $00, $39, $09,
135 | $00, $00, $8A, $0B, $00, $00, $86, $0B, $00, $00, $82, $0B, $00, $00, $29, $09,
136 | $00, $00, $25, $09, $00, $00, $76, $0B, $00, $00, $1D, $09, $00, $00, $6E, $0B,
137 | $00, $00, $6A, $0B, $00, $00, $66, $0B, $00, $00, $62, $0B, $00, $00, $F0, $08,
138 | $00, $00, $EC, $08, $00, $00, $E8, $08, $00, $00, $52, $0B, $00, $00, $F9, $08,
139 | $00, $00, $F5, $08, $00, $00, $F1, $08, $00, $00, $ED, $08, $00, $00, $E9, $08,
140 | $00, $00, $E5, $08, $00, $00, $36, $0B, $00, $00, $32, $0B, $00, $00, $D9, $08,
141 | $00, $00, $D5, $08, $00, $00, $D1, $08, $00, $00, $CD, $08, $00, $00, $1E, $0B,
142 | $00, $00, $1A, $0B, $00, $00, $16, $0B, $00, $00, $12, $0B, $00, $00, $B9, $08,
143 | $00, $00, $B5, $08, $00, $00, $B1, $08, $00, $00, $AD, $08, $00, $00, $A9, $08,
144 | $00, $00, $A5, $08, $00, $00, $F6, $0A, $00, $00, $9D, $08, $00, $00, $99, $08,
145 | $00, $00, $95, $08, $00, $00, $91, $08, $00, $00, $8D, $08, $00, $00, $89, $08,
146 | $00, $00, $85, $08, $00, $00, $81, $08, $00, $00, $7D, $08, $00, $00, $79, $08,
147 | $00, $00, $75, $08, $00, $00, $C6, $0A, $00, $00, $C2, $0A, $00, $00, $BE, $0A,
148 | $00, $00, $BA, $0A, $00, $00, $B6, $0A, $00, $00, $B2, $0A, $00, $00, $AE, $0A,
149 | $00, $00, $AA, $0A, $00, $00, $A6, $0A, $00, $00, $A2, $0A, $00, $00, $9E, $0A,
150 | $00, $00, $9A, $0A, $00, $00, $96, $0A, $00, $00, $92, $0A, $00, $00, $8E, $0A,
151 | $00, $00, $8A, $0A, $00, $00, $86, $0A, $00, $00, $82, $0A, $00, $00, $7E, $0A,
152 | $00, $00, $7A, $0A, $00, $00, $76, $0A, $00, $00, $72, $0A, $00, $00, $6E, $0A,
153 | $00, $00, $6A, $0A, $00, $00, $66, $0A, $00, $00, $62, $0A, $00, $00, $5E, $0A,
154 | $00, $00, $5A, $0A, $00, $00, $56, $0A, $00, $00, $52, $0A, $00, $00, $4E, $0A,
155 | $00, $00, $4A, $0A, $00, $00, $46, $0A, $00, $00, $42, $0A, $00, $00, $3E, $0A,
156 | $00, $00, $3A, $0A, $00, $00, $36, $0A, $00, $00, $32, $0A, $00, $00, $2E, $0A,
157 | $00, $00, $2A, $0A, $00, $00, $26, $0A, $00, $00, $22, $0A, $00, $00, $1E, $0A,
158 | $00, $00, $1A, $0A, $00, $00, $16, $0A, $00, $00, $12, $0A, $00, $00, $0E, $0A,
159 | $00, $00, $0A, $0A, $00, $00, $06, $0A, $00, $00, $02, $0A, $00, $00, $FE, $09,
160 | $00, $00, $FA, $09, $00, $00, $F6, $09, $00, $00, $F2, $09, $00, $00, $EE, $09,
161 | $00, $00, $EA, $09, $00, $00, $E6, $09, $00, $00, $E2, $09, $00, $00, $DE, $09,
162 | $00, $00, $DA, $09, $00, $00, $D6, $09, $00, $00, $D2, $09, $00, $00, $CE, $09,
163 | $00, $00, $CA, $09, $00, $00, $C6, $09, $00, $00, $C2, $09, $00, $00, $BE, $09,
164 | $00, $00, $BA, $09, $00, $00, $B6, $09, $00, $00, $B2, $09, $00, $00, $AE, $09,
165 | $00, $00, $AA, $09, $00, $00, $A6, $09, $00, $00, $A2, $09, $00, $00, $9E, $09,
166 | $00, $00, $9A, $09, $00, $00, $96, $09, $00, $00, $92, $09, $00, $00, $8E, $09,
167 | $00, $00, $8A, $09, $00, $00, $86, $09, $00, $00, $82, $09, $00, $00, $7E, $09,
168 | $00, $00, $7A, $09, $00, $00, $76, $09, $00, $00, $72, $09, $00, $00, $6E, $09,
169 | $00, $00, $6A, $09, $00, $00, $66, $09, $00, $00, $62, $09, $00, $00, $5E, $09,
170 | $00, $00, $5A, $09, $00, $00, $56, $09, $00, $00, $52, $09, $00, $00, $4E, $09,
171 | $00, $00, $4A, $09, $00, $00, $46, $09, $00, $00, $42, $09, $00, $00, $3E, $09,
172 | $00, $00, $3A, $09, $00, $00, $36, $09, $00, $00, $32, $09, $00, $00, $2E, $09,
173 | $00, $00, $2A, $09, $00, $00, $26, $09, $00, $00, $22, $09, $00, $00, $1E, $09,
174 | $00, $00, $1A, $09, $00, $00, $16, $09, $00, $00, $12, $09, $00, $00, $0E, $09,
175 | $00, $00, $0A, $09, $00, $00, $06, $09, $00, $00, $02, $09, $00, $00, $FE, $08,
176 | $00, $00, $FA, $08, $00, $00, $F6, $08, $00, $00, $F2, $08, $00, $00, $EE, $08,
177 | $00, $00, $EA, $08, $00, $00, $E6, $08, $00, $00, $E2, $08, $00, $00, $DE, $08,
178 | $00, $00, $DA, $08, $00, $00, $D6, $08, $00, $00, $D2, $08, $00, $00, $CE, $08,
179 | $00, $00, $CA, $08, $00, $00, $C6, $08, $00, $00, $C2, $08, $00, $00, $BE, $08,
180 | $00, $00, $BA, $08, $00, $00, $B6, $08, $00, $00, $B2, $08, $00, $00, $AE, $08,
181 | $00, $00, $AA, $08, $00, $00, $A6, $08, $00, $00, $A2, $08, $00, $00, $9E, $08,
182 | $00, $00, $9A, $08, $00, $00, $96, $08, $00, $00, $92, $08, $00, $00, $8E, $08,
183 | $00, $00, $8A, $08, $00, $00, $86, $08, $00, $00, $82, $08, $00, $00, $7E, $08,
184 | $00, $00, $7A, $08, $00, $00, $76, $08, $00, $00, $72, $08, $00, $00, $6E, $08,
185 | $00, $00, $6A, $08, $00, $00, $66, $08, $00, $00, $62, $08, $00, $00, $5E, $08,
186 | $00, $00, $5A, $08, $00, $00, $56, $08, $00, $00, $52, $08, $00, $00, $4E, $08,
187 | $00, $00, $4A, $08, $00, $00, $46, $08, $00, $00, $42, $08, $00, $00, $3E, $08,
188 | $00, $00, $3A, $08, $00, $00, $36, $08, $00, $00, $32, $08, $00, $00, $2E, $08,
189 | $00, $00, $2A, $08, $00, $00, $26, $08, $00, $00, $22, $08, $00, $00, $1E, $08,
190 | $00, $00, $1A, $08, $00, $00, $16, $08, $00, $00, $12, $08, $00, $00, $2F, $07,
191 | $00, $00, $2B, $07, $00, $00, $06, $08, $00, $00, $02, $08, $00, $00, $FE, $07,
192 | $00, $00, $FA, $07, $00, $00, $F6, $07, $00, $00, $F2, $07, $00, $00, $EE, $07,
193 | $00, $00, $EA, $07, $00, $00, $E6, $07, $00, $00, $E2, $07, $00, $00, $DE, $07,
194 | $00, $00, $DA, $07, $00, $00, $D6, $07, $00, $00, $D2, $07, $00, $00, $CE, $07,
195 | $00, $00, $CA, $07, $00, $00, $C6, $07, $00, $00, $C2, $07, $00, $00, $BE, $07,
196 | $00, $00, $BA, $07, $00, $00, $B6, $07, $00, $00, $B2, $07, $00, $00, $6B, $05,
197 | $00, $00, $67, $05, $00, $00, $63, $05, $00, $00, $5F, $05, $00, $00, $5B, $05,
198 | $00, $00, $57, $05, $00, $00, $53, $05, $00, $00, $24, $05, $00, $00, $8E, $07,
199 | $00, $00, $8A, $07, $00, $00, $86, $07, $00, $00, $82, $07, $00, $00, $3B, $05,
200 | $00, $00, $37, $05, $00, $00, $33, $05, $00, $00, $2F, $05, $00, $00, $6E, $07,
201 | $00, $00, $6A, $07, $00, $00, $66, $07, $00, $00, $62, $07, $00, $00, $5E, $07,
202 | $00, $00, $5A, $07, $00, $00, $56, $07, $00, $00, $52, $07, $00, $00, $0B, $05,
203 | $00, $00, $07, $05, $00, $00, $03, $05, $00, $00, $42, $07, $00, $00, $3E, $07,
204 | $00, $00, $3A, $07, $00, $00, $36, $07, $00, $00, $32, $07, $00, $00, $2E, $07,
205 | $00, $00, $2A, $07, $00, $00, $26, $07, $00, $00, $22, $07, $00, $00, $1E, $07,
206 | $00, $00, $1A, $07, $00, $00, $16, $07, $00, $00, $12, $07, $00, $00, $0E, $07,
207 | $00, $00, $0A, $07, $00, $00, $06, $07, $00, $00, $02, $07, $00, $00, $FE, $06,
208 | $00, $00, $FA, $06, $00, $00, $F6, $06, $00, $00, $F2, $06, $00, $00, $EE, $06,
209 | $00, $00, $EA, $06, $00, $00, $E6, $06, $00, $00, $E2, $06, $00, $00, $DE, $06,
210 | $00, $00, $DA, $06, $00, $00, $D6, $06, $00, $00, $D2, $06, $00, $00, $8B, $04,
211 | $00, $00, $87, $04, $00, $00, $83, $04, $00, $00, $C2, $06, $00, $00, $BE, $06,
212 | $00, $00, $BA, $06, $00, $00, $B6, $06, $00, $00, $B2, $06, $00, $00, $AE, $06,
213 | $00, $00, $AA, $06, $00, $00, $A6, $06, $00, $00, $A2, $06, $00, $00, $9E, $06,
214 | $00, $00, $9A, $06, $00, $00, $96, $06, $00, $00, $92, $06, $00, $00, $8E, $06,
215 | $00, $00, $8A, $06, $00, $00, $86, $06, $00, $00, $82, $06, $00, $00, $7E, $06,
216 | $00, $00, $7A, $06, $00, $00, $76, $06, $00, $00, $72, $06, $00, $00, $6E, $06,
217 | $00, $00, $6A, $06, $00, $00, $66, $06, $00, $00, $62, $06, $00, $00, $5E, $06,
218 | $00, $00, $5A, $06, $00, $00, $56, $06, $00, $00, $52, $06, $00, $00, $0B, $04,
219 | $00, $00, $07, $04, $00, $00, $03, $04, $00, $00, $FF, $03, $00, $00, $3E, $06,
220 | $00, $00, $3A, $06, $00, $00, $36, $06, $00, $00, $32, $06, $00, $00, $2E, $06,
221 | $00, $00, $2A, $06, $00, $00, $26, $06, $00, $00, $22, $06, $00, $00, $1E, $06,
222 | $00, $00, $1A, $06, $00, $00, $16, $06, $00, $00, $12, $06, $00, $00, $0E, $06,
223 | $00, $00, $0A, $06, $00, $00, $06, $06, $00, $00, $02, $06, $00, $00, $FE, $05,
224 | $00, $00, $FA, $05, $00, $00, $F6, $05, $00, $00, $F2, $05, $00, $00, $EE, $05,
225 | $00, $00, $EA, $05, $00, $00, $E6, $05, $00, $00, $E2, $05, $00, $00, $DE, $05,
226 | $00, $00, $DA, $05, $00, $00, $D6, $05, $00, $00, $D2, $05, $00, $00, $CE, $05,
227 | $00, $00, $CA, $05, $00, $00, $C6, $05, $00, $00, $C2, $05, $00, $00, $BE, $05,
228 | $00, $00, $BA, $05, $00, $00, $B6, $05, $00, $00, $B2, $05, $00, $00, $AE, $05,
229 | $00, $00, $AA, $05, $00, $00, $A6, $05, $00, $00, $A2, $05, $00, $00, $9E, $05,
230 | $00, $00, $9A, $05, $00, $00, $96, $05, $00, $00, $92, $05, $00, $00, $8E, $05,
231 | $00, $00, $8A, $05, $00, $00, $86, $05, $00, $00, $82, $05, $00, $00, $7E, $05,
232 | $00, $00, $7A, $05, $00, $00, $76, $05, $00, $00, $72, $05, $00, $00, $6E, $05,
233 | $00, $00, $6A, $05, $00, $00, $66, $05, $00, $00, $62, $05, $00, $00, $5E, $05,
234 | $00, $00, $5A, $05, $00, $00, $56, $05, $00, $00, $52, $05, $00, $00, $4E, $05,
235 | $00, $00, $4A, $05, $00, $00, $46, $05, $00, $00, $42, $05, $00, $00, $3E, $05,
236 | $00, $00, $3A, $05, $00, $00, $36, $05, $00, $00, $32, $05, $00, $00, $2E, $05,
237 | $00, $00, $2A, $05, $00, $00, $26, $05, $00, $00, $22, $05, $00, $00, $1E, $05,
238 | $00, $00, $1A, $05, $00, $00, $16, $05, $00, $00, $12, $05, $00, $00, $0E, $05,
239 | $00, $00, $0A, $05, $00, $00, $06, $05, $00, $00, $02, $05, $00, $00, $FE, $04,
240 | $00, $00, $FA, $04, $00, $00, $F6, $04, $00, $00, $F2, $04, $00, $00, $EE, $04,
241 | $00, $00, $EA, $04, $00, $00, $E6, $04, $00, $00, $E2, $04, $00, $00, $DE, $04,
242 | $00, $00, $DA, $04, $00, $00, $D6, $04, $00, $00, $D2, $04, $00, $00, $CE, $04,
243 | $00, $00, $CA, $04, $00, $00, $C6, $04, $00, $00, $C2, $04, $00, $00, $BE, $04,
244 | $00, $00, $BA, $04, $00, $00, $B6, $04, $00, $00, $B2, $04, $00, $00, $AE, $04,
245 | $00, $00, $AA, $04, $00, $00, $A6, $04, $00, $00, $A2, $04, $00, $00, $9E, $04,
246 | $00, $00, $9A, $04, $00, $00, $96, $04, $00, $00, $92, $04, $00, $00, $8E, $04,
247 | $00, $00, $8A, $04, $00, $00, $86, $04, $00, $00, $82, $04, $00, $00, $7E, $04,
248 | $00, $00, $7A, $04, $00, $00, $76, $04, $00, $00, $72, $04, $00, $00, $6E, $04,
249 | $00, $00, $6A, $04, $00, $00, $66, $04, $00, $00, $62, $04, $00, $00, $5E, $04,
250 | $00, $00, $5A, $04, $00, $00, $56, $04, $00, $00, $52, $04, $00, $00, $4E, $04,
251 | $00, $00, $4A, $04, $00, $00, $46, $04, $00, $00, $42, $04, $00, $00, $3E, $04,
252 | $00, $00, $3A, $04, $00, $00, $36, $04, $00, $00, $32, $04, $00, $00, $2E, $04,
253 | $00, $00, $2A, $04, $00, $00, $26, $04, $00, $00, $22, $04, $00, $00, $1E, $04,
254 | $00, $00, $1A, $04, $00, $00, $16, $04, $00, $00, $12, $04, $00, $00, $0E, $04,
255 | $00, $00, $0A, $04, $00, $00, $06, $04, $00, $00, $02, $04, $00, $00, $FE, $03,
256 | $00, $00, $FA, $03, $00, $00, $F6, $03, $00, $00, $F2, $03, $00, $00, $EE, $03,
257 | $00, $00, $EA, $03, $00, $00, $E6, $03, $00, $00, $E2, $03, $00, $00, $DE, $03,
258 | $00, $00, $DA, $03, $00, $00, $D6, $03, $00, $00, $D2, $03, $00, $00, $21, $01,
259 | $00, $00, $1D, $01, $00, $00, $19, $01, $00, $00, $15, $01, $00, $00, $12, $01,
260 | $00, $00, $36, $01, $00, $00, $3D, $01, $00, $00, $05, $01, $00, $00, $01, $01,
261 | $00, $00, $FD, $00, $00, $00, $F9, $00, $00, $00, $F5, $00, $00, $00, $F2, $00,
262 | $00, $00, $ED, $00, $00, $00, $E9, $00, $00, $00, $E5, $00, $00, $00, $E1, $00,
263 | $00, $00, $DD, $00, $00, $00, $D9, $00, $00, $00, $D5, $00, $00, $00, $D2, $00,
264 | $00, $00, $CD, $00, $00, $00, $C9, $00, $00, $00, $C5, $00, $00, $00, $C1, $00,
265 | $00, $00, $BD, $00, $00, $00, $B9, $00, $00, $00, $B5, $00, $00, $00, $B1, $00,
266 | $00, $00, $AD, $00, $00, $00, $A9, $00, $00, $00, $A5, $00, $00, $00, $5E, $FF,
267 | $75, $2F, $8F, $45, $23, $C6, $45, $22, $00, $C7, $45, $02, $20, $00, $00, $00,
268 | $C7, $45, $06, $20, $00, $00, $00, $83, $7D, $33, $40, $75, $07, $C7, $45, $06,
269 | $40, $00, $00, $00, $8B, $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03, $00, $83,
270 | $C0, $04, $FF, $D0, $83, $F8, $FF, $74, $06, $8B, $45, $23, $2B, $45, $2F, $5E,
271 | $5A, $59, $83, $C4, $27, $5D, $C2, $08, $00, $C7, $45, $1A, $00, $00, $00, $00,
272 | $8B, $45, $23, $0F, $B6, $40, $01, $25, $C7, $00, $00, $00, $B9, $40, $00, $00,
273 | $00, $31, $D2, $F7, $F1, $89, $45, $0A, $83, $F8, $01, $75, $04, $83, $45, $1A,
274 | $01, $83, $F8, $02, $75, $04, $83, $45, $1A, $04, $89, $55, $0E, $C1, $E0, $05,
275 | $01, $F0, $05, $00, $10, $00, $00, $8D, $04, $90, $03, $00, $83, $C0, $04, $FF,
276 | $D0, $C3, $8B, $45, $23, $0F, $B6, $40, $01, $83, $E0, $38, $C1, $E8, $03, $89,
277 | $45, $16, $C3, $C3, $83, $7D, $06, $20, $7C, $21, $83, $45, $1A, $01, $8B, $45,
278 | $23, $0F, $B6, $40, $02, $83, $E0, $07, $89, $45, $12, $83, $7D, $12, $05, $75,
279 | $0A, $83, $7D, $0A, $00, $75, $04, $83, $45, $1A, $04, $C3, $83, $7D, $06, $20,
280 | $7C, $04, $83, $45, $1A, $04, $C3, $83, $7D, $06, $10, $75, $04, $83, $45, $1A,
281 | $02, $C3, $E8, $62, $FF, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23,
282 | $02, $C3, $FF, $45, $23, $C3, $83, $45, $23, $02, $C3, $83, $7D, $02, $10, $75,
283 | $06, $E8, $DC, $FF, $FF, $FF, $C3, $E8, $44, $02, $00, $00, $C3, $83, $7D, $02,
284 | $10, $75, $09, $E8, $CA, $FF, $FF, $FF, $FF, $45, $23, $C3, $E8, $2F, $02, $00,
285 | $00, $C3, $83, $7D, $33, $40, $75, $06, $E8, $23, $02, $00, $00, $C3, $FF, $45,
286 | $23, $C3, $83, $7D, $02, $20, $7C, $05, $83, $45, $23, $05, $C3, $83, $45, $23,
287 | $03, $C3, $83, $7D, $02, $40, $75, $05, $83, $45, $23, $09, $C3, $83, $7D, $02,
288 | $20, $75, $05, $83, $45, $23, $05, $C3, $83, $45, $23, $03, $C3, $E8, $80, $FF,
289 | $FF, $FF, $FF, $45, $23, $C3, $83, $7D, $33, $40, $75, $22, $C7, $45, $02, $40,
290 | $00, $00, $00, $FF, $45, $23, $8B, $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03,
291 | $00, $83, $C0, $04, $FF, $D0, $C7, $45, $02, $20, $00, $00, $00, $C3, $FF, $45,
292 | $23, $C3, $83, $7D, $33, $40, $75, $23, $FF, $45, $23, $FE, $45, $22, $80, $7D,
293 | $22, $0F, $75, $06, $E8, $A7, $01, $00, $00, $C3, $8B, $45, $23, $0F, $B6, $08,
294 | $8D, $04, $8E, $03, $00, $83, $C0, $04, $FF, $D0, $C3, $83, $45, $23, $01, $C3,
295 | $FF, $45, $23, $FE, $45, $22, $80, $7D, $22, $0F, $75, $06, $E8, $7F, $01, $00,
296 | $00, $C3, $8B, $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03, $00, $83, $C0, $04,
297 | $FF, $D0, $C3, $83, $7D, $02, $20, $7C, $0A, $E8, $F4, $FE, $FF, $FF, $83, $45,
298 | $23, $04, $C3, $E8, $EA, $FE, $FF, $FF, $83, $45, $23, $02, $C3, $83, $7D, $33,
299 | $40, $75, $06, $E8, $48, $01, $00, $00, $C3, $83, $45, $23, $02, $C3, $83, $45,
300 | $23, $04, $C3, $83, $45, $23, $05, $C3, $83, $7D, $33, $40, $75, $06, $E8, $2D,
301 | $01, $00, $00, $C3, $E8, $B9, $FE, $FF, $FF, $C3, $E8, $1A, $FE, $FF, $FF, $83,
302 | $7D, $0A, $03, $75, $06, $E8, $A8, $FE, $FF, $FF, $C3, $E8, $10, $01, $00, $00,
303 | $C3, $83, $45, $23, $03, $C3, $83, $7D, $06, $40, $75, $05, $83, $45, $23, $09,
304 | $C3, $83, $45, $23, $05, $C3, $83, $7D, $06, $10, $75, $05, $83, $45, $23, $03,
305 | $C3, $83, $7D, $06, $20, $75, $05, $83, $45, $23, $05, $C3, $83, $45, $23, $09,
306 | $C3, $80, $7D, $00, $01, $75, $06, $E8, $66, $FE, $FF, $FF, $C3, $E8, $CE, $00,
307 | $00, $00, $C3, $80, $7D, $00, $01, $75, $06, $E8, $54, $FE, $FF, $FF, $C3, $80,
308 | $7D, $01, $01, $75, $06, $E8, $48, $FE, $FF, $FF, $C3, $83, $7D, $02, $10, $75,
309 | $06, $E8, $3C, $FE, $FF, $FF, $C3, $E8, $A4, $00, $00, $00, $C3, $83, $7D, $33,
310 | $40, $75, $06, $E8, $98, $00, $00, $00, $C3, $83, $7D, $02, $20, $75, $05, $83,
311 | $45, $23, $07, $C3, $83, $45, $23, $05, $C3, $C3, $83, $7D, $02, $10, $74, $10,
312 | $E8, $74, $FD, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $06, $C3,
313 | $E8, $64, $FD, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $04, $C3,
314 | $83, $7D, $33, $40, $75, $06, $E8, $55, $00, $00, $00, $C3, $83, $7D, $02, $20,
315 | $75, $05, $83, $45, $23, $07, $C3, $83, $45, $23, $05, $C3, $E8, $81, $FD, $FF,
316 | $FF, $83, $7D, $16, $00, $75, $06, $E8, $C6, $FD, $FF, $FF, $C3, $E8, $2E, $00,
317 | $00, $00, $C3, $83, $7D, $33, $40, $75, $05, $83, $45, $23, $05, $C3, $83, $7D,
318 | $02, $20, $75, $05, $83, $45, $23, $05, $C3, $83, $45, $23, $03, $C3, $80, $7D,
319 | $00, $01, $75, $06, $E8, $99, $FD, $FF, $FF, $C3, $E8, $01, $00, $00, $00, $C3,
320 | $B8, $FF, $FF, $FF, $FF, $C3, $83, $7D, $33, $40, $75, $06, $E8, $EF, $FF, $FF,
321 | $FF, $C3, $E8, $7B, $FD, $FF, $FF, $83, $45, $23, $01, $C3, $83, $7D, $02, $20,
322 | $7C, $0A, $E8, $6B, $FD, $FF, $FF, $83, $45, $23, $04, $C3, $E8, $61, $FD, $FF,
323 | $FF, $83, $45, $23, $02, $C3, $E8, $BE, $FC, $FF, $FF, $E8, $02, $FD, $FF, $FF,
324 | $83, $7D, $16, $00, $75, $0B, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $03,
325 | $C3, $83, $7D, $16, $01, $75, $06, $E8, $A4, $FF, $FF, $FF, $C3, $8B, $45, $1A,
326 | $01, $45, $23, $83, $45, $23, $02, $C3, $83, $7D, $02, $20, $7C, $32, $E8, $86,
327 | $FC, $FF, $FF, $E8, $CA, $FC, $FF, $FF, $83, $7D, $16, $00, $75, $0B, $8B, $45,
328 | $1A, $01, $45, $23, $83, $45, $23, $06, $C3, $83, $7D, $16, $01, $75, $06, $E8,
329 | $6C, $FF, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02, $C3,
330 | $E8, $54, $FC, $FF, $FF, $E8, $98, $FC, $FF, $FF, $83, $7D, $16, $00, $75, $0B,
331 | $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $04, $C3, $83, $7D, $16, $01, $75,
332 | $06, $E8, $3A, $FF, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23, $83, $45, $23,
333 | $02, $C3, $E8, $22, $FC, $FF, $FF, $E8, $66, $FC, $FF, $FF, $83, $7D, $16, $01,
334 | $7E, $06, $E8, $19, $FF, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23, $83, $45,
335 | $23, $02, $C3, $E8, $4A, $FC, $FF, $FF, $83, $7D, $16, $06, $7E, $06, $E8, $FD,
336 | $FE, $FF, $FF, $C3, $E8, $F0, $FB, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83,
337 | $45, $23, $02, $C3, $E8, $E0, $FB, $FF, $FF, $E8, $24, $FC, $FF, $FF, $83, $7D,
338 | $16, $05, $7E, $06, $E8, $D7, $FE, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23,
339 | $83, $45, $23, $02, $C3, $E8, $BF, $FB, $FF, $FF, $E8, $03, $FC, $FF, $FF, $83,
340 | $7D, $16, $00, $75, $1A, $83, $7D, $0A, $03, $0F, $85, $AC, $00, $00, $00, $83,
341 | $7D, $0E, $04, $0F, $8E, $A2, $00, $00, $00, $E8, $A2, $FE, $FF, $FF, $C3, $83,
342 | $7D, $16, $01, $75, $1A, $83, $7D, $0A, $03, $0F, $85, $8C, $00, $00, $00, $83,
343 | $7D, $0E, $01, $0F, $8E, $82, $00, $00, $00, $E8, $82, $FE, $FF, $FF, $C3, $83,
344 | $7D, $16, $02, $75, $10, $83, $7D, $0A, $03, $0F, $85, $6C, $00, $00, $00, $E8,
345 | $6C, $FE, $FF, $FF, $C3, $83, $7D, $16, $03, $75, $0C, $83, $7D, $0A, $03, $75,
346 | $5A, $E8, $5A, $FE, $FF, $FF, $C3, $83, $7D, $16, $04, $75, $0C, $83, $7D, $0A,
347 | $03, $75, $48, $E8, $48, $FE, $FF, $FF, $C3, $83, $7D, $16, $05, $75, $06, $E8,
348 | $3C, $FE, $FF, $FF, $C3, $83, $7D, $16, $06, $75, $0C, $83, $7D, $0A, $03, $75,
349 | $2A, $E8, $2A, $FE, $FF, $FF, $C3, $83, $7D, $16, $07, $75, $1E, $83, $7D, $0A,
350 | $03, $75, $18, $83, $7D, $33, $40, $75, $0C, $83, $7D, $0E, $00, $74, $0C, $E8,
351 | $0C, $FE, $FF, $FF, $C3, $E8, $06, $FE, $FF, $FF, $C3, $8B, $45, $1A, $01, $45,
352 | $23, $83, $45, $23, $02, $C3, $E8, $EE, $FA, $FF, $FF, $E8, $32, $FB, $FF, $FF,
353 | $83, $7D, $16, $04, $7D, $06, $E8, $E5, $FD, $FF, $FF, $C3, $8B, $45, $1A, $01,
354 | $45, $23, $83, $45, $23, $03, $C3, $E8, $CD, $FA, $FF, $FF, $E8, $11, $FB, $FF,
355 | $FF, $83, $7D, $16, $00, $75, $06, $E8, $C4, $FD, $FF, $FF, $C3, $83, $7D, $16,
356 | $02, $75, $06, $E8, $B8, $FD, $FF, $FF, $C3, $83, $7D, $16, $03, $75, $06, $E8,
357 | $AC, $FD, $FF, $FF, $C3, $83, $7D, $16, $04, $75, $06, $E8, $A0, $FD, $FF, $FF,
358 | $C3, $83, $7D, $16, $05, $75, $06, $E8, $94, $FD, $FF, $FF, $C3, $83, $7D, $16,
359 | $07, $7E, $06, $E8, $88, $FD, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23, $83,
360 | $45, $23, $02, $C3, $E8, $B9, $FA, $FF, $FF, $83, $7D, $16, $00, $75, $06, $E8,
361 | $6C, $FD, $FF, $FF, $C3, $83, $7D, $16, $01, $75, $06, $E8, $60, $FD, $FF, $FF,
362 | $C3, $83, $7D, $16, $02, $75, $11, $E8, $4D, $FA, $FF, $FF, $83, $7D, $0A, $03,
363 | $74, $52, $E8, $49, $FD, $FF, $FF, $C3, $83, $7D, $16, $03, $75, $06, $E8, $3D,
364 | $FD, $FF, $FF, $C3, $83, $7D, $16, $04, $75, $11, $E8, $2A, $FA, $FF, $FF, $83,
365 | $7D, $0A, $03, $74, $2F, $E8, $26, $FD, $FF, $FF, $C3, $83, $7D, $16, $05, $75,
366 | $06, $E8, $1A, $FD, $FF, $FF, $C3, $83, $7D, $16, $06, $75, $11, $E8, $07, $FA,
367 | $FF, $FF, $83, $7D, $0A, $03, $74, $0C, $E8, $03, $FD, $FF, $FF, $C3, $E8, $FD,
368 | $FC, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $03, $C3, $E8,
369 | $2E, $FA, $FF, $FF, $83, $7D, $16, $00, $75, $06, $E8, $E1, $FC, $FF, $FF, $C3,
370 | $83, $7D, $16, $01, $75, $06, $E8, $D5, $FC, $FF, $FF, $C3, $83, $7D, $16, $02,
371 | $75, $11, $E8, $C2, $F9, $FF, $FF, $83, $7D, $0A, $03, $74, $52, $E8, $BE, $FC,
372 | $FF, $FF, $C3, $83, $7D, $16, $03, $75, $06, $E8, $B2, $FC, $FF, $FF, $C3, $83,
373 | $7D, $16, $04, $75, $11, $E8, $9F, $F9, $FF, $FF, $83, $7D, $0A, $03, $74, $2F,
374 | $E8, $9B, $FC, $FF, $FF, $C3, $83, $7D, $16, $05, $75, $06, $E8, $8F, $FC, $FF,
375 | $FF, $C3, $83, $7D, $16, $06, $75, $11, $E8, $7C, $F9, $FF, $FF, $83, $7D, $0A,
376 | $03, $74, $0C, $E8, $78, $FC, $FF, $FF, $C3, $E8, $72, $FC, $FF, $FF, $C3, $8B,
377 | $45, $1A, $01, $45, $23, $83, $45, $23, $03, $C3, $E8, $A3, $F9, $FF, $FF, $83,
378 | $7D, $16, $00, $75, $06, $E8, $56, $FC, $FF, $FF, $C3, $83, $7D, $16, $01, $75,
379 | $06, $E8, $4A, $FC, $FF, $FF, $C3, $83, $7D, $16, $02, $75, $15, $E8, $37, $F9,
380 | $FF, $FF, $83, $7D, $0A, $03, $0F, $84, $7B, $00, $00, $00, $E8, $2F, $FC, $FF,
381 | $FF, $C3, $83, $7D, $16, $03, $75, $1D, $83, $7D, $02, $10, $75, $11, $E8, $16,
382 | $F9, $FF, $FF, $83, $7D, $0A, $03, $74, $5E, $E8, $12, $FC, $FF, $FF, $C3, $E8,
383 | $0C, $FC, $FF, $FF, $C3, $83, $7D, $16, $04, $75, $06, $E8, $00, $FC, $FF, $FF,
384 | $C3, $83, $7D, $16, $05, $75, $06, $E8, $F4, $FB, $FF, $FF, $C3, $83, $7D, $16,
385 | $06, $75, $11, $E8, $E1, $F8, $FF, $FF, $83, $7D, $0A, $03, $74, $29, $E8, $DD,
386 | $FB, $FF, $FF, $C3, $83, $7D, $16, $07, $75, $17, $83, $7D, $02, $10, $75, $11,
387 | $E8, $C4, $F8, $FF, $FF, $83, $7D, $0A, $03, $74, $0C, $E8, $C0, $FB, $FF, $FF,
388 | $C3, $E8, $BA, $FB, $FF, $FF, $C3, $8B, $45, $1A, $01, $45, $23, $83, $45, $23,
389 | $03, $C3, $E8, $EB, $F8, $FF, $FF, $83, $7D, $16, $00, $75, $15, $E8, $97, $F8,
390 | $FF, $FF, $83, $7D, $0A, $03, $0F, $85, $A0, $00, $00, $00, $E8, $8F, $FB, $FF,
391 | $FF, $C3, $83, $7D, $16, $01, $75, $15, $E8, $7C, $F8, $FF, $FF, $83, $7D, $0A,
392 | $03, $0F, $85, $85, $00, $00, $00, $E8, $74, $FB, $FF, $FF, $C3, $83, $7D, $16,
393 | $02, $75, $15, $E8, $61, $F8, $FF, $FF, $83, $7D, $0A, $03, $0F, $85, $6A, $00,
394 | $00, $00, $E8, $59, $FB, $FF, $FF, $C3, $83, $7D, $16, $03, $75, $11, $E8, $46,
395 | $F8, $FF, $FF, $83, $7D, $0A, $03, $75, $53, $E8, $42, $FB, $FF, $FF, $C3, $83,
396 | $7D, $16, $04, $75, $06, $E8, $36, $FB, $FF, $FF, $C3, $83, $7D, $16, $05, $75,
397 | $11, $E8, $23, $F8, $FF, $FF, $83, $7D, $0A, $03, $75, $30, $E8, $1F, $FB, $FF,
398 | $FF, $C3, $83, $7D, $16, $06, $75, $11, $E8, $0C, $F8, $FF, $FF, $83, $7D, $0A,
399 | $03, $75, $19, $E8, $08, $FB, $FF, $FF, $C3, $83, $7D, $16, $07, $7F, $07, $E8,
400 | $F5, $F7, $FF, $FF, $EB, $06, $E8, $F5, $FA, $FF, $FF, $C3, $8B, $45, $1A, $01,
401 | $45, $23, $83, $45, $23, $02, $C3, $E8, $26, $F8, $FF, $FF, $83, $7D, $16, $00,
402 | $75, $11, $E8, $D2, $F7, $FF, $FF, $83, $7D, $0A, $03, $75, $51, $E8, $CE, $FA,
403 | $FF, $FF, $C3, $83, $7D, $16, $01, $75, $11, $E8, $BB, $F7, $FF, $FF, $83, $7D,
404 | $0A, $03, $75, $3A, $E8, $B7, $FA, $FF, $FF, $C3, $83, $7D, $16, $02, $75, $11,
405 | $E8, $A4, $F7, $FF, $FF, $83, $7D, $0A, $03, $75, $23, $E8, $A0, $FA, $FF, $FF,
406 | $C3, $83, $7D, $16, $03, $75, $11, $E8, $8D, $F7, $FF, $FF, $83, $7D, $0A, $03,
407 | $75, $0C, $E8, $89, $FA, $FF, $FF, $C3, $E8, $83, $FA, $FF, $FF, $C3, $8B, $45,
408 | $1A, $01, $45, $23, $83, $45, $23, $02, $C3, $FF, $45, $23, $C7, $45, $02, $10,
409 | $00, $00, $00, $FE, $45, $22, $80, $7D, $22, $0F, $75, $06, $E8, $5F, $FA, $FF,
410 | $FF, $C3, $8B, $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03, $00, $83, $C0, $04,
411 | $FF, $D0, $C7, $45, $02, $20, $00, $00, $00, $C3, $FF, $45, $23, $FE, $45, $22,
412 | $80, $7D, $22, $0F, $75, $06, $E8, $35, $FA, $FF, $FF, $C3, $8B, $4D, $06, $D1,
413 | $E9, $89, $5D, $06, $8B, $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03, $00, $83,
414 | $C0, $04, $FF, $D0, $8B, $5D, $06, $D1, $E1, $89, $4D, $06, $C3, $FF, $45, $23,
415 | $FE, $45, $22, $80, $7D, $22, $0F, $75, $06, $E8, $02, $FA, $FF, $FF, $C3, $8B,
416 | $45, $23, $0F, $B6, $00, $3C, $A4, $74, $12, $3C, $A7, $74, $0E, $3C, $AE, $74,
417 | $0A, $3C, $AF, $74, $06, $3C, $0F, $74, $02, $EB, $04, $C6, $45, $00, $01, $8B,
418 | $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03, $00, $83, $C0, $04, $FF, $D0, $C6,
419 | $45, $00, $00, $C3, $FF, $45, $23, $FE, $45, $22, $80, $7D, $22, $0F, $75, $06,
420 | $E8, $BB, $F9, $FF, $FF, $C3, $8B, $45, $23, $0F, $B6, $00, $3C, $90, $74, $3E,
421 | $3C, $A4, $74, $3A, $3C, $A5, $74, $36, $3C, $A6, $74, $32, $3C, $A7, $74, $2E,
422 | $3C, $AA, $74, $2A, $3C, $AB, $74, $26, $3C, $AC, $74, $22, $3C, $AD, $74, $1E,
423 | $3C, $AE, $74, $1A, $3C, $AF, $74, $16, $3C, $6C, $74, $12, $3C, $6D, $74, $0E,
424 | $3C, $6E, $74, $0A, $3C, $6F, $74, $06, $3C, $0F, $74, $02, $EB, $04, $C6, $45,
425 | $01, $01, $8B, $45, $23, $0F, $B6, $08, $8D, $04, $8E, $03, $00, $83, $C0, $04,
426 | $FF, $D0, $C6, $45, $01, $00, $C3, $FF, $45, $23, $FE, $45, $22, $80, $7D, $22,
427 | $0F, $75, $06, $E8, $48, $F9, $FF, $FF, $C3, $8B, $45, $23, $0F, $B6, $08, $8D,
428 | $84, $8E, $00, $04, $00, $00, $03, $00, $83, $C0, $04, $FF, $D0, $C3, $FF, $45,
429 | $23, $FE, $45, $22, $80, $7D, $22, $0F, $75, $06, $E8, $21, $F9, $FF, $FF, $C3,
430 | $8B, $45, $23, $0F, $B6, $08, $8D, $84, $8E, $00, $08, $00, $00, $03, $00, $83,
431 | $C0, $04, $FF, $D0, $C3, $FF, $45, $23, $FE, $45, $22, $80, $7D, $22, $0F, $75,
432 | $06, $E8, $FA, $F8, $FF, $FF, $C3, $8B, $45, $23, $0F, $B6, $08, $8D, $84, $8E,
433 | $00, $0C, $00, $00, $03, $00, $83, $C0, $04, $FF, $D0, $C3, $C7, $45, $1A, $00,
434 | $00, $00, $00, $8B, $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00, $00, $00, $7F,
435 | $11, $E8, $0C, $F6, $FF, $FF, $83, $7D, $16, $07, $7E, $06, $E8, $BF, $F8, $FF,
436 | $FF, $C3, $E8, $B2, $F5, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23,
437 | $02, $C3, $C7, $45, $1A, $00, $00, $00, $00, $8B, $45, $23, $0F, $B6, $40, $01,
438 | $3D, $BF, $00, $00, $00, $7F, $17, $E8, $D6, $F5, $FF, $FF, $83, $7D, $16, $01,
439 | $75, $69, $83, $7D, $16, $07, $7E, $63, $E8, $83, $F8, $FF, $FF, $C3, $3D, $C0,
440 | $00, $00, $00, $7C, $56, $89, $C2, $C1, $EA, $04, $89, $C1, $83, $E1, $0F, $83,
441 | $FA, $0D, $75, $0B, $83, $F9, $00, $74, $42, $E8, $62, $F8, $FF, $FF, $C3, $83,
442 | $FA, $0E, $75, $37, $83, $F9, $02, $75, $06, $E8, $52, $F8, $FF, $FF, $C3, $83,
443 | $F9, $03, $75, $06, $E8, $47, $F8, $FF, $FF, $C3, $83, $F9, $06, $75, $06, $E8,
444 | $3C, $F8, $FF, $FF, $C3, $83, $F9, $07, $75, $06, $E8, $31, $F8, $FF, $FF, $C3,
445 | $83, $F9, $0F, $75, $06, $E8, $26, $F8, $FF, $FF, $C3, $E8, $19, $F5, $FF, $FF,
446 | $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02, $C3, $C7, $45, $1A, $00, $00,
447 | $00, $00, $8B, $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00, $00, $00, $7F, $11,
448 | $E8, $3D, $F5, $FF, $FF, $83, $7D, $16, $07, $7E, $32, $E8, $F0, $F7, $FF, $FF,
449 | $C3, $3D, $C0, $00, $00, $00, $7C, $25, $89, $C2, $C1, $EA, $04, $89, $C1, $83,
450 | $E1, $0F, $83, $FA, $0E, $75, $0B, $83, $F9, $09, $74, $11, $E8, $CF, $F7, $FF,
451 | $FF, $C3, $83, $FA, $0F, $75, $06, $E8, $C4, $F7, $FF, $FF, $C3, $E8, $B7, $F4,
452 | $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02, $C3, $C7, $45, $1A,
453 | $00, $00, $00, $00, $8B, $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00, $00, $00,
454 | $7F, $1F, $E8, $DB, $F4, $FF, $FF, $83, $7D, $16, $04, $74, $0E, $83, $7D, $16,
455 | $06, $74, $08, $83, $7D, $16, $07, $7F, $02, $EB, $41, $E8, $80, $F7, $FF, $FF,
456 | $C3, $3D, $C0, $00, $00, $00, $7C, $34, $89, $C2, $C1, $EA, $04, $89, $C1, $83,
457 | $E1, $0F, $83, $FA, $0E, $75, $15, $83, $F9, $08, $7D, $20, $83, $F9, $03, $74,
458 | $1B, $83, $F9, $02, $74, $16, $E8, $55, $F7, $FF, $FF, $C3, $83, $FA, $0F, $75,
459 | $0B, $83, $F9, $08, $7C, $06, $E8, $45, $F7, $FF, $FF, $C3, $E8, $38, $F4, $FF,
460 | $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02, $C3, $C7, $45, $1A, $00,
461 | $00, $00, $00, $8B, $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00, $00, $00, $7F,
462 | $11, $E8, $5C, $F4, $FF, $FF, $83, $7D, $16, $07, $7E, $22, $E8, $0F, $F7, $FF,
463 | $FF, $C3, $3D, $C0, $00, $00, $00, $7C, $15, $89, $C2, $C1, $EA, $04, $89, $C1,
464 | $83, $E1, $0F, $83, $FA, $0D, $75, $06, $E8, $F3, $F6, $FF, $FF, $C3, $E8, $E6,
465 | $F3, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02, $C3, $C7, $45,
466 | $1A, $00, $00, $00, $00, $8B, $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00, $00,
467 | $00, $7F, $19, $E8, $0A, $F4, $FF, $FF, $83, $7D, $16, $05, $74, $08, $83, $7D,
468 | $16, $07, $7F, $02, $EB, $32, $E8, $B5, $F6, $FF, $FF, $C3, $3D, $C0, $00, $00,
469 | $00, $7C, $25, $89, $C2, $C1, $EA, $04, $89, $C1, $83, $E1, $0F, $83, $FA, $0C,
470 | $75, $0B, $83, $F9, $08, $7C, $11, $E8, $94, $F6, $FF, $FF, $C3, $83, $FA, $0F,
471 | $75, $06, $E8, $89, $F6, $FF, $FF, $C3, $E8, $7C, $F3, $FF, $FF, $8B, $45, $1A,
472 | $01, $45, $23, $83, $45, $23, $02, $C3, $C7, $45, $1A, $00, $00, $00, $00, $8B,
473 | $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00, $00, $00, $7F, $11, $E8, $A0, $F3,
474 | $FF, $FF, $83, $7D, $16, $07, $7E, $27, $E8, $53, $F6, $FF, $FF, $C3, $3D, $C0,
475 | $00, $00, $00, $7C, $1A, $89, $C2, $C1, $EA, $04, $89, $C1, $83, $E1, $0F, $83,
476 | $FA, $0D, $75, $0B, $83, $F9, $09, $74, $06, $E8, $32, $F6, $FF, $FF, $C3, $E8,
477 | $25, $F3, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02, $C3, $C7,
478 | $45, $1A, $00, $00, $00, $00, $8B, $45, $23, $0F, $B6, $40, $01, $3D, $BF, $00,
479 | $00, $00, $7F, $11, $E8, $49, $F3, $FF, $FF, $83, $7D, $16, $07, $7E, $52, $E8,
480 | $FC, $F5, $FF, $FF, $C3, $3D, $C0, $00, $00, $00, $7C, $45, $89, $C2, $C1, $EA,
481 | $04, $89, $C1, $83, $E1, $0F, $83, $FA, $0C, $75, $06, $E8, $E0, $F5, $FF, $FF,
482 | $C3, $83, $FA, $0D, $75, $06, $E8, $D5, $F5, $FF, $FF, $C3, $83, $FA, $0E, $75,
483 | $10, $83, $F9, $00, $74, $1B, $83, $F9, $08, $7D, $16, $E8, $C0, $F5, $FF, $FF,
484 | $C3, $83, $FA, $0F, $75, $0B, $83, $F9, $08, $7C, $06, $E8, $B0, $F5, $FF, $FF,
485 | $C3, $E8, $A3, $F2, $FF, $FF, $8B, $45, $1A, $01, $45, $23, $83, $45, $23, $02,
486 | $C3
487 | );
488 |
--------------------------------------------------------------------------------
/Source/HookUtils.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/delphilite/DelphiHookUtils/496ccbf3f7621878dce99c02077dc29254aca2b5/Source/HookUtils.pas
--------------------------------------------------------------------------------