procedure TFakeObject.CrashMe; begin Writeln('This will not be reached'); end;
var obj: TFakeObject; p: Pointer; begin // Allocate memory but not as a valid object GetMem(p, SizeOf(TFakeObject)); FillChar(p^, SizeOf(TFakeObject), 0); obj := TFakeObject(p);
// Call virtual method -> corrupt VMT -> runtime error 217 obj.CrashMe; end.
procedure TFakeObject.CrashMe; begin Writeln('This will not be reached'); end;
var obj: TFakeObject; p: Pointer; begin // Allocate memory but not as a valid object GetMem(p, SizeOf(TFakeObject)); FillChar(p^, SizeOf(TFakeObject), 0); obj := TFakeObject(p); autodata runtime error 217 at 00580d29
// Call virtual method -> corrupt VMT -> runtime error 217 obj.CrashMe; end. procedure TFakeObject