搜档网
当前位置:搜档网 › OD使用须知常识,CPU寄存器和汇编指令

OD使用须知常识,CPU寄存器和汇编指令

OD使用须知常识,CPU寄存器和汇编指令
OD使用须知常识,CPU寄存器和汇编指令

OD使用须知常识,CPU寄存器和汇编指令

用OD和CE,不断找汇编资料,解读指令,实在是累。总算找到篇比较完整的资料与大家分享。

32位CPU所含有的寄存器有:

4个数据寄存器(EAX、EBX、ECX和EDX)

2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)

6个段寄存器(ES、CS、SS、DS、FS和GS)

1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)

1、数据寄存器

数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。

对低16位数据的存取,不会影响高16位的数据。

这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。

程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高;

寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用;

寄存器ECX称为计数寄存器(Count Register)。

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;

寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,

在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,

而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。

2、变址寄存器

32位CPU有2个32位通用寄存器ESI和EDI。

其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。

寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,

用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。

3、指针寄存器

其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。

32位CPU有2个32位通用寄存器EBP和ESP。

它们主要用于访问堆栈内的存储单元,并且规定:

EBP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;

ESP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,

用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

4、段寄存器

段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成

的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。

CPU内部的段寄存器:

ECS——代码段寄存器(Code Segment Register),其值为代码段的段值;

EDS——数据段寄存器(Data Segment Register),其值为数据段的段值;

EES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

ESS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;

EFS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

EGS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。

在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。

32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简

单描述如下:

实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。

保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。。5、指令指针寄存器

32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。

指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。

在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。

所以,在理解它们的功能时,不考虑存在指令队列的情况。

6、标志寄存器

一、运算结果标志位

1、进位标志CF(Carry Flag)

进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。

2、奇偶标志PF(Parity Flag)

奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

3、辅助进位标志AF(Auxiliary Carry Flag)

在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

(1)、在字操作时,发生低字节向高字节进位或借位时;

(2)、在字节操作时,发生低4位向高4位进位或借位时。

对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。

4、零标志ZF(Zero Flag)

零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

5、符号标志SF(Sign Flag)

符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

6、溢出标志OF(Overflow Flag)

溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

“溢出”和“进位”是两个不同含义的概念,不要混淆。如果不太清楚的话,请查阅《计算机组成原理》课程中的有关章节。

二、状态控制标志位

状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。

1、追踪标志TF(Trap Flag)

当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。

2、中断允许标志IF(Interrupt-enable Flag)

中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。

但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。

具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

CPU的指令系统中也有专门的指令来改变标志位IF的值。

3、方向标志DF(Direction Flag)

方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。具体规定在第5.2.11节——字符串操作指令——中给出。在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。

三、32位标志寄存器增加的标志位

1、I/O特权标志IOPL(I/O Privilege Level)

I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。

如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。

2、嵌套任务标志NT(Nested Task)

嵌套任务标志NT用来控制中断返回指令IRET的执行。具体规定如下:

(1)、当NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;

(2)、当NT=1,通过任务转换实现中断返回。

3、重启动标志RF(Restart Flag)

重启动标志RF用来控制是否接受调试故障。规定:RF=0时,表示“接受”调试故障,否则拒绝之。

在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。

4、虚拟8086方式标志VM(Virtual 8086 Mode)

如果该标志的值为1,则表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。

汇编指令集合

一、常用指令

1. 通用数据传送指令.

MOV 传送字或字节.

MOVSX 先符号扩展,再传送.

MOVZX 先零扩展,再传送.

PUSH 把字压入堆栈.

POP 把字弹出堆栈.

PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP 交换32位寄存器里字节的顺序

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里)

XLAT 字节查表转换.

BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL ) 2. 输入输出端口传送指令.

IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )

OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)

输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.

3. 目的地址传送指令.

LEA 装入有效地址.

例: LEA DX,string ;把偏移地址存到DX.

LDS 传送目标指针,把指针内容装入DS.

例: LDS SI,string ;把段地址:偏移地址存到DS:SI.

LES 传送目标指针,把指针内容装入ES.

例: LES DI,string ;把段地址:偏移地址存到ESDI.

LFS 传送目标指针,把指针内容装入FS.

例: LFS DI,string ;把段地址:偏移地址存到FSD.

LGS 传送目标指针,把指针内容装入GS.

例: LGS DI,string ;把段地址:偏移地址存到GSDI.

LSS 传送目标指针,把指针内容装入SS.

例: LSS DI,string ;把段地址:偏移地址存到SSDI.

4. 标志传送指令.

LAHF 标志寄存器传送,把标志装入AH.

SAHF 标志寄存器传送,把AH内容装入标志寄存器.

PUSHF 标志入栈.

POPF 标志出栈.

PUSHD 32位标志入栈.

POPD 32位标志出栈.

二、算术运算指令

ADD 加法.

ADC 带进位加法.

INC 加1.

AAA 加法的ASCII码调整.

DAA 加法的十进制调整.

SUB 减法.

SBB 带借位减法.

DEC 减1.

NEC 求反(以0 减之).

CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).

AAS 减法的ASCII码调整.

DAS 减法的十进制调整.

MUL 无符号乘法.

IMUL 整数乘法.

以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.

DIV 无符号除法.

IDIV 整数除法.

以上两条,结果回送:

商回送AL,余数回送AH, (字节运算);

或商回送AX,余数回送DX, (字运算).

AAD 除法的ASCII码调整.

CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)

CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)

CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令

AND 与运算.

OR 或运算.

XOR 异或运算.

NOT 取反.

TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).

