# udis86 库模块帮助文档

## udis86 成员列表 <a id="udis86" href="#udis86">&#x23;</a>

### udis86() <a id="udis86()" href="#udis86()">&#x23;</a>
创建udis86反汇编对象  

[返回对象:udis86Object](#udis86Object)

## udis86Object 成员列表 <a id="udis86Object" href="#udis86Object">&#x23;</a>

### udis86Object.addPc(相对偏移值) <a id="udis86Object.addPc" href="#udis86Object.addPc">&#x23;</a>
提供一个相对偏移修改程序指令地址

### udis86Object.asm <a id="udis86Object.asm" href="#udis86Object.asm">&#x23;</a>
返汇编代码

### udis86Object.base <a id="udis86Object.base" href="#udis86Object.base">&#x23;</a>
指令起始位置

### udis86Object.byteCode() <a id="udis86Object.byteCode" href="#udis86Object.byteCode">&#x23;</a>
返回当前反编译的字节码

### udis86Object.disassemble() <a id="udis86Object.disassemble" href="#udis86Object.disassemble">&#x23;</a>

```aardio
while( udis86Object.disassemble() ){
	io.print( "汇编代码:",ud.asm )
	io.print( "指令长度:",ud.len )
	io.print( "PC:",ud.pc )
	io.print("")
}
```

### udis86Object.hexCode() <a id="udis86Object.hexCode" href="#udis86Object.hexCode">&#x23;</a>
以16进制格式返回已处理的字节码

### udis86Object.inputEnd() <a id="udis86Object.inputEnd" href="#udis86Object.inputEnd">&#x23;</a>
是否到输入尾

### udis86Object.inputSkip(节点数) <a id="udis86Object.inputSkip" href="#udis86Object.inputSkip">&#x23;</a>
跳过输入字节数

### udis86Object.len <a id="udis86Object.len" href="#udis86Object.len">&#x23;</a>
当前指令长度

### udis86Object.operand() <a id="udis86Object.operand" href="#udis86Object.operand">&#x23;</a>
[返回对象:udis86OperandObject](#udis86OperandObject)

### udis86Object.operand(操作数索引) <a id="udis86Object.operand" href="#udis86Object.operand">&#x23;</a>
返回指定的操作数信息

### udis86Object.pc <a id="udis86Object.pc" href="#udis86Object.pc">&#x23;</a>
程序指令地址,即Program Counter

### udis86Object.setInputBuffer(机器码,长度,EIP) <a id="udis86Object.setInputBuffer" href="#udis86Object.setInputBuffer">&#x23;</a>
设置需要反汇编的机器码,  
参数一可以是字符串或缓冲区指针  
其他参数可选

### udis86Object.setMode(32) <a id="udis86Object.setMode" href="#udis86Object.setMode">&#x23;</a>
设置CPU模式,默认为32位

### udis86Object.setPc(EIP) <a id="udis86Object.setPc" href="#udis86Object.setPc">&#x23;</a>
修改程序指令地址

### udis86Object.setVendor( _UD_VENDOR ) <a id="udis86Object.setVendor" href="#udis86Object.setVendor">&#x23;</a>
设置CPU厂商

### udis86Object.translateAtt() <a id="udis86Object.translateAtt" href="#udis86Object.translateAtt">&#x23;</a>
使用ATT汇编语法

### udis86Object.translateIntel() <a id="udis86Object.translateIntel" href="#udis86Object.translateIntel">&#x23;</a>
使用intel汇编语法

## udis86OperandObject 成员列表 <a id="udis86OperandObject" href="#udis86OperandObject">&#x23;</a>

### udis86OperandObject.BYTE oprcode <a id="udis86OperandObject.BYTE oprcode" href="#udis86OperandObject.BYTE oprcode">&#x23;</a>
`oprcode`

### udis86OperandObject.LONG disp <a id="udis86OperandObject.LONG disp" href="#udis86OperandObject.LONG disp">&#x23;</a>
`disp`

### udis86OperandObject.base <a id="udis86OperandObject.base" href="#udis86OperandObject.base">&#x23;</a>
值为 _UD_ 前缀常量

### udis86OperandObject.index <a id="udis86OperandObject.index" href="#udis86OperandObject.index">&#x23;</a>
值为 _UD_ 前缀常量

### udis86OperandObject.offset <a id="udis86OperandObject.offset" href="#udis86OperandObject.offset">&#x23;</a>
`offset`

### udis86OperandObject.scale <a id="udis86OperandObject.scale" href="#udis86OperandObject.scale">&#x23;</a>
`scale`

### udis86OperandObject.size <a id="udis86OperandObject.size" href="#udis86OperandObject.size">&#x23;</a>
`size`

### udis86OperandObject.type <a id="udis86OperandObject.type" href="#udis86OperandObject.type">&#x23;</a>
值为 _UD_ 前缀常量

## udis86OperandObject.lval 成员列表 <a id="udis86OperandObject.lval" href="#udis86OperandObject.lval">&#x23;</a>

### udis86OperandObject.lval.sbyte <a id="udis86OperandObject.lval.sbyte" href="#udis86OperandObject.lval.sbyte">&#x23;</a>
`sbyte`

### udis86OperandObject.lval.sdword <a id="udis86OperandObject.lval.sdword" href="#udis86OperandObject.lval.sdword">&#x23;</a>
`sdword`

### udis86OperandObject.lval.sqword <a id="udis86OperandObject.lval.sqword" href="#udis86OperandObject.lval.sqword">&#x23;</a>
`sqword`

### udis86OperandObject.lval.sword <a id="udis86OperandObject.lval.sword" href="#udis86OperandObject.lval.sword">&#x23;</a>
`sword`

### udis86OperandObject.lval.ubyte <a id="udis86OperandObject.lval.ubyte" href="#udis86OperandObject.lval.ubyte">&#x23;</a>
`ubyte`

### udis86OperandObject.lval.udword <a id="udis86OperandObject.lval.udword" href="#udis86OperandObject.lval.udword">&#x23;</a>
`udword`

### udis86OperandObject.lval.uqword <a id="udis86OperandObject.lval.uqword" href="#udis86OperandObject.lval.uqword">&#x23;</a>
`uqword`

### udis86OperandObject.lval.uword <a id="udis86OperandObject.lval.uword" href="#udis86OperandObject.lval.uword">&#x23;</a>
`uword`

## udis86OperandObject.lval.ptr 成员列表 <a id="udis86OperandObject.lval.ptr" href="#udis86OperandObject.lval.ptr">&#x23;</a>

### udis86OperandObject.lval.ptr.off <a id="udis86OperandObject.lval.ptr.off" href="#udis86OperandObject.lval.ptr.off">&#x23;</a>
`off`

### udis86OperandObject.lval.ptr.seg <a id="udis86OperandObject.lval.ptr.seg" href="#udis86OperandObject.lval.ptr.seg">&#x23;</a>
`seg`

### 自动完成常量
_UD_NONE=0  
_UD_OP_CONST=0x91  
_UD_OP_IMM=0x8F  
_UD_OP_JIMM=0x90  
_UD_OP_MEM=0x8D  
_UD_OP_PTR=0x8E  
_UD_OP_REG=0x8C  
_UD_R_AH=5  
_UD_R_AL=1  
_UD_R_AX=0x15  
_UD_R_BH=8  
_UD_R_BL=4  
_UD_R_BP=0x1A  
_UD_R_BPL=0xA  
_UD_R_BX=0x18  
_UD_R_CH=6  
_UD_R_CL=2  
_UD_R_CR0=0x4B  
_UD_R_CR1=0x4C  
_UD_R_CR10=0x55  
_UD_R_CR11=0x56  
_UD_R_CR12=0x57  
_UD_R_CR13=0x58  
_UD_R_CR14=0x59  
_UD_R_CR15=0x5A  
_UD_R_CR2=0x4D  
_UD_R_CR3=0x4E  
_UD_R_CR4=0x4F  
_UD_R_CR5=0x50  
_UD_R_CR6=0x51  
_UD_R_CR7=0x52  
_UD_R_CR8=0x53  
_UD_R_CR9=0x54  
_UD_R_CS=0x46  
_UD_R_CX=0x16  
_UD_R_DH=7  
_UD_R_DI=0x1C  
_UD_R_DIL=0xC  
_UD_R_DL=3  
_UD_R_DR0=0x5B  
_UD_R_DR1=0x5C  
_UD_R_DR10=0x65  
_UD_R_DR11=0x66  
_UD_R_DR12=0x67  
_UD_R_DR13=0x68  
_UD_R_DR14=0x69  
_UD_R_DR15=0x6A  
_UD_R_DR2=0x5D  
_UD_R_DR3=0x5E  
_UD_R_DR4=0x5F  
_UD_R_DR5=0x60  
_UD_R_DR6=0x61  
_UD_R_DR7=0x62  
_UD_R_DR8=0x63  
_UD_R_DR9=0x64  
_UD_R_DS=0x48  
_UD_R_DX=0x17  
_UD_R_EAX=0x25  
_UD_R_EBP=0x2A  
_UD_R_EBX=0x28  
_UD_R_ECX=0x26  
_UD_R_EDI=0x2C  
_UD_R_EDX=0x27  
_UD_R_ES=0x45  
_UD_R_ESI=0x2B  
_UD_R_ESP=0x29  
_UD_R_FS=0x49  
_UD_R_GS=0x4A  
_UD_R_MM0=0x6B  
_UD_R_MM1=0x6C  
_UD_R_MM2=0x6D  
_UD_R_MM3=0x6E  
_UD_R_MM4=0x6F  
_UD_R_MM5=0x70  
_UD_R_MM6=0x71  
_UD_R_MM7=0x72  
_UD_R_R10=0x3F  
_UD_R_R10B=0xF  
_UD_R_R10D=0x2F  
_UD_R_R10W=0x1F  
_UD_R_R11=0x40  
_UD_R_R11B=0x10  
_UD_R_R11D=0x30  
_UD_R_R11W=0x20  
_UD_R_R12=0x41  
_UD_R_R12B=0x11  
_UD_R_R12D=0x31  
_UD_R_R12W=0x21  
_UD_R_R13=0x42  
_UD_R_R13B=0x12  
_UD_R_R13D=0x32  
_UD_R_R13W=0x22  
_UD_R_R14=0x43  
_UD_R_R14B=0x13  
_UD_R_R14D=0x33  
_UD_R_R14W=0x23  
_UD_R_R15=0x44  
_UD_R_R15B=0x14  
_UD_R_R15D=0x34  
_UD_R_R15W=0x24  
_UD_R_R8=0x3D  
_UD_R_R8B=0xD  
_UD_R_R8D=0x2D  
_UD_R_R8W=0x1D  
_UD_R_R9=0x3E  
_UD_R_R9B=0xE  
_UD_R_R9D=0x2E  
_UD_R_R9W=0x1E  
_UD_R_RAX=0x35  
_UD_R_RBP=0x3A  
_UD_R_RBX=0x38  
_UD_R_RCX=0x36  
_UD_R_RDI=0x3C  
_UD_R_RDX=0x37  
_UD_R_RIP=0x8B  
_UD_R_RSI=0x3B  
_UD_R_RSP=0x39  
_UD_R_SI=0x1B  
_UD_R_SIL=0xB  
_UD_R_SP=0x19  
_UD_R_SPL=9  
_UD_R_SS=0x47  
_UD_R_ST0=0x73  
_UD_R_ST1=0x74  
_UD_R_ST2=0x75  
_UD_R_ST3=0x76  
_UD_R_ST4=0x77  
_UD_R_ST5=0x78  
_UD_R_ST6=0x79  
_UD_R_ST7=0x7A  
_UD_R_XMM0=0x7B  
_UD_R_XMM1=0x7C  
_UD_R_XMM10=0x85  
_UD_R_XMM11=0x86  
_UD_R_XMM12=0x87  
_UD_R_XMM13=0x88  
_UD_R_XMM14=0x89  
_UD_R_XMM15=0x8A  
_UD_R_XMM2=0x7D  
_UD_R_XMM3=0x7E  
_UD_R_XMM4=0x7F  
_UD_R_XMM5=0x80  
_UD_R_XMM6=0x81  
_UD_R_XMM7=0x82  
_UD_R_XMM8=0x83  
_UD_R_XMM9=0x84  
_UD_VENDOR_AMD=0  
_UD_VENDOR_ANY=2  
_UD_VENDOR_INTEL=1  
