html tool

2019年1月9日星期三

转: shellcode-call&&pop获得eip的方法

来源地址:
https://www.xineting.club/2018/11/03/shellcode%E7%BC%96%E7%A0%81%E6%8A%80%E6%9C%AF/


如何获取shellcode起始位置

  • Shellcode在以位置无关方式访问时,首先需要引用一个基址指针,用该基址指针加上或减去一定的偏移,从而顺利的访问shellcode中包含的数据。
  • Shellcode在以位置无关的方式访问指令和数据时,通常是通过基址地址加上偏移的方式来实现,该基址地址通常是shellcode执行时的起始位置。
  • 获取到该起始位置后,需要将其写入到一个通用寄存器中,作为后续基址指针来使用。可能大家很容易想到通过mov eax,eip这条指令直接把当前eip的值放入到eax中遗憾的是,x86架构上指令指针寄存器eip不能被软件直接访问。
  • call/pop指令
    Shellcode可以通过在一个call指令后立即执行pop指令,将上一刻压入栈中的指令地址载入到寄存器中,从而获取到shellcode起始的内存地址。

【popexizhi: 
这里解释了why
。。。 
         call L001
L001:
        pop ebx                        // 这个是要获得call L001的eip到ebx啊!!
        sub ebx, 8                    //【next 】看我如何计算的和更好的计算方式

没有评论:

发表评论