SHL 逻辑左移.

SAL 算术左移.(=SHL)

SHR 逻辑右移.

SAR 算术右移.(=SHR)

ROL 循环左移.

ROR 循环右移.

RCL 通过进位的循环左移.

RCR 通过进位的循环右移.

以上八种移位指令,其移位次数可达255次.

移位一次时, 可直接用操作码. 如SHL AX,1.

移位>1次时, 则由寄存器CL给出移位次数.

如MOV CL,04

SHL AX,CL

四、串指令

DS:SI 源串段寄存器:源串变址.

ES I 目标串段寄存器:目标串变址.

CX 重复次数计数器.

AL/AX 扫描值.

D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量. Z标志用来控制扫描或比较操作的结束.

MOVS 串传送.

( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )

CMPS 串比较.

( CMPSB 比较字符. CMPSW 比较字. )

SCAS 串扫描.

把AL或AX的内容与目标串作比较,比较结果反映在标志位.

LODS 装入串.

把源串中的元素(字或字节)逐一装入AL或AX中.

( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )

STOS 保存串.

是LODS的逆过程.

REP 当CX/ECX0时重复.

REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX0时重复.

REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX0时重复.

REPC 当CF=1且CX/ECX0时重复.

REPNC 当CF=0且CX/ECX0时重复.

五、程序转移指令

1.简单的条件转移指令

JZ(或jE) OPR---------------结果为零转移, 测试条件ZF=1

JNZ(或jNE) OPR --------------结果不为零转移,测试条件ZF=0

JS OPR----------------------结果为负转移, 测试条件SF=1

JNS OPR---------------------结果为正转移, 测试条件SF=0

JO OPR--------------------- 溢出转移, 测试条件OF=

JNO OPR --------------------不溢出转移, 测试条件SF=0

JP OPR ---------------------结果为偶转移, 测试条件SF=1

JNP OPR --------------------结果为奇转移, 测试条件SF=0

JC OPR -------------------- 有进位转移, 测试条件SF=1

JNC OPR --------------------无进位转移, 测试条件SF=0

2.无符号比较条件转移指令(以下指令经常是CMP OPD,OPS后面的指令根据比较结果来实现转移) JB(或JNAE) opd --------------小于或者不大于等于则转移

JNB(或JAE) opd---------------不小于或者大于等于则转移

JA(或NJBE) OPD---------------大于或者不小于等于则转移

JNA(或JBE) OPD---------------不大于或者小于等于则转移

3.带符号比较条件转移指令

JL(或JNGE) --------------小于或者不大于等于则转移

JNL(或JGE)--------------不小于或者大于等于则转移

JG(或NJLE)---------------大于或者不小于等于则转移

JNG(或JLE)---------------不大于或者小于等于则转移

六、调用子程序与返回指令

CALL 子程序调用指令

RET 子程序返回指令

六、其它指令

OFFSET -------------------- 返回偏移地址

SEG -------------------- 返回段地址

EQU(=) -------------------- 等值语句

PURGE -------------------- 解除语句

DUP -------------------- 操作数字段用复制操作符

SEGMENT,ENDS -------------------- 段定义指令

ASSUME -------------------- 段地址分配指令

ORG -------------------- 起始偏移地址设置指令

$ --------------------地址计数器的当前值

PROC,ENDP -------------------- 过程定义语句

NAME,TITLE,END -------------------- 程序开始结束语句

MACRO,ENDM --------------------宏定义指令

XLAT (TRANSLATE)-------------------- 换码指令----

七、条件标志

ZF 零标志-- 当结果为负时,SF=1,否则,SF=0.

AF 辅助进位标志---运算过程中第三位有进位值,置AF=1,否则,AF=0

PF 奇偶标志------当结果操作数中偶数个\"1\",置PF=1,否则,PF=0

SF 符号标志----当结果为负时,SF=1;否则,SF=0.溢出时情形例外

CF 进位标志----- 最高有效位产生进位值,例如,执行加法指令时,MSB有进位,置CF=1;否则,CF=0. OF 溢出标志-----若操作数结果超出了机器能表示的范围,则产生溢出,置OF=1,否则,OF=0

常用修改方法

1、定位在cmp或test后的判断跳转,je、jz如此之类的...

遇到这样的,我一般都会把它们改成jmp就能过,当然也要看看上下代码的意思,不然可能出错...个人认为这样修改的效果还是不错

的..

2、定位在跳转后的地址,如je xxxxxxxx ,jmp xxxxxxxx 之类的xxxxxxxx上...

一般遇到是判断跳转的je,jnz的...按照第一个方法把跳转符改改就能过...如把je改成jmp...遇到是jmp xxxxxxxx的,就试试看下

面有没有空

位构造下push xxxxxxxx

ret

或者可以把jmp xxxxxxxx ,用跳转转移到其它地方...

3、定位在call eax之类上...

把它改成push eax或其它...

4、定位在call上的...

先跟进call后面的地址看看,因为有时候那里往上拉一句就可能会有NOP之类的语句,那么我们把call后面的地址向前移一位就可以

过...

如果没有NOP,我们可以用跳转转移...

5、定位在OR或者XOR上...

把OR改XOR或者XOR改OR...

6、定位在mov语句上,如MOV DWORD PTR SS:[ESP+14],ESI...

我们可以把它改成mov esp,esi

add esp,14

7、定位在cmp语句,如cmp eax,esp

jnz xxxxxxxx

那么遇到这样的,我们可以把这两句NOP掉,然后加上jmp xxxxxxxx ,这里意思就是我们不要那个比较,把代码直接跳到xxxxxxx x上

