摘要:
第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程。本章将更加详细地介绍线程的知识。尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用。还要介绍系统如何使用线程内核对象来管理线程。与进程内核对象一样,线程内核对象也拥...
阅读全文
posted @ 2016-09-11 19:26
猫携
阅读(50)
推荐(0)
摘要:
7.5 扩展加法和减法 扩展精度的假发和减法是指任意尺寸大小数字的加法和减法。例如要求你写一个C++程序,把两个1024位的整数相加,解决方案可不是那么简单!但在汇编语言中,ADC(带进位加)指令和SBB(带进位减)指令非常适合于解决此类问题。 7....
阅读全文
posted @ 2016-09-11 19:21
猫携
阅读(103)
推荐(0)
摘要:
7.3 移位和循环移位的应用 7.3.1 多双字移位 要对扩展精度整数(长整数)进行移位操作,可把它划分为字节数组、字数组或双字数组,然后再对该数组进行移位操作。在内存中存储数字时通常采用的方式是最低字节在最低的地址位置上(小尾顺序)。下面的步骤以...
阅读全文
posted @ 2016-09-11 19:17
猫携
阅读(144)
推荐(0)
摘要:
5.4 查询作业统计信息 前面已经介绍了如何使用 Q u e r y I n f o r m a t i o n J o b O b j e c t函数来获取对作业的当前限制信息。也可以使用它来获取关于作业的统计信息。例如,若要获取基本的统计信息,可以...
阅读全文
posted @ 2016-09-04 20:38
猫携
阅读(46)
推荐(0)
摘要:
第5章 作 业 通常,必须将一组进程当作单个实体来处理。例如,当让 Microsoft Developer Studio为你创建一个应用程序项目时,它会生成 C l . e x e,C l . e x e则必须生成其他的进程(比如编译器的各个函数传递)...
阅读全文
posted @ 2016-09-04 20:31
猫携
阅读(58)
推荐(0)
摘要:
第七章 整数算术指令 7.1 简介 每种汇编语言都有进行操作数移位的指令,移位和循环移位指令在控制硬件设备、加密数据,以及实现高速的图形操作时特别有用。本章讲述如何进行移位和循环移位操作以及如何使用移位操作进行高效的乘法和出发运算。 接下来,我...
阅读全文
posted @ 2016-09-04 20:19
猫携
阅读(117)
推荐(0)
摘要:
4.3 终止进程的运行 若要终止进程的运行,可以使用下面四种方法: • 主线程的进入点函数返回(最好使用这个方法) 。 • 进程中的一个线程调用E x i t P r o c e s s函数(应该避免使用这种方法) 。 • 另一个进程中的线程调用Te ...
阅读全文
posted @ 2016-08-28 18:33
猫携
阅读(72)
推荐(0)
摘要:
4.2 CreateProcess函数 可以用C r e a t e P r o c e s s函数创建一个进程: BOOL CreateProcessW( _In_opt_ LPCWSTR lpApplicationName, _I...
阅读全文
posted @ 2016-08-28 18:28
猫携
阅读(54)
推荐(0)
摘要:
6.6 应用:有限状态机 这个东西说了半天,感觉就是把逻辑弄得跟有向图一样,没看出来什么高端的东西,下面就整理下书上说的概念: 有限状态机(FSM,Finite-State Machine)是依据输入改变状态机器或程序。使用图来表示一个有限状态机是非...
阅读全文
posted @ 2016-08-27 19:30
猫携
阅读(71)
推荐(0)
摘要:
6.3 条件跳转 6.3.1 条件结构 在IA-32指令集中没有高级的逻辑结构,但无论多么复杂的结构,都可以使用比较和跳转指令组合来实现。执行条件语句包括两个步骤:首先,使用CMP,AND,SUB之类的指令修改CPU标志六七次,使用条件跳转指令测试...
阅读全文
posted @ 2016-08-27 19:23
猫携
阅读(107)
推荐(0)
摘要:
条件处理 本章要点 1.简介 2.布尔和比较指令 3.条件跳转 4.条件循环指令 5.条件结构 6.应用:有限状态机 7.决策伪指令 6.1 简介 本章,读者将看到高级条件分支如何翻译成底层的实现代码。 处理硬件设备的程序必须能够操控数字中的单个数据...
阅读全文
posted @ 2016-08-27 19:13
猫携
阅读(108)
推荐(0)
摘要:
第4章 进 程 本章介绍系统如何管理所有正在运行的应用程序。首先讲述什么是进程,以及系统如何创建进程内核对象,以便管理每个进程。然后将说明如何使用相关的内核对象来对进程进行操作。接着,要介绍进程的各种不同的属性,以及查询和修改这些属性所用的若干个函数...
阅读全文
posted @ 2016-08-23 21:10
猫携
阅读(60)
推荐(0)
摘要:
第3章内核对象 在介绍Windows API的时候,首先要讲述内核对象以及它们的句柄。本章将要介绍一些比较抽象的概念,在此并不讨论某个特定内核对象的特性,相反只是介绍适用于所有内核对象的特性。 首先介绍一个比较具体的问题,准确地理解内核对象对于想要...
阅读全文
posted @ 2016-08-23 20:14
猫携
阅读(83)
推荐(0)
摘要:
5.3.3 库测试程序 测试程序#1:整数I/O 该测试程序把输出文本的颜色改为蓝底黄字,然后以十六进制数显示七个数组的内容,最后提示用户输入一个有符号整数,再分别以十进制、十六进制和二进制格式重复显示该整数: TITLE Library Test ...
阅读全文
posted @ 2016-08-21 15:02
猫携
阅读(85)
推荐(0)
摘要:
第2章U n i c o d e 随着M i c r o s o f t公司的Wi n d o w s操作系统在全世界日益广泛的流行,对于软件开发人员来说,将目标瞄准国际上的各个不同市场,已经成为一个越来越重要的问题。美国的软件版本比国际版本提前6个月...
阅读全文
posted @ 2016-08-18 20:40
猫携
阅读(36)
推荐(0)
摘要:
过程 5.1 简介 需要阅读本章的理由可能很多: 1.读者可能想要学习如何在汇编语言中进行输入输出。 2.应该了解运行时栈(runtime stack),运行时栈是子过程(函数)调用以及从子过程返回的基本机制。 3.通过本章,将学到如何把大...
阅读全文
posted @ 2016-08-16 20:42
猫携
阅读(50)
推荐(0)
摘要:
第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的。 当调用一个Wi n d o w s函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执...
阅读全文
posted @ 2016-08-15 23:14
猫携
阅读(112)
推荐(0)
摘要:
API Hook ApiHook又叫做API劫持,也就是如果A程序调用了B.cll里面的C函数,我们可以做到当A调用C函数执行的时候,直接执行我们自己事先准备好的函数,之后我们在执行真正的C,当然我们可以不执行C或者更改C的参数等等,实现的核心思路就是...
阅读全文
posted @ 2016-08-14 18:02
猫携
阅读(1060)
推荐(0)
摘要:
DLL注入 刚刚整理的代码注入(远程线程注入)现在整理这个DLL注入,DLL注入比较常用,相比远程代码注入DLL注入没有什么太多的限制,而且实现起来比较简单,当然远程线程需要注意的问题DLL很多情况都需要注意,这里不做重复,只说代码注入里面没有说过的部...
阅读全文
posted @ 2016-08-14 17:40
猫携
阅读(73)
推荐(0)
posted @ 2016-08-14 17:25
猫携
阅读(0)
推荐(0)
摘要:
4.3 和数据相关的操作符和伪指令 操作符和伪指令并非机器可执行的指令,相反,它们是由汇编器进行解释的。开发者可以使用一系列的MASM操作符或伪指令获取数据的地址以及大小等特征信息: OFFSET操作符返回一个变量相对于其所在段开始的偏移。 PTR ...
阅读全文
posted @ 2016-08-13 02:42
猫携
阅读(113)
推荐(0)
摘要:
我本地使用的环境VS2012(2010)+MASM32,下面的图是在网上找的几个博客拼在一起的,用的是vs2010,但是并不影响。(所有文件我都打包好了,如果懒的话可以直接下载这个包)地址是:http://download.csdn.net/detail/u...
阅读全文
posted @ 2016-08-11 21:36
猫携
阅读(28)
推荐(0)
摘要:
数据传送、寻址和算术运算 4.1 数据传送指令 4.1.1 简介 第一段一大推,就是为了说明汇编相比高级语言来说比较麻烦需要注意很多细节,但是换来的好处是给开发者带来了更大的灵活性。 读者如果肯花时间彻底掌握本章内容,那么本书的后续部分将更容易学习...
阅读全文
posted @ 2016-08-11 19:12
猫携
阅读(124)
推荐(0)
摘要:
3.4 定义数据 3.4.1 内部数据类型 MASM定义了多种内部数据类型,每种数据类型都描述了该模型的变量和表达式的取值集合。数据类型的基本特征是以数据位的数目量的大小:8,16,32,,48,64,80位。其他特征(如有符号、指针、浮点等)主要...
阅读全文
posted @ 2016-08-10 21:51
猫携
阅读(126)
推荐(0)
摘要:
3.2 例子:整数相加减 现在来看一个进行整数加减操作的汇编语言小程序。寄存器用于存放中间数据,我们调用一个库函数在屏幕上显示寄存器的内容。下面是程序的源码: TITLE Add and Subtract (AddSub.asm);This pro...
阅读全文
posted @ 2016-08-10 21:44
猫携
阅读(68)
推荐(0)
摘要:
汇编语言基础 3.1 汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov eax,5 ;5送EAX寄存器 add eax,6 ;EAX寄存器加6 call WriteI...
阅读全文
posted @ 2016-08-09 19:46
猫携
阅读(82)
推荐(0)
摘要:
2.2 IA-32处理器体系结构 如前所述,IA-32是指始于Intel386直到当前最新的奔腾4的系列的处理器(额...这本书是什么时候写的啊,表示现在应该是I7啊),在IA-32的发展过程中,Intel处理器的内部体系结构已经做出了无数的改进,如...
阅读全文
posted @ 2016-08-04 18:53
猫携
阅读(153)
推荐(0)
摘要:
第2章 IA-32处理器体系结构 2.1 基本概念 本章以程序员的视角描述Intel IA-32处理器家族机器计算机系统,包括所有的Intel兼容处理器,如AMD的速龙(Athlon)和皓龙(Opteron)处理器。汇编语言是学习计算机如何运行的绝...
阅读全文
posted @ 2016-08-03 21:50
猫携
阅读(178)
推荐(0)
摘要:
第一章基本概念 1.1 简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architecture 32bit,英特尔32位体系架构)兼容微处理器的汇编语言程序设计,可以使用Intel或AMD的32位/64位处理器运行本所有例子...
阅读全文
posted @ 2016-08-02 15:30
猫携
阅读(169)
推荐(0)
摘要:
解释器模式(interpreter): 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表示为一个简单语言中的句子。这...
阅读全文
posted @ 2016-07-29 15:37
猫携
阅读(40)
推荐(0)
摘要:
享元模式(Flyweight): 运用共享技术有效地支持大量细粒度的对象。 1.如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;还有就是对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少...
阅读全文
posted @ 2016-07-28 19:02
猫携
阅读(53)
推荐(0)
摘要:
中介者模式(Mediator): 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式的优缺点: 1.中介者模式很容易在系统中使用,也很容易在系统中误用...
阅读全文
posted @ 2016-07-27 19:56
猫携
阅读(35)
推荐(0)
摘要:
责任链模式(Chain of Responsibility): 使多个对象都有机会处理请求,从而避免请求的开发者和接收者之前的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 责任链模式的好处: 当客户...
阅读全文
posted @ 2016-07-25 16:15
猫携
阅读(36)
推荐(0)
摘要:
命令模式(Command): 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式代码: #pragma once#include #include using namespa...
阅读全文
posted @ 2016-07-22 16:07
猫携
阅读(42)
推荐(0)
摘要:
桥接模式(Bridge): 将抽象部分与它的实现部分分离,使他们都可以独立地变化。 需要解释一下,什么叫做抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。也就是说手机既...
阅读全文
posted @ 2016-07-19 19:07
猫携
阅读(50)
推荐(0)
摘要:
单例模式(Singleton): 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的颁发就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实...
阅读全文
posted @ 2016-07-18 19:58
猫携
阅读(45)
推荐(0)
摘要:
迭代器模式(Iterator): 提供一种方法顺序访问一个聚合对象中各个元素,而不暴漏该对象的内部表示。 当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。你需要对聚集有多种方式遍历时,可以考虑用迭...
阅读全文
posted @ 2016-07-16 15:59
猫携
阅读(35)
推荐(0)
摘要:
组合模式(Composite): 将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式代码: #pragma once#include #include #include using ...
阅读全文
posted @ 2016-07-14 20:36
猫携
阅读(46)
推荐(0)
摘要:
备忘录模式(Memento): 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象回复到原先保存的状态。 Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态...
阅读全文
posted @ 2016-07-13 21:57
猫携
阅读(45)
推荐(0)
摘要:
适配器模式(Adapter): 将一个类的接口转换成客户希望的;另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 也就是系统的数据和行为都正确,但接口不符合时,我们应该考虑用适配器,目的是使控制范围...
阅读全文
posted @ 2016-07-11 21:37
猫携
阅读(29)
推荐(0)