WWW2Exec - atexit()
__atexit 结构
现在很奇怪去利用这个!
atexit()
是一个函数,其他函数被作为参数传递给它。 这些函数将在执行**exit()
或main的返回时执行。
如果您可以修改其中任何一个函数的地址**,使其指向一个shellcode,例如,您将控制该进程,但目前这更加复杂。
目前要执行的函数的地址被隐藏在几个结构后面,最终指向的地址不是函数的地址,而是使用XOR加密和随机密钥进行位移。因此,目前这种攻击向量在至少在x86和x64_86上不太有用。
加密函数是**PTR_MANGLE
。其他架构,如m68k、mips32、mips64、aarch64、arm、hppa... 不实现加密函数,因为它返回**与输入相同的内容。因此,这些架构可以通过这种向量进行攻击。
您可以在https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html找到关于这个工作原理的深入解释。
最后更新于