运行....

遇到test 这样的也可以试试这个方法...

8、定位在字符串上,但是不能用改大小写的方法修改,修改就出错...

例如pcshare有一个定位在“%s%s%s”上的...我们可以首先用C32把“%s%s%s”向前移一位,然后用OD载入,右键,超级字符串参考

查找ASCII,然后找到所有的“s%s%s”,由于我们向前移了一位,所以显示的应该是“s%s%s”,然后双击来一个个修改...双击后会

发现,

对应的语句会有一个地址,我们把它改掉,向前一位,如4AD05168就改成4AD05167,接着同样方法继续改其它有“s%s%s”的...

这个方法通用字符串的修改...

总结:上面的只不过是我在免杀时的一些经验...实际免杀还需要读懂上下代码,实际分析,并不代表按照上面这样改就一定可以...

做人要灵活,

方法都是自己悟出来的,没什么完美的通用方法...自己的免杀方法才是最好的~

特征码修改总结2~

1. 遇到特征码定位在jmp指令上面的构造替换push xxxxx ret。

举例: jmp xxxxx

构造替换push xxxxx

ret

2. 遇到特征码定位在call指令上的。

举例:

call xxxxx

构造替换: push @f

jmp xxxxx

@@:

;@@的标号表示的是你jmp xxxx指令后面的内存地址。@f也就是引用@@ 的标号,所以此时@f这里填写的就是jmp xxxxx指令后面的

内存地址。。

3. 遇到特征码定位在ret上

举例: ret

构造替换:

jmp dword ptr [esp]

4. 遇到特征码定位在test eax, eax je xxxx or eax, eax, je xxxxx cmp eax, 0 jexxxxxx

举例: test eax, eax

je xxxxxx

构造替换: xchg eax, ecx

jecxz xxxxx

5. 遇到特征码定位在push [xxxxxx]上的。

举例:push [xxxxx]

构造:

在其之前通过xchg [xxxxxx], ebx

然后用寄存器传参: push ebx

最后在下面在通过xchg [xxxxxx], ebx 交换回来。

. 把之前我教的数据段动态恢复和巧用算法加密结合起来。

前提是对汇编大家一定要有所了解,例如一些会员说金山杀的是配置信息上,你完全可以将其这些配置信息所处的地址的数据进行一层加密。或者你可以将其这些偏移所处的数据通过xchg 交换。

dll注意下要进行重定位

call $+5 ;机器码是E8 00000000 00000000是相对地址

@@: pop ebx

sub ebx, @b

下面你就可以通过[ebx+你的偏移]来进行变址寻址了。。

如果觉得本文写得有什么错误或不对,请各位提出啊~!

旅客乘机常识须知

旅客乘机常识须知 ◆民航客机上有哪些主要设施? 在您入座以后,在您前排座椅的背袋里备有《安全须知》,供您阅读和使用。您的座椅上方设有阅读灯、通风器、呼唤铃、氧气面罩。当您有事找乘务员时,请按呼唤铃。当您需要新鲜空气时,请转动风量调节柄。卫生间设在客舱的前(中)、后部,当您进入卫生间后,记住插好门锁。在客舱的左右两侧设有紧急出口,非紧急情况,切忌动用。飞机客舱是增压密封的,为了确保飞行安全,请您不要碰撞和刻划窗上玻璃。如果您还有什么不懂的地方,空中小姐会及时详细地为您解释并提供周到服务。 ◆飞行过程中为什么乘客会有耳堵感? 飞行在飞行过程中,机舱内的气压会因飞行高度变化而变化,旅客此时常感到耳堵、听力下降。您可以嚼口香糖或者多做吞咽、咀嚼动作,就能消除这种不适感。 ◆飞行中乘客发生疾病怎么办? 如果个别的旅客在飞机上得了疾病,也不必担心。飞机上配备有氧气、药箱、急救箱等急救用品,而且飞机上常会有医务工作者,可以帮助乘务员对病人进行治疗。如果情况极其危急,机组可以同地面取得联系,改变飞行计划,找最近的机场着陆,即使地对患者进行抢救。因此,病人的生命安全是有充分保障的。 ◆飞机上为什么不能吸烟? 烟草中的尼古丁是一种中枢神经毒麻剂,它会使飞行人员全身血管收缩,视力下降,而且污染机上空气环境,甚至导致火险。1983年,中国民航局颁布规定,在国内航线旅客班机上禁止吸烟。但旅客乘坐国际航线班机可以吸烟,其他国家也有类似情况。鉴于吸烟的危害被越来越多的人认识,国际民航组织153个成员国代表于1992年10月在加拿大蒙特利尔通过一项决议,规定各国航空公司必须于1996年7月1日以前禁止旅客在国际航班上吸烟。1993年6月,中国民航总局决定,从当年7月1日起,中国国际航线旅客班机上逐步实行禁烟,以保护旅客身体健康。 ◆为什么飞机上禁止使用手机、手提电脑、收音机和游戏机? 在飞机上使用上述物品,会干扰飞机与地面的无线信号联系,尤其在飞机起飞下降时干扰更大,即使只造成很小角度的航向偏离,也可能导致机毁人亡的后果。当然,机上提供的专用电子娱乐设施除外。 ◆乘机旅行最安全 每天都有三百多万人在世界各地飞来飞去。1997年,世界各航空公司共执行航班1800万架次,运送旅客13亿人次,仅发生严重事故11起,风险率约为三百万分之一。用一种更形象的方式说:您每天飞一次,要飞8200年才可能飞够300万次。尽管如此,全球航空界人士仍然在努力,以使航空旅行更加安全。 ◆乘坐飞机的安全检查为什么特别严格?

