`_CW;>#
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
-
- {D2FEAC7B-BA6A-4F35-B075-A47A8CB9AE80}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Examples/SimpleDemo.dpr b/Examples/SimpleDemo.dpr
deleted file mode 100644
index 762da96..0000000
--- a/Examples/SimpleDemo.dpr
+++ /dev/null
@@ -1,94 +0,0 @@
-{***************************************************************************************************
-
- Zydis
-
- Original Author : Florian Bernd
-
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
-
-***************************************************************************************************}
-
-program SimpleDemo;
-
-{$APPTYPE CONSOLE}
-
-{$R *.res}
-
-uses
- Zydis in '../Zydis/Zydis.pas',
- Zydis.Exception in '../Zydis/Zydis.Exception.pas',
- Zydis.Decoder in '../Zydis/Zydis.Decoder.pas',
- Zydis.Formatter in '../Zydis/Zydis.Formatter.pas',
- {$IFNDEF FPC}System.SysUtils{$ELSE}SysUtils{$ENDIF};
-
-{* ============================================================================================== *}
-{* Entry point *}
-{* ============================================================================================== *}
-
-const
- X86DATA: array[0..24] of Byte =
- (
- $51, $8D, $45, $FF, $50, $FF, $75, $0C, $FF, $75,
- $08, $FF, $15, $A0, $A5, $48, $76, $85, $C0, $0F,
- $88, $FC, $DA, $02, $00
- );
-
-var
- Formatter: Zydis.Formatter.TZydisFormatter;
- Decoder: Zydis.Decoder.TZydisDecoder;
- InstructionPointer: ZydisU64;
- Offset: Integer;
- Instruction: TZydisDecodedInstruction;
-begin
- try
- if (ZydisGetVersion <> ZYDIS_VERSION) then
- begin
- raise Exception.Create('Invalid Zydis version');
- end;
-
- Formatter := Zydis.Formatter.TZydisFormatter.Create(ZYDIS_FORMATTER_STYLE_INTEL);
- try
- Formatter.ForceMemorySegments := true;
- Formatter.ForceMemorySize := true;
- Decoder :=
- Zydis.Decoder.TZydisDecoder.Create(ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_ADDRESS_WIDTH_64);
- try
- InstructionPointer := $007FFFFFFF400000;
- Offset := 0;
- repeat
- Decoder.DecodeBuffer(@X86DATA[Offset], Length(X86DATA) - Offset, InstructionPointer,
- Instruction);
- WriteLn(Format('%.16x %s',
- [InstructionPointer, Formatter.FormatInstruction(Instruction)]));
- Inc(InstructionPointer, Instruction.Length);
- Inc(Offset, Instruction.Length);
- until (Offset >= Length(X86DATA));
- finally
- Decoder.Free;
- end;
- finally
- Formatter.Free;
- end;
-
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
-end.
-
diff --git a/Examples/SimpleDemo.dproj b/Examples/SimpleDemo.dproj
deleted file mode 100644
index c946cd6..0000000
--- a/Examples/SimpleDemo.dproj
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
- {B67489E9-839F-402C-93DB-B014EBB1B4B4}
- 18.3
- None
- SimpleDemo.dpr
- True
- Debug
- Win64
- 3
- Console
-
-
- true
-
-
- true
- Base
- true
-
-
- true
- Base
- true
-
-
- true
- Base
- true
-
-
- true
- Cfg_1
- true
- true
-
-
- true
- Base
- true
-
-
- true
- Cfg_2
- true
- true
-
-
- .\$(Platform)\$(Config)
- .\$(Platform)\$(Config)
- false
- false
- false
- false
- false
- SimpleDemo
-
-
- Debug
- CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
- 1033
- true
- $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
- $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
- Zydis.ico
- (Ohne)
-
-
- true
- $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
- $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
- Debug
- CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
- 1033
- (Ohne)
- Zydis.ico
-
-
- DEBUG;$(DCC_Define)
- true
- false
- true
- true
- true
-
-
- false
- 1033
- (Ohne)
-
-
- false
- RELEASE;$(DCC_Define)
- 0
- 0
-
-
- 1033
- (Ohne)
-
-
-
- MainSource
-
-
-
-
-
-
- Cfg_2
- Base
-
-
- Base
-
-
- Cfg_1
- Base
-
-
-
-
-
-
diff --git a/Examples/SimpleDemo.res b/Examples/SimpleDemo.res
deleted file mode 100644
index 57de8339ad8bb549e4e14412510832dd2a618655..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 157788
zcmeFZ^;a8T)IJ*Ar8vb)aV=1aloa>k!KD-{4#f%tic=~;kx(>H+}(;6hv4q+?gT4$
zc;EY7>)t=$-k&~MD@?+f$vU&op1q&_>}Li90)ZHT_rt^gzJZVbuNSS%{~1RE_Cfid
zF=ApI^#8L{goc^|0q#>=;5&hmqO2AO^tcZS2pbdF7=O&Oemq=BR!Zkn%0a4ky2;qg
z!y9|Jud}=W_6Co$5$F5u^hHiFs@VcYG!F~zpd`b1+2__%8k#?zvvYP3KUpd0iu>hl
zrfih`1`;=_JMx?SdD6ubA
z_r`E(qY;oUUW0^aM(BM=I1tYmTMvHe`O1h7S>S^f?6S`#z>4)*@0bt$P*3BouVxJ0u39UkmtA1
zsVN~Y&Rk3_ZEmq|7RXy8O8X|Cy(X%XH#CrDeXkFvhoa2?f!1`E;CbpigiHN8)uV29
z;weR?L47HuALwm3i_xi9^6>SB?jHaC5LYrp^b0f6Lyyzg(-!iCAyNZOIk?g|lt-kQGS+@2uv?r>54W1>m&sb<`6B-|t;qEbQNh<{D%se((U{dSl7?y4
z6LPsS_irFqRBPz=W@X99wU|Bam9)yMSItl}i5pwOFWYvd3N5{#4)~Pk@@PMUYCdB9
z5^+G?pH3*ZJ)8L0Vngum{O&=M!JJs_E_2_Bi~eor75C7OF^a`1On&Qs4|x;kr02<8
z0R%k$AtC6WTX9K`nY4Z!c+W&2)cW)gO+Sm)zJsP{f(mQ2qnPec6-!tmJ!?}-V97Hk
zDI|XfOr!i=Fb=13e$5BBE&qf=MfK-K
zY+v3k|J@G^i_On(@0)TJ{D|(?aMP3Ve!f4(%W~t}(TCtqvpQ6gCxql_co|<|T