发包里面的esp问题
咨询问题在第三课的11分10秒处,
lea eax esp+28 老师根据WSASend函数有7个函数,扣掉下方2个,还剩5个参数。5个参数就是14,所以老师推断出这个地方就是包长是包地址
esp+28这个地方是缓冲区地址,这个地方不就是包长包地址。。。。为什么老师能得到+14这个推断,实在想象不出
这个esp不是根据上面有几个push决定的 我们知道WSASend 总共有7个参数 也就是7个push然后我们pBuff是第二个参数 当时这个为esp+28 == pbufff 这里在网上就还有5个参数 也就是上面还需要减去0x-14 也就是pBuff == esp+0x14 了对吧
这时候 我们药知道pBuff里面存放的是什么【一个指向WSABUF结构数组的指针。每个WSABUF结构包含缓冲区的指针和缓冲区的大小】前四个字节 为这个包的包长 我们又知道首地址也就是自己 也就是说 前4个字节 就是 esp+0x14 即包长 包长后面跟的就是包内容
包长为4那么我们在在包长上面+4就是包地址 也就是 esp+0x18
谢谢老师
本帖最后由 keyyan 于 2021-4-7 22:24 编辑kaining 发表于 2021-4-6 21:19
这个esp不是根据上面有几个push决定的 我们知道WSASend 总共有7个参数 也就是7个push然后我们pBuff是第二 ...
明白了,谢谢老师,esp一直是栈顶,我搞错了 keyyan 发表于 2021-4-7 22:21
明白了,谢谢老师,esp一直是栈顶,我搞错了
我和你有一样的疑问,我得再反应一会:( 迷糊过来了,esp每push一次 都往上+0x4,且一直为栈顶
页:
[1]