(完整word版)汇编语言常用指令大全,推荐文档

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。

机场旅客须知:安检须知标准范本

编号:QC/RE-KA9673 机场旅客须知:安检须知标准范 本 In the collective, in order to make all behaviors have rules and regulations, all people abide by the unified norms, so that each group can play the highest role and create the maximum value. (管理规范示范文本) 编订:________________________ 审批:________________________ 工作单位:________________________

机场旅客须知:安检须知标准范本 使用指南:本管理规范文件适合在集体中为使所有行为都有章可偱,所有人都共同遵守统一的规范,最终创造高效公平公开的的环境,使每个小组发挥的作用最高值与创造的价值最大化。文件可用word 任意修改,可根据自己的情况编辑。 机场旅客须知:安检须知 一、二维码电子登机牌 20xx年9月28日起,深圳机场正式启用二维码电子登机牌过检登机服务,由深圳机场乘坐国内航班且无托运行李的旅客,通过相关渠道办理二维码电子登机牌后,凭个人有效身份证件及二维码电子登机牌即可直接办理安检和登机手续,享受从值机、安检到登机的顺畅出行体验。 据了解,相比传统值机方式,此次新推出的二维码电子登机牌过检登机服务省去了打印纸质登机牌的环节。对无托运行

李的商务旅客,此举将进一步提高出行效率,提升乘机的顺畅体验。乘坐深圳始发的国内出港航班且无托运行李的旅客,可使用手机通过航旅纵横App、各航空公司网上值机等渠道(需支持生成电子登机牌)提前办理值机并获取二维码电子登机牌。到达机场后,凭个人有效身份证件和二维码电子登机牌,可直接前往国内安检区进行安检验证。登机前,旅客需出示二维码电子登机牌,由工作人员扫描并打印登机凭条给旅客作为登机凭证,并在登机时交由安全监护人员复查。 机场方面特别提醒,目前深圳机场二维码电子登机牌过检登机服务仅支持乘坐深圳始发国内航班且无托运行李的普通旅

(完整word版)汇编语言指令集合-吐血整理,推荐文档

8086/8088指令系统记忆表 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器;

汇编语言知识大全

第一章基础知识: 一.机器码:1.计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二.存储器:1.存储单元中数据和指令没任何差别。 2.存储单元:Eg:128个储存单元(0~127)128byte。 //1字节=1B=1byte=8bit 条件反射:1存储单元=1B=8个2进制;以后的ax,cs之类的占两个存储单元, ah之类的占一个 3.CPU对存储器的读写:地址信息+控制信息+数据信息 三.总线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到 2^N个内存单元。 //因为一根总线只能表示0,1,N 根的话可以表示2^N 2.数据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3.控制总线:cpu对元器件的控制能力。越多控制力越强。

四.内存地址空间: 1.由地址总线决定大小。 2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3.接口卡:由于cpu不能直接控制外设,需通过接 口卡间接控制。 4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控他们的时候,把他们都当作内存来对待,把他们总的 看作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。所以一些地址的功能是对应 一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而 寄存器是可以用来指令读写的部件。8086有14个寄存器(都是16位,2个存储空间)。 一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位

客舱安全常识(最新版)

Safety issues are often overlooked and replaced by fluke, so you need to learn safety knowledge frequently to remind yourself of safety. (安全管理) 单位:___________________ 姓名:___________________ 日期:___________________ 客舱安全常识(最新版)

客舱安全常识(最新版) 导语:不安全事件带来的危害,人人都懂,但在日常生活或者工作中却往往被忽视,被麻痹,侥幸心理代替,往往要等到确实发生了事故,造成了损失,才会回过头来警醒,所以需要经常学习安全知识来提醒自己注意安全。 看安全须知 看安全须知,顾名思义,就是让您了解飞机上和安全有关的设备及注意事项,从而更好地保护您的安全。千万不要认为自己经常坐飞机就可以置之不理,您乘坐的机型的设备和出口可不一定是一样的。第一次乘机的旅客更要逐字逐句地仔细听,万一发生紧急情况,不要因为您不知道氧气面罩怎么使用而失去生存的机会,那可是太可惜了。 打手机 从关舱门开始到打开舱门,手机都是禁止使用的。许多旅客都知道使用手机会影响导航系统,但随着手机的不断更新,有些商家推出了飞行模式的手机,并声称这种手机可以在飞机上使用。在此郑重声明:这种飞行模式的手机在飞行中同样是不能开机的,因为民航当局并未认可,所以千万别对空姐说:“你不懂,我这是飞行模式手机”。 大件行李 机票上不是规定了随身可带的行李重量规格吗?大件行李上不了

飞机,出口过道都不能放行李,即便是放下了,别以为这样就安全了。您要知道,起飞前飞行员都要算起飞重量的。一位旅客的行李超重部分没算进去,甚至十位、百位旅客的行李超重都没算进去,这个偏差可就大了,要是超过起飞重量,飞机起飞时没拉起来,后果将不堪设想。 出口座位 坐在出口座位的旅客,任务艰巨、责任重大。不是乘务人员小题大做,可不是所有乘客都可以坐在这里的。首先空姐会进行目测,看您是否适合坐在这里。接下来会向您讲解出口座位和安全门,并提醒您正常情况下千万不要拉动紧急出口。在紧急撤离时坐在这里的您一定要有判断能力,如果需要迅速打开紧急出口,协助其他旅客撤离。因此为了旅客安全,空姐可以适当调换出口座位的旅客。 系上安全带 “系上不舒服”、“没关系我不怕”,话可别说得太早了。要是飞机遇到不好的天气,急速下降几百米,您没系安全带可就惨了,真的会成为空中飞人,不是脑震荡,头上也得起个大包。这样都不怕,我要佩服您了。当然这种事情最好不要发生,不怕一万就怕万一,还是请您系上吧。

