《IDA Pro 代码破解解密》笔记一
博客地址: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 代码破解解密》笔记一的更多相关文章
- JavaScript高级程序设计笔记之面向对象
说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...
- javascript高级程序设计--笔记01
概述 JavaScript的实现包含三个部分: 1 核心(ECMAScript) 提供核心语言功能 2 文档对象模型(DOM) 一套提供了访问以及操作网页内容的API 3 浏览器对象模型( ...
- javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记
1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...
- JavaScript高级程序设计笔记(一)
---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...
- <javascript高级程序设计>笔记
1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...
- javaScript高级程序设计笔记 2
Undefinde Null Boolean Number String 基本类型 Object 引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...
- javaScript高级程序设计笔记 1
核心 ECMAScript 文档对象模型 DOM 浏览器对象模型 BOM 延迟脚本 defer typeof操作符 判断字符类型 返回 undefined boolean s ...
- Javascript高级程序设计笔记 <第五章> 引用类型
一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...
- Javascript高级程序设计笔记(很重要尤其是对象的设计模式与继承)
var obj = {'a':'a'}; var fun = function (){} console.log(typeof obj);//object console.log(typeof fun ...
随机推荐
- HDOJ-2181(深搜记录路径)
哈密顿绕行世界问题 HDOJ-2181 1.本题是典型的搜索记录路径的问题 2.主要使用的方法是dfs深搜,在输入的时候对vector进行排序,这样才能按照字典序输出. 3.为了记录路径,我使用的是两 ...
- Java开发工程师最新面试题库系列——Mybatis框架部分(附答案)
Mybatis Mybatis是什么框架? 答:持久层框架 Mybatis和ORM有什么区别? 答:ORM是对象关系映射的一种设计理念,也就是对象属性对应数据库字段,让开发人员以操作对象的方式操作数据 ...
- ElasticSearch(ES)使用Nested结构存储KV及聚合查询
自建博客地址:https://www.bytelife.net,欢迎访问! 本文为博客同步发表文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://w ...
- xss和实体编码的一点小思考
首先,浏览器渲染分以下几步: 解析HTML生成DOM树. 解析CSS生成CSSOM规则树. 将DOM树与CSSOM规则树合并在一起生成渲染树. 遍历渲染树开始布局,计算每个节点的位置大小信息. 将渲染 ...
- celery 与 flask 实现异步任务调度
Flask 定了2中上下文,来实现机遇线程\协程的,wsgi服务的请求(request.session)和存储(g,current_app )过程,通过栈来完成不同线程和协程的上下文切换,在与cele ...
- sublime text3里 修改TAB键为缩进为四个空格
1. 菜单栏里点击 Preferences-> Setting里面,右侧小窗口User 2. 在弹出来的文本里,添加如下两行:{ "tab_size": 4, "t ...
- python 序列与字典
序列概念: 序列的成员有序排列,可以通过下标访问到一个或几个元素,就类似与c语言的数组. 序列的通用的操作: 1:索引 11 = [1,2,3,4] 11[0] = 1 2:切片 11[1,2,3,4 ...
- cadence Virtuoso ADE原理图AnalogLib库中的switch使用
Symbol: switch A,B:等效于一个电阻; C,D:等效于控制开关(CD间的控制电压控制AB的断开或闭合); open switch resistance:开关断开状态下的等效电阻(AB之 ...
- BUUCTF 基础CODE REVIEW
1.说明: 题目来自于BUUCTF 的基础部分,内容就如题,是一个代码审计.代码如下: <?php /** * Created by PhpStorm. * User: jinzhao * Da ...
- 学习C#第二天
变量 变量是什么? 在数学中,我们对变量的概念有一定的了解和认识,如y=x^2,其中,x,y都是变量. 定义 一个变量就是存储区(内存)中的一个存储单元 变量的声明及初始化 使用变量的步骤 声明一个变 ...