Und wer Cracker die Debugger nutzten ärgern wollte baute viele Int3 Aufrufe ein. Soweit ich weiß
fungierte Int3 nämlich als Breakpoint...
Ist immernoch so und ist einer der wenigen Interupts, die man im Usermode jetzt noch benutzen kann, neben der passenden
Winapi DebugBreak, welches intern auch gleich noch mit
IsDebuggerPresent prüft.
z.B. als Inline-Assembler
asm int 3 end;
mittten im Delphi-Code (
Win32). In Win64 so nicht mehr, da es dort kein Inline-Assembler gibt. (nur noch komplette Methoden)
Nur wenn kein Debugger dran hängt, dann raucht das natürlich mit einer
Exception ab.
Und das
FlushInstructionCache ist für modernere CPUs, welche den Befehlscode cachen, bzw. sich die nächsten Befehle schonmal vorab kopieren.