航空常识乘飞机行李托运注意事项

航空常识---乘飞机行李托运注意事项 民航局关于行李托运的规定如下(国内的): 三十六条承运人承运的行李,只限于符合本规则第三条第二十三项定义范围内的物品。承运人承运的行李,按照运输责任分为托运行李、自理行李和随身携带物品。重要文件和资料、外交信袋、证券、货币、汇票、贵重物品、易碎易腐物品,以及其他需要专人照管的物品,不得夹入行李内托运。承运人对托运行李内夹带上述物品的遗失或损坏按一般托运行李承担赔偿责任。国家规定的禁运物品、限制运输物品、危险物品,以及具有异味或容易污损飞机的其他物品,不能作为行李或夹入行李内托运。承运人在收运行李前或在运输过程中,发现行李中装有不得作为行李或夹入行李内运输的任何物品,可以拒绝收或随时终止运输。旅客不得携带管制刀具乘机。管制刀具以外的利器或钝器应随托运行李托运,不能随身携带。 第三十七条托运行李必须包装完善、锁扣完好、捆扎牢固,能承受一定的压力,能够在正常的操作条件下安全装卸和运输,并应符合下列条件,否则,承运人可以拒绝收运: (一)旅行箱、旅行袋和手提包等必须加锁; (二)两件以上的包件,不能捆为一件; (三)行李上不能附插其他物品; (四)竹篮、网兜、草绳、草袋等不能作为行李的外包装物; (五)行李上应写明旅客的姓名、详细地址、电话号码。托运行李的重量每件不能超过50 公斤,体积不能超过40(60(100 厘米,超过上述规定的行李,须事先征得承运人的同意才能托运。自理行李的重量不能超过10 公斤,体积每件不超过20(40(55 厘米。随身携带物品的重量,每位旅客以5 公斤为限。持头等舱客票的旅客,每人可随身携带两件物品。每件随身携带物品的体积均不得超过

OD菜鸟的福音(经典讲解CALL的找法)

详细教程 目录 第一章概述 (1) 第二章组件 (5) 一、一般原理[General prnciples] (5) 二、反汇编器[Disassembler] (8) 三、分析器[Analysis] (9) 四、Object扫描器[Object scanner] (12) 五、Implib扫描器[Implib scanner] (12) 第三章 OllyDbg的使用 (13) 一、如何开始调试[How to start debugging session] (13) 二、CPU 窗口[CPU window] (14) 三、断点[Breakpoints] (14) 四、数据窗口[Dump] (15) 五、可执行模块窗口[Executable modules window] (16) 六、内存映射窗口[Memory map window] (17) 七、监视与监察器[Watches and inspectors] (19) 八、线程[Threads] (19) 九、调用栈[Call stack] (20) 十、调用树[Call tree] (21) 十一、选项[Options] (21) 十二、搜索[Search] (22) 十三、自解压文件[Self—extracting (SFX) files] (22) 十四、单步执行与自动执行[Step—by—step execution and animation] (23) 十五、Hit跟踪[Hit trace] (23) 十六、Run 跟踪[Run trace] (24) 十七、快捷键 (26) 十八、插件[Plugins] (29) 十九、技巧提示[Tips and tricks] (29) 第四章其他功能 (30) 一、调试独立的DLL[Debugging of stand—alone DLLs] (30) 二、解码提示[Decoding hints] (32) 三、表达式赋值[Evaluation of expressions] (32) 四、自定义函数描述[Custom function descriptions] (34)

汇编语言标志位(CF)及一些常用指令

汇编语言标志位(CF)及一些常用指令 英文翻译: carry 进位 flag标志 NV: no overflow OV: overflow UP: up DN:down DI: disable interrupt EI: enable interrupt PL: plus NG: negative NZ: no zero ZR: zero NA: no assistant carry AC: assistant carry PO: parity odd PE: parity even 奇偶校验 NC: no carry CY: carry 汇编标志位: 标志名标志 1 标志 0 OF (溢出标志) OV NV DF (方向标志) UP DN IF (中断标志) DI EI SF (符号标志位) PL NG ZF (零标志) NZ ZR AF (辅助进位标志位) NA AC PF (奇偶标志) PO PE CF (进位标志) NC CY OF 溢出(是/否) OV OVerflow NV Not oVerflow DF 方向(减量/增量) DN DowN UP UP IF 中断(允许/关闭) EI Enable Interrupt DI Disable Interrupt SF 符号(负/正) NG NeGative PL PLus ZF 零(是/否) ZR ZeRo NZ Not Zero AF 辅助进位(是/否) AC Auxiliary Carry NA Not Auxiliary PF 奇偶(是/否) PE Parity Even PO Parity Odd CF 进位(是/否) CY CarrY NC Not Carry 英文解释: NV: no overflow OV: overflow UP: up DN:down DI: disable interrupt EI: enable interrupt PL: plus NG: negative NZ: no zero ZR: zero NA: no assistant carry AC: assistant carry PO: parity odd PE: parity even NC: no carry CY: carry

TRANSCAD使用技巧(od表、id转换、合并分区)

TC使用技巧 目录 1、转换id:选中质心连接点id (1) 2、连接数据 (2) 3、调整主题图 (3) 4、TransCAD中建立交通小区的两种方法 (6) 5、TransCAD直接导入OD矩阵的方法 (7) 6、tc分配结果另存为dbf文件可以用excel直接打开 (10) 7、小区合并大区 (10) 1、转换ID:选中质心连接点ID 转换出效果如下 1

2、连接数据 先将一组dataview另存为bin格式,然后用tc打开bin ,点击或是dataview中的jion,如下图: 点ok出如下结果: 2

选中index实验填充小区实际编号,,6、矩阵对角线清零 3、调整主题图 点弹出以下对话框,点styles 3

质心输出 1、在学习TransCAD之前,先来认识几个文件格式: (1)dbd:保存点、线、面层的数据;(2)map:地图文件,编辑完dbd后,生成map;(3)bin:表格数据,存储一般表格形式的数据,编辑完bin后,若想保存,出来dvw格式的文件,表示普通数据表的外观;(4)mtx:矩阵文件,一般用来表示OD数据之类的,若想创建矩阵文件,需打开创建好的bin文件或者map文件,因为这是基于bin、map创建的。 4

2、使用该软件之前,最好进行一些设置:edit-preferences,包括地图精度,存放位置之类的,改成中国的习惯 3、创建面类型文件:new-geographic file-area geographic file,然后进行设置面类型文件的字段 4、点击“铅笔+方格”快捷菜单,可进行面的绘制之类的操作,“i”可进行面(小区)的信息扩展 5、如果修改面的类型,可点击“类似三层图层”的那个快捷菜单 6、修改字段的话,可点击dadaview-modify table,前提条件是:表格数据并没有和面文件join,joinzai dataview菜单下 7、创建表格文件时,基本上是在“edit”菜单下进行操作,增加记录,删除记录,等 8、建立矩阵文件的前提是打开创建好的bin文件或者地图文件。将外部的OD数据导入到建好的矩阵文件中,直行matrix-inport,填写好对应的字段即可。当然也可从矩阵文件中进行数据的导出,方便进行编辑 9、制作期望线:直行tools-geographic analysis-desire lines,将字段一一对应,就制作好了期望线,期望线直观的显示小区之间出行分布量的大小。宽度代表了量的大小。如果修改期望线的线条之类的,可直接点击“有三个星星”的快捷菜单。 交通需求预测建模即传统的“四阶段法”---出行产生,出行分布,方式划分,交通分配。 1)建设项目交通需求预测主要包括目标年背景交通量预测和拟建项目新增交通量预测两方面。目标年交通量即为背景交通量与拟建项目新增交通量之和。 5

汇编语言指令

汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2

格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 影响标志: C,P,Z,S,O ROR,ROL,RCR,RCL

乘机基本知识

乘机基本知识 乘机基本知识大全 ?1在线订购机票的应注意哪些问题? 在线订购机票的注意事项: -旅客在网上购票必须遵守《中华人民共和国民用航空法》、民航总局发布的国内客运规定及航空公司关于旅客运输的各项规定。 -特殊旅客(包括重要旅客、伤病旅客、孕妇、无成人陪伴儿童等),因需办理有关特殊服务手续,故不能在网上购票。如有违反而产生的不良后果,自负。 -旅客应严格遵守政府有关部门对乘坐民航班机所需的有效证件的规定,并保证旅客身份证件和所需的旅行证件的准确性、合法性和有效性,如因此类问题产生的后果由旅客承担。 -购买联程机票的旅客须保证转机衔接时间不少于3小时。 -旅客应在航班起飞前至少30分钟按规定办妥乘机手续。 -如旅客遗失了所购买的机票,按航空公司颁布的"旅客须知"的有关规定办理。 -误机与退票如购票后未赶上航班,可按各航空公司关于误机的规定作自愿退票和签转处理。购票后如需退票,按航空公司颁布的"旅客须知"的规定办理退票。 ?如果要取消或修改机票预订,该如何进行? 您可以拨打预定热线,告诉他们您的要求,对于还未出票的订单进行取消订单或修改机票信息不收取费用;已经出票的订单要求取消或修改机票信息会根据各航空公司的规定收取不同的退票或改签费用。

?2如何买到特价机票? 请随时留意我们的国内和国际特惠机票页面,我们会不定期地推出一些航线的特价机票。由于这些特价机票的座位有限,所以是随 订随售,不得预留的;另外,特价机票有严格的限制条件,一般为不得签转、不得更改、不得退票,请决定好后尽快购买。 ?3购买机票时需要哪些证件? 中国旅客购票,须提供本人居民身份证,并填写《旅客定座单》;外国游客,华侨,港,澳,台胞购票。须出示有效护照,回乡证, 台胞证,居留证,旅行证或公安机关出示的其它有效身份证件,并 填写《旅客定座单》。购买儿童票(两周岁-12周岁)、婴儿票(两周岁以内),应提供儿童、婴儿出生年月的有效证明。 重病旅客购票,须持有医疗单位出具的适于乘机的证明,经承运人同意后方可购票。 购买承运人规定的优惠票,应提供规定的证明。 ?4何时停办乘机手续? 旅客必须在乘运人规定的时限内到达机场,凭客票及本人有效身份证件按时办理查验、托运行李、领取登机牌等乘机手续(托运行李必须经过安全检查才能办理托运手续)。乘运人停止办理乘机手续的时间未做统一规定,一般为航班离站时间前30分钟,国航为离站时间前40分钟。 ?5有效的乘机身份证件有哪些? 有效乘机身份证件的种类包括:中国籍旅客的居民身份证、临时身份证、军官证、武警警官证、士兵证、军队学员证、军队文职干 部证、军队离退休干部证和军队职工证,港、澳地区居民和台湾同 胞旅行证件;外籍旅客的护照、旅行证、外交官证等;民航总局规定 的其它有效乘机身份证件。《规则》对乘机证件范围有所放宽。16 岁以下未成年人可凭其学生证、户口簿或者户口所在地公安机关出 具的身份证明乘机。《规则》同时规定,对持居民身份证复印件、 伪造或变造证件、冒用他人证件者不予放行登机。

OD使用方法

壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种 UPX ASPCAK TELOCK PELITE NSPACK ... ARMADILLO ASPROTECT ACPROTECT EPE SVKP ... 顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。当然加密壳的保护能力要强得多! 二、常见脱壳方法 预备知识 1.PUSHAD (压栈)代表程序的入口点, 2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近 3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。 方法一:单步跟踪法 1.用OD载入,点“不分析代码!” 2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4) 3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选) 4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现! 5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP 6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入 7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。 Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。一般情况下可以轻松到达OEP! 方法二:ESP定律法 ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!) 1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值) 2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车! 3.选中下断的地址,断点--->硬件访--->WORD断点。 4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP。 方法三:内存镜像法 1:用OD打开软件! 2:点击选项——调试选项——异常,把里面的忽略全部√上!CTRL+F2重载下程序! 3:按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE(也就是00401000处),按F2下断点!然后按SHIFT+F9(或者是在没异常情况下按F9),直接到达程序OEP! 方法四:一步到达OEP 1.开始按Ctrl+F,输入:popad(只适合少数壳,包括UPX,ASPACK壳),然后按下F2,F9运

