汇编笔记四【标识寄存器】 by:凉游浅笔深画眉 / Net7Cracker

一、push xxxxx指令和ESP的关系

  ESP的值,是由Push指令后面的操作数的宽度决定的。也就是xxxxx的宽度,假如Puh后面跟的是一个立即数,由于整数是四字节,所以esp-4。

  假如Push 后面跟的是容器,那么就看这个容器的宽度。

  例:假如目前ESP的值是FFFFFFFF

    当PUSH 1 这条指令执行后,ESP=FFFFFFFB,因为1是个立即数,只要Push后面是立即数,那么ESP的值就会减4

  例:假如目前ESP的值是FFFFFFFF

    当PUSH ax 这条指令执行后,ESP=FFFFFFFD,因为AX是个寄存器,该寄存器一共是16位,也就是2个字节,所以ESP的值就会减2

  例:假如目前ESP的值是FFFFFFFF

    当PUSH eax 这条指令执行后,ESP=FFFFFFFB,因为EAX是个寄存器,该寄存器一共是32位,也就是4个字节,所以ESP的值就会减4

  例:假如目前ESP的值是FFFFFFFF

    当PUSH DWORD PTR DS:[XXXXXX] 这条指令执行后,ESP=FFFFFFFB,因为DWORD宽度为4个字节,所以ESP的值就会减4

  例:假如目前ESP的值是FFFFFFFF

    当PUSH WORD PTR DS:[XXXXXX] 这条指令执行后,ESP=FFFFFFFD,因为DWORD宽度为2个字节,所以ESP的值就会减2

二、PUSHAD指令

  PUSHAD指令压入32位寄存器,其入栈顺序是:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI .

也就是将8个通用寄存器EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI 全部压入堆栈,作用是保护堆栈。

  当你执行完毕PUSHAD指令后,可以对寄存器进行任意操作,操作完毕后,只需要再执行POPAD指令,即可还原刚才压入的8个通用寄存器的值。

时间: 2024-10-05 04:09:29

汇编笔记四【标识寄存器】 by:凉游浅笔深画眉 / Net7Cracker的相关文章

SE壳C#程序-CrackMe-爆破 By:凉游浅笔深画眉 / Net7Cracker

[文章标题]: [SE壳C#程序-CrackMe-爆破]文字视频记录![文章作者]:  凉游浅笔深画眉[软件名称]: CM区好冷清,我来发一个吧!小小草莓[下载地址]: http://www.52pojie.cn/thread-243089-1-1.html[加壳方式]: SE壳[使用工具]: OD+WinHex+CFF Explorer[作者声明]: 只是感兴趣,没有其他目的.失误之处敬请诸位大侠赐教!思路来自吾爱大牛:Pnmker的教程谢谢!-------------------------

汇编笔记四【JCC】 by:凉游浅笔深画眉 / Net7Cracker

一.JMP指令:无条件跳转指令,本质是修改EIP的值,改变CPU运行路线 MOV EIP,寄存器/立即数 简写为 JMP 寄存器/立即数 二.CALL指令: PUSH 地址B MOV EIP , 地址A/寄存器 简写为:CALL 地址A/寄存器 三.RET指令:返回指令 相当于POP EIP,并改变CPU运行路线到EIP所指向的值. 四.CMP指令:比较指令 格式:CMP R/M R/M/IMM 该指令是比较两个操作数,实际上相当于SUB指令,但是相减的结果并不保存到第一个操作数中,仅影响ZF标

jQuery Mboile Demo By:凉游浅笔深画眉

Effect:         jQuery Mobile is a HTML5-based user interface system designed to make responsive web sites and apps that are accessible on all smartphone, tablet and desktop devices.jQuery Mobile framework takes the "write less, do more" mantra

IL字节码解码工具 v1.0.1 By:凉游浅笔深画眉 一蓑烟雨原创出品 www.unpack.cn

★aUCfL6qt94cxO+V02XKg6AXLmWdV5E2tB5riuBmwto7Birqes2cnCbZQyVl2i5qiHn/MCzD36P+cjF+WQ3aVZq5Qs6q6X6A0+dK48vABfB6a1k/fbbjz75sSRLOvkQqELCtiLXCoXItGhP9v5VFSVN85xm15hiWv/nP94EObqNh8uDQT6dlcK6DFlgaAlYjTE1NzpOvfQEOZ9NGw/FXjw6hKGuZFxPFiGd8Y13NmK/xw/SoFed6HQoW5b

.NET平台原理调试分析【一】WinDBG+OllyDBG by:凉游浅笔深画眉

我在.NET平台诞生了12年后才接触到它,而国内.NET平台的逆向技术兴起于10年前. 我是不幸的,不幸的是起步比前辈们晚了10年左右,十分后悔当初把最好的学习时间奉献给了游戏.最后发现,玩再多游戏也并没什么卵用. 我也是幸运的,幸运的是前人已留下了太多对.NET平台的探索脚印.我只需要跟随着他们的脚步快速前进,而不会绕很多弯路和四处碰壁. 最后感谢那些写过文章供后人学习的前辈们,虽然很多文章都是七八年前的,但受用至今. 此文既不是破解,也不讲脱壳,只是逆向角度分析.NET程序执行原理.仅希望抛

王爽汇编笔记

  第一章 内存地址空间的地址段分配 地址:0~7FFFH的32kb空间为主随机存储器的地址空间 地址:8000~9FFFH的8kb空间为显存地址空间 地址:A000~FFFFH的24kb空间为各个rom的地址空间   第二章 进入DOS模式 重新启动计算机,进入DOS模式,此时进入的是实模式的DOS 在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS   使用命令 -R 查看寄存器内容 -R 寄存器 可以修改寄存器的内容 -D查看内存中的内容 –D 段地址:偏移地址 输入后

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小demo给大家提供一个思路 先看一下效果 点击英文  变成英文状态点chinese就会变成中文                          源码的下载地址在文章的最下边 多语言用的是资源文件建

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)

32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议把昨天代码熟悉一遍(课程是紧跟着来的,请不要拉下任何一天,因为今天的知识, 可能就和昨天的知识挂钩,昨天的知识,和前天的挂钩.....,当然你如你懂汇编,不是新手,那么则可以直接往下看) 一丶远程线程注入,和汇编远程注入的区别 昨天的代码,大家可能看了(没看也没有关系,就是远程线程注入的代码,开发角