看滴水逆向的时候,模拟栈不是简单的很,直接上手习题
模拟压入五个数,五个DWORD不过瘾啊,皮BYT一下,压入DWORD,DWORD,WORD,BYTE,BYTE炫个技给自己看喽
mov ebx,0x6FFB3C
mov edx,ebx
//关键来了
mov dword ptr ds:[edx],0x11111111
sub edx,0x4
mov dword ptr ds:[edx],0x22222222
sub edx,0x4
mov word ptr ds:[edx],0x3333
sub edx,0x2
mov byte ptr ds:[edx],0x44
sub edx,0x1
mov byte ptr ds:[edx],0x55
sub edx,0x1
F7走起,????,为啥内存数据是 00554400 33330000 22222222 11111111
画图呗,因为是存放word时出的问题,把栈设置为word大小
我咋把数据存1000-1004了, 然后导致的空出了位置,然后使用了word去填充dword的数据
还是太菜了,附上正确的图,出现错误的原因还是对内存理解不到位(都知道栈是反着存的,实践的时候还是出问题了,都存同样大小的数据时,就算存错了也不知道,皮一皮还是赚了一个理解错误点,快乐)