汇编语言指令详解

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H 立即数可以是8位的,也可以是16位的。若

是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况:

一些常用的汇编语言指令

汇编语言常用指令 大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的 希望对大家有帮助! 数据传送指令 MOV:寄存器之间传送注意,源和目的不能同时是段寄存器;代码段寄存器CS不能作为目的;指令指针IP不能作为源和目的。立即数不能直接传送段寄存器。源和目的操作数类型要一致;除了串操作指令外,源和目的不能同时是存储器操作数。 XCHG交换指令:操作数可以是通用寄存器和存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。 LEA 16位寄存器存储器操作数传送有效地址指令:必须是一个16位寄存器和存储器操作数。 LDS 16位寄存器存储器操作数传送存储器操作数32位地址,它的16位偏移地址送16位寄存器,16位段基值送入DS中。 LES :同上,只是16位段基址送ES中。 堆栈操作指令 PUSH 操作数,操作数不能使用立即数, POP 操作数,操作数不能是CS和立即数 标志操作指令 LAHF:把标志寄存器低8位,符号SF,零ZF,辅助进位AF,奇偶PF,进位CF传送到AH 指定的位。不影响标志位。 SAHF:与上相反,把AH中的标志位传送回标志寄存器。 PUSHF:把标志寄存器内容压入栈顶。 POPF:把栈顶的一个字节传送到标志寄存器中。 CLC:进位位清零。 STC:进位位为1。 CMC:进位位取反。 CLD:使方向标志DF为零,在执行串操作中,使地址按递增方式变化。 STD:DF为1。 CLI:清中断允许标志IF。Cpu不相应来自外部装置的可屏蔽中断。 STI:IF为1。 加减运算指令

