Date: Sun, 5 Aug 2018 17:10:49 +0100 From: Steve O'Hara-Smith <steve@sohara.org> To: freebsd-questions@freebsd.org Cc: Polytropon <freebsd@edvax.de> Subject: Re: Erase memory on shutdown Message-ID: <20180805171049.caf517319d391b429b087852@sohara.org> In-Reply-To: <20180805172503.e2479108.freebsd@edvax.de> References: <acbb3213-e79e-dfde-038f-b1476925cd4a@irk.ru> <20180805172503.e2479108.freebsd@edvax.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 5 Aug 2018 17:25:03 +0200 Polytropon <freebsd@edvax.de> wrote: > This would imply that the kernel would finally have to > overwrite itself. How can control over zeroing memory > be maintained when the control program itself has been > overwritten? That was a classic exercise from 8080/Z80 days, it may be possible to adapt the technique to more modern processors provided there is still a mode in which 00 is a NOP. The essence of the technique involved setting the stack pointer to top of memory, zeroing a register and then jumping to a loop at the bottom of memory that pushed the register and jumped to zero. The ante-penulitmate step overwrites the jump destination with zero, which it was anyway. The penultimate push overwrites the jump instruction which causes the processor to execute NOPs all the way to top of memory and cycle round to the bottom of memory for the final push which overwrites the push instruction leaving the processor cycling through NOPs forever. -- Steve O'Hara-Smith <steve@sohara.org>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180805171049.caf517319d391b429b087852>