ποΈ delete-self-poc
The delete-self-poc
is a demonstration of a method to delete a locked executable or currently running file from disk. This concept was initially discovered by Jonas Lykkegaard, and I have created the proof of concept (POC) for it. Additionally, it can be used to delete locked files on disk, provided that the current calling process has the necessary permissions to access and delete them.
How does this work, though - in this POC?
- Open a HANDLE to the current running process with DELETE access. Note that only DELETE access is required.
- Use the SetFileInformationByHandle function to rename the primary file stream, :$DATA, to :wtfbbq.
- Close the HANDLE.
- Open a HANDLE to the current process and set the DeleteFile flag of the FileDispositionInfo class to TRUE.
- Close the HANDLE to trigger the file disposition.
- Voila! The file is now gone.
Releases
I have included a statically linked release within this repository, if you can't be bothered compiling the original source code.