Closed disconnect3d closed 5 months ago
This issue happens because checksec.py
invokes the ELF
object constructor that calls its self._populate_plt()
function that invokes Unicorn engine to emulate PLT instructions to figure out some addresses.
Funnily, modifying the code so that the _populate_plt
fail, for example by introducing a line: asdf
which causes a name 'asdf' is not defined
error, makes the checksec
command work, because it handles the error and logs a warning:
It seems that
pwn checksec
requires libunicorn. Is that really required? The Unicorn Engine mmaps a 1GB+ memory page which aborts the program on failures. This can happen on low-memory systems such as cheap VPSes. This is actually a bug in libunicorn that I reported in https://github.com/unicorn-engine/unicorn/issues/1766 but it still hasn't been fixed.Given all this, it would be great if we could not require libunicorn in
checksec
. But if we need, it would be nice to get it documented here for users who stumble upon the same issue and try to search it here.Here is an example issue of this: