509 lines
20 KiB
Text
509 lines
20 KiB
Text
NAME=arj x86 16 bits
|
|
FILE=malloc://0x100
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e analysis.arch=x86
|
|
e asm.bits=16
|
|
arj
|
|
EOF
|
|
EXPECT=<<EOF
|
|
{"ip":0,"ax":0,"bx":0,"cx":0,"dx":0,"sp":0,"bp":0,"si":0,"di":0,"flags":0}
|
|
EOF
|
|
RUN
|
|
|
|
NAME=lcall offset (#12284)
|
|
FILE==
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e asm.bits=16
|
|
wx 9a34002001
|
|
%v $j
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0x1234
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ljmp offset (#12284)
|
|
FILE==
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e asm.bits=16
|
|
wx ea34002001
|
|
%v $j
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0x1234
|
|
EOF1
|
|
RUN
|
|
|
|
NAME=aoj pushf
|
|
FILE==
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e asm.bits=16
|
|
wx 9c
|
|
aoj~{}
|
|
EOF
|
|
EXPECT=<<EOF
|
|
[
|
|
{
|
|
"opcode": "pushf",
|
|
"disasm": "pushf",
|
|
"pseudo": "pushf ",
|
|
"description": "push flags register onto the stack",
|
|
"mnemonic": "pushf",
|
|
"mask": "ff",
|
|
"esil": "2,sp,-=,eflags,sp,=[2]",
|
|
"rzil": {
|
|
"opcode": "seq",
|
|
"x": {
|
|
"opcode": "set",
|
|
"dst": "final",
|
|
"src": {
|
|
"opcode": "-",
|
|
"x": {
|
|
"opcode": "var",
|
|
"value": "sp"
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x2",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "seq",
|
|
"x": {
|
|
"opcode": "storew",
|
|
"mem": 0,
|
|
"key": {
|
|
"opcode": "var",
|
|
"value": "final"
|
|
},
|
|
"value": {
|
|
"opcode": "cast",
|
|
"value": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "|",
|
|
"x": {
|
|
"opcode": "<<",
|
|
"x": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "nt"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x2",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x3",
|
|
"len": 16
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "of"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "df"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "if"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "tf"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "zf"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "zf"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x2",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "af"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x2",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "pf"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"fill_bit": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "ite",
|
|
"condition": {
|
|
"opcode": "var",
|
|
"value": "cf"
|
|
},
|
|
"x": {
|
|
"opcode": "bitv",
|
|
"bits": "0x1",
|
|
"len": 16
|
|
},
|
|
"y": {
|
|
"opcode": "bitv",
|
|
"bits": "0x0",
|
|
"len": 16
|
|
}
|
|
}
|
|
},
|
|
"length": 16,
|
|
"fill": {
|
|
"opcode": "bool",
|
|
"value": false
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"opcode": "set",
|
|
"dst": "sp",
|
|
"src": {
|
|
"opcode": "var",
|
|
"value": "final"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"sign": false,
|
|
"prefix": 0,
|
|
"id": 668,
|
|
"opex": {
|
|
"operands": [
|
|
{
|
|
"type": "reg",
|
|
"value": "eflags",
|
|
"read": true,
|
|
"nbits": 16
|
|
}
|
|
]
|
|
},
|
|
"addr": 0,
|
|
"bytes": "9c",
|
|
"size": 1,
|
|
"type": "rpush",
|
|
"scale": 0,
|
|
"refptr": 0,
|
|
"cycles": 1,
|
|
"failcycles": 0,
|
|
"delay": 0,
|
|
"stack": "inc",
|
|
"stackptr": 2,
|
|
"family": "cpu"
|
|
}
|
|
]
|
|
EOF
|
|
RUN
|