同一个程序中,标号或变量只能定义一次.

标号有三种属性:段、偏移、类型(NEAR PTR,WORD PTR,FAR PRT,DWORD PTR)

数值回送操作符:TYPE、LEGNTH、SIZE、OFFSET、SEG

TYPE    expression(or label)

如果表达式是变量,则回送该变量以字节数表示的类型:DB为 1, DW为 2, DD为 4…

如果表达式是标号,则回送该标号类型的数值:NEAR为 -1, FAR为 -2.

如果表达式是常量,则回送0.

array DW A110H,B02CH,C322H            ADD    AX, TYPE  array 等价于 ADD    AX, 2

LENGTH    variable 对于变量使用DUP的情况,将回送分配给该变量的单元数; 对其它情况则回送1.

fees DW 100 DUP(?)            MOV  CX, LEGNTH  fees 等价于MOV  CX, 100

SIZE    variable 回送分配给该变量的字节数

MOV    CX, SIZE  fees 等价于 MOV CX, 200

OFFSET    variable (or lable) 回送变量或标号的偏移地址.

MOV    BX,OFFSET OPER_ONE 等价于 LEA BX,OPER_ONE 语句 ,将OPER_ONE的偏移地址送入BX

SEG    variable(or lable) 回送变量或标号的段地址.

若OPER_ONE是DATA_SEG数据段中的一个变量,下面语句取得DATA_SEG段首地址

MOV    DS , SEG OPER_ONE 等价于 MOV    AX , DATA_SEG            MOV    DS , AX
继续阅读

转至:http://www.pediy.com/kssd/pediy08/pediy8-682.htm

下面是反汇编ntdll.dll的NtCreateEvent部分 NtCreateEvent调用了int 2E

Exported fn(): NtCreateEvent – Ord:005Ah
Exported fn(): ZwCreateEvent – Ord:02E2h
:77F83219 B81E000000         mov eax, 0000001E
:77F8321E 8D542404           lea edx, dword ptr [esp+04]
:77F83222 CD2E             int 2E
:77F83224 C21400             ret 0014

int 2e的使用方法:

mov eax, service_id
lea edx, service_param
int 2e

Windows 2000 int 2e 功能表
共248个
EAX = function number
EDX = address of parameter block
0x0   AcceptConnectPort
0x1   AccessCheck
0x2   AccessCheckAndAuditAlarm
0x3   AccessCheckByType
0x4   AccessCheckByTypeAndAuditAlarm
0x5   AccessCheckByTypeResultList
0x6   AccessCheckByTypeResultListAndAuditAlarm
0x7   AccessCheckByTypeResultListAndAuditAlarmByHandle
继续阅读

O 溢出 D I 单中断 T S 正负 Z Zero A P 奇偶 C 进错位

11      10 9          8 7          6            4 2           0

熟记

OF 溢出标志

DF 增量标志

保证字串处理方向  摘自0Day 第二版P91

IF 单中断标志

SF 正负标志 同时也是 Single Step标志

用于保证目标进程每执行一条指令就能与调试进程进行一次通信(摘自加密与解密3 P496)

ZF  0标志

PF 奇偶标志

CF 进错位标志