博客地址:http://blog.csdn.net/qq1084283172/article/details/53158970

return 0;  C语言返回0语句的汇编形式

Intel-32汇编:

leave

xor eax, eax

ret

AT&T汇编:

leave

xorl %eax, %eax

ret

从汇编的结果可以看出,返回0的C语言语句,在编译器生成的汇编语句中并没有包含常量,这是编译器优化的结果,它认为复制零的操作比执行异或的运算更耗资源。

操作码与Shellcode:Shellcode其实是一系列的操作码,一般保存在C字符串数组里,,称它为shellcode主要是因为这一系列的操作码是执行shell(例如:/bin/sh或cmd.exe)所必须的指令。

Windows汇编语言中常用寄存器的介绍:

汇编语言中栈结构的学习:

汇编语言中堆结构的学习:

常用的汇编语言指令:

注意:jmp指令和call指令的区别(下面这2个指令真的很重要,要理解透彻)

jmp指令只是单纯的代码执行的跳转,call指令在执行的时候会先将保存下一条将要执行的地址即先保存CS:EIP的值,然后再进行代码执行流程的跳转

注意 ret指令的执行步骤

ret指令在执行的时候,会先获取栈帧中保存的CS和EIP的值,恢复和设置CS和EIP的值,使程序的流程得以正常继续下去。

简单的做个笔记,本来打算打字敲一下笔记的,后来觉得太费时间了,直接截图了--方便。感觉这些知识点是逆向工程学习的基础,工作一段时间了,很多东西都没接触了,快忘了,简短的记录一下。

书籍参考:

《IDA Pro 代码破解解密》

《IDA Pro 代码破解解密》笔记一的更多相关文章

  1. JavaScript高级程序设计笔记之面向对象

    说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...

  2. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

  3. javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记

    1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...

  4. JavaScript高级程序设计笔记(一)

    ---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...

  5. JavaScript高级程序设计笔记 事件冒泡和事件捕获

    1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...

  6. <javascript高级程序设计>笔记

    1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...

  7. javaScript高级程序设计笔记 2

    Undefinde Null Boolean Number String    基本类型 Object    引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...

  8. javaScript高级程序设计笔记 1

    核心  ECMAScript 文档对象模型  DOM 浏览器对象模型 BOM 延迟脚本  defer typeof操作符      判断字符类型  返回   undefined  boolean  s ...

  9. Javascript高级程序设计笔记 <第五章> 引用类型

    一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...

  10. Javascript高级程序设计笔记(很重要尤其是对象的设计模式与继承)

    var obj = {'a':'a'}; var fun = function (){} console.log(typeof obj);//object console.log(typeof fun ...

随机推荐

  1. rabbitmq如何保证消息可靠性不丢失

    目录 生产者丢失消息 代码模拟 事务 confirm模式确实 数据退回监听 MQ事务相关软文推荐 MQ丢失信息 消费者丢失信息 之前我们简单介绍了rabbitmq的功能.他的作用就是方便我们的消息解耦 ...

  2. LeetCode-祖父节点值为偶数的结点值之和

    祖父节点值为偶数的结点值之和 LeetCode-1315 这题稍微难度有点大,但是仔细思考还是可以找到思路的. 因为只需要找到祖父节点这最上两层,所以可以带一个参数记录一下祖父节点是否是偶数,以及父节 ...

  3. OpenGL中的简单坐标系初看+VAO/VBO/EBO

    你好,三角形 一: 关于坐标的问题 标准化设备坐标:输入的顶点数据就应该在标准化设备坐标范围里面即:x,y,z的值都在(-1-1)之间.在这个区间之外的坐标都会被丢弃. 1.1一旦顶点数据传入顶点着色 ...

  4. POJ-2031(最小生成树+kruskal)

    Building a Space Station POJ-2031 注意,这里的输出需要是%f型而不是%lf型的,否则wa. #include<iostream> #include< ...

  5. js和c#小数四舍五入

    <script language="javascript"> document.write("<h1>JS保留两位小数例子</h1>& ...

  6. Fedora/Centos使用dnf/yum为Firefox安装Flash,两行命令超简单

    Fedora/Centos使用dnf/yum为Firefox安装Flash,两行命令超简单 Flash已死,我想这个方法应该已经失效了吧,毕竟是从adobe的官方下载的,应该是撤链接了,我也很久没安装 ...

  7. 前端 JS 加密漏洞挖掘篇

    案例一 oxo1 前言 某授权项目,登录口用户名和密码都进行了加密,之前从来没搞过记录一下学习过程. 看了CoolCat 师傅写的 https://github.com/TheKingOfDuck/b ...

  8. Hibernate在oracle中ID增长的方式

    引用链接:http://blog.csdn.net/w183705952/article/details/7367272 Hibernate在oracle中ID增长的方式 第一种:设置ID的增长策略是 ...

  9. python基础学习之函数基础和部分内置函数

    在函数调用的时候,必备参数必须要传入 函数定义: def  函数名: 代码块pass return  返回值 函数名命名规则: 字母.数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有 ...

  10. Excel老式技术

    Excel老式技术 VBS宏脚本嵌入明文代码