注意:对于此类运算只有通用寄存器和存储单元可以存放运算结果。如果参与运算的操作数有两个,最多只能有一个存储器操作数并且它们的类型必须一致。 ADD。 ADC:把进位CF中的数值加上去。 INC:加1指令 SUB。 SBB:把进位CF中数值减去。 DEC:减1指令。 NEG 操作数:取补指令,即用0减去操作数再送回操作数。 CMP:比较指令,完成操作数1减去操作数2,结果不送操作数1,但影响标志位。可根据ZF(零)是否被置1判断相等;如果两者是无符号数,可根据CF判断大小;如果两者是有符号数,要根据SF和OF判断大小。 乘除运算指令 MUL 操作数:无符号数乘法指令。操作数不能是立即数。操作数是字节与AL中的无符号数相乘,16位结果送AX中。若字节,则与AX乘,结果高16送DX,低16送AX。如乘积高半部分不为零,则CF、OF为1,否则为0。所以CF和OF表示AH或DX中含有结果的有效数。IMUL 操作数:有符号数乘法指令。基本与MUL相同。 DIV 操作数:被除数是在AX(除数8位)或者DX和AX(除数16位),操作数不能是立即数。如果除数是0,或者在8(16)位除数时商超过8(16)位,则认为是溢出,引起0号中断。IDIV:有符号除法指令,当除数为0,活着商太大,太小(字节超过127,-127字超过32767,-32767)时,引起0号中断。 符号扩展指令 CBW,CWD:把AL中的符号扩展到寄存器AH中,不影响各标志位。CWD则把AX中的符号扩展到DX,同样不影响标志位。注意:在无符号数除之前,不宜用这两条指令,一般采用XOR 清高8位或高16位。 逻辑运算指令与位移指令 注意:只能有一个存储器操作数;只有通用寄存器或存储器操作数可作为目的操作数,用于存放结果;操作数的类型必须一致。 NOT:取反,不影响标志位。 AND 操作数1 操作数2:操作结果送错作数1,标志CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志) SF(符号)反映运算结果,AF(辅助进位)未定义。自己与自己AND值不变,她主要用于将操作数中与1相与的位保持不变,与0相与清0。(都为1时为1)OR 操作数1 操作数2:自己与自己OR值不变,CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志)SF(符号)反映运算结果,AF(辅助进位)未定义。她使用于将若干位置1:

