汇编指令(上)

突然发现ollyDBG 可以用来学习汇编
闲的蛋疼没事的时候搞搞
生活是灰色的,编程工作是蛋疼的!!
只能找点东西去填补心里的阴暗!!
这里仅仅作为参考,跟狗屎一样的东西!没人能看懂写的什么,所以千万不要看,自己去拿ollyDbg去测试这些汇编指令到底是个什么玩意!!
push 指令将 某个值或 某个地址的内容存储到堆栈中去
eip = 00401000 此处的指令 push 0x0
堆栈顶部指针的位置 esp = 0018f8c 内容74b633ca
也就是0018f8c 74
001878d b6
001838e 33
001838f ca
执行这条指令过后
eip = 00401002
esp = 0018ff88 此时指针位置减少了4 相当于4个字节 每一个地址指向的是八位 1个字节
0018ff88 的内容 00000000 0018ff88 - 0018ffc 存储的是00000000
0018ff88 00
0018ff89 00
0018ff8a 00
0018ff8b 00

push eax
esp = 0018ff8c
eax 74b633b8
执行push eax指令过后

esp = 0018ff88
0018ff88 处的内容 74b633b8

push [401008]这个内存单元指向了4个字节的内容 push [地址]将这个地址里的三十二个字节的内容保存到栈里
也可以在字节码区域 选择goto expressiion 输入内存地址 查看这个地址保存的内容 基本上都是三十二个字节的数据
401008 的内容004020ca odb显示的时候ca204000
esp = 0018ff88

执行完后
esp =0018ff84
内容为004020ac

push[地址]相当于
push dword ptr ds:[401008]默认为4个字节的的内容

现在push word ptr ds:[40101c]看看会发生什么事情
0040101c内容 c3 c7 05 64
执行之前
esp = 0018ff8c 内容74b633ca 0018ff8c ca 0018ff8d 33

esp = 0018ff8a 内容33cac7c3 0018ff8a c3 0018ff8b c7 0018ff8c ca 0018ff8d 33
妈蛋前面搞错了 地址是他妈这么搞的我操 esp地址 每个地址执行一个自己的内容 从后向前数的坑爹 前面我不想改了
加深印象吧!!!十六进制窗口里的地址从左向右数 堆栈地址里的内容是从右向左搞的,真鸡巴坑爹!!!

POP指令是出栈:它会取出堆栈顶部的第一个字母或者第一个值,然后存放到指定的目标地址内存单元中。
例如,POP EAX从栈顶中取出第一个值存放到EAX中,随后的一个值随即变成栈顶
现在搞个例子来验证下
eax = 74b633b8

esp = 0018ff8c 内容74b633ca

执行完pop eax
eax = 74b633ca
esp = 0018ff90

PUSHAD指令把所有通用寄存器的内容按一定顺序压入到堆栈中,PUSHAD也就相当于’PUSH EAX,PUSH ECX,PUSH EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI,

PUSH EDI’。
这个指令牛逼,
eax= 74b6ccb8
ecx = 00000000
edx = 00401000
ebx = 7efde000
esp = 0018ff8c
ebp = 0018ff94
esi = 00000000
edi = 00000000
先来推测一下结果
这个八个寄存器 就相当于 32个字节
执行完指令过后
esp = 0018ff8c -32 = 0018ff6c
不知道对不对哦
改一下当前eip 的指令内容 pushad
执行看看!
呵呵没什么问题
esp = 0018ff6c 内容00000000
0018ff70 00000000
0018ff74 0018ff94
..
0018ff88 74b6ccb8

谁他妈能记住入栈的顺序呢?不按套路出牌啊??
应该a b c d 排的
怎么入栈顺序是eax ecx edx ebx esp ebp esi edi
搞不懂??这个世界搞不懂的何止这些呢??
满满的负能量!!听说负能量可以宣泄心里的那不值一提的悲哀!!!

有了pushad 就该有popad
这个世界就是这样必须有个对应的,男的就该和女的相配对!!
当然现在有好多男男!!这个世界越来越没办法懂了!!
POPAD
该指令与PUSHAD正好相反,它从堆栈中取值,并将它们放到相应的寄存器中。POPAD等价于“POP EDI,POP ESI,POP EBP,POP ESP,POP EBX,POP EDX,POP

ECX,POP EAX”。

试试吧,还能怎样
esp = 0018ff8c
执行pop指令 esp 的地址是递增的
八个通用寄存器 三十二个字节
也就是 0018ff8c - 0018ffac的内容
0018ff8c 74b633ca
0018ff90 7efde000
0018ff94 0018ffd4
0018ff98 76f99ed2
0018ff9c 7efde000
0018ffa0 7763bfd5
0018ffa4 00000000
0018ffa8 00000000
好累
esp地址 esp内容
执行该死的popadd
试试
edi 74b633ca
esi 7efde000

eax 0000000
ecx 0000000
真是这样 没意思!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值