第一次坐飞机须知

第一次坐飞机须知 一、乘机流程: 1、到机场。你要注意时间,因为航空公司规定航班起飞前30分钟停止办理登机手续,所以你最好在起飞前1个小时到机场。 2、办登机手续(也就是换登机牌)。看看你的航班在哪个柜台办理,机场都有显示屏告诉你哪个航班在哪个柜台,找到相应柜台,将身份证交给机场值机人员。如果你有大件行李,就在这里托运,经济舱20公斤以内的行李是免费的。要注意托运的行李不要夹带违禁物品,办完登机手续,值机人员会将机登机牌、行李票,身份证退回给你。 3、过安检。到安检通道,通道口有个安检柜台,你将登机牌、身份证交给安检员,安检员审核没问题会在登机牌上面盖章。然后过安检门,随身带的物品要从安检门旁的X光安检机过去,你自己要从安检门通过。安检没问题就进候机厅。 4、候机。通过安检后,看看你登机牌上面会标明你的航班在哪个登机口登机,找到与登机口对应的候机厅,几号登机口就在几号候机厅候机。每个候机厅的位置,机场都会有显示屏显示,不清楚可以问机场服务人员。找到候机厅就在那里休息吧,等广播通知登机。如果你抽烟的话,可以到吸烟室吸烟。记得注意听广播啊。 5、登机。听到登机广播后,在登机口会有服务人员撕登机牌,你就到登机口将登机牌交服务人员,服务人员从登机牌撕一小块,其他部分交回给你,你持登机牌跟着别人上飞机吧。 6、找机上位置。登机牌上标明有你的位置,如:5D、11C什么的,数字代表第几排,每排的座位是按A、B、C、D、E、F……排的,飞机上的座位号标在放行李的舱壁(座位上方)。找到你的位置坐下,扣上安全带,起飞前关掉手机。 7、餐食。在飞行时,航空公司有免费饮料派发,长航线如在进餐时间,会有免费餐食供应(就一个盒饭,不好吃,量也少),短航线就派点心。 8、到达。飞机到达目的站后,如果你托运有行李,记得去取行李,在往出口的通道上会有取行李的地方。 二、坐飞机的注意事项: (一),首先你必须注意的几件事: 1,最好提前1小时到达机场。 2,切记带好身份证。 3,务必在飞机起飞前的半小时办好手续。因为有的机场非常严格,到时间了不让办就是不让办,那你就麻烦了。 (二),如果你有MP4或笔记本电脑等,可以随身携带,过安检时你交给安检员检查之后就可以带上飞机。飞机在起飞和降落时不能用,还需要关闭。 (三),其它注意事项: 当您进入机舱时,可将座位卡交给空中服务员,请他带领或指引入座。到了座位以后,可将随身行李摆在座位顶上的行李舱。大衣或雨具可交由空服员代为保管,沿途飞机上有任何需要,也都可以要求空服员帮忙,不用客气。飞机起飞和降落前后,摇晃厉害,应系好安全带,不能吸烟。 随着飞机的上升,耳朵会因高空压力而不舒服,嚼片口香糖或吃东西,保持口腔活动,可以减少不适的感觉。如有婴儿同行,则可在此时喂食牛奶。起飞后不久,机长会透过广播致欢迎辞,然后再由服务员报告预定到达时刻和注意事项。通常会以该航空公司的国语和英语等两三种语言广播。 飞机上的座位很舒服,下方有一圆形按钮,想仰卧时用力按它,靠背会自动往后倾倒,

常见汇编语言指令解释:

PC是一个16位的程序计数器。用于存放和指示下一条要执行的指令的地址。寻址范围达64KB。PC有自动加1功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,无法用指令对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。 参数代表的意义: 1、Rn 表示R0~R7中的一个 2、#data 表示8位的数值 00H~FFH 3、direct 表示8位的地址 00H~FFH(指的是内部RAM或SFR的地址) 4、@Ri 表示寄存器间接寻址只能是R0或者R1 5、@DPTR 表示数据指针间接寻址 6、bit 表示位地址 7、$ 表示当前地址 常见汇编语言指令解释: 寄存器寻址 MOV A,R1将R1中的数值赋予A 直接寻址 MOV A,3AH将地址3AH中的数值赋予A 立即寻址 MOV A,#3AH将3AH数值赋予A

寄存器间址 MOV A,@R0 将 R0中地址的数值赋予A 变址寻址 MOVC A,@A+DPTR以A中的数值为地址偏移量进行查表 相对寻址 AJMP MATN跳转到行号为MATN处 位寻址 MOV C,7FH 将位地址7FH的数值赋予C MOV A,#3AH数据传输、赋值命令 PUSH direct将direct为地址的数值压入堆栈中 POP direct将direct为地址的数值弹出堆栈 XCH A,direct将direct中的数值与A进行交换 ADD A,direct将direct中的数值与 INC direct将direct中的数值加1 SUBB A,direct将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零:CLR C DEC direct将direct中的数值减1 DA A 用于对BCD码加减法后进行10进制调整 MUL A B将A和B相乘,并把高八位放在B中,低八位放在A中 DIV A B将A和B相除,并把商放在A中,余数放在B中 ANL A,direct将A与direct中的数值进行与运算,结果保留在A 中(与运算规律:有0出0,全1出1) ORL A,direct将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0) XRL A,direct将A与direct中的数值进行异或运算,结果保留在A 中(异或运算规律:全0出0,全1出0,01、10出1)

相关主题