From eeebcc5a449c0fce4ce7b96172a90b840ba08223 Mon Sep 17 00:00:00 2001 From: mothran Date: Mon, 28 Sep 2015 21:41:38 -0700 Subject: [PATCH 1/2] added bad_ram regress --- tests/regress/bad_ram.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tests/regress/bad_ram.py diff --git a/tests/regress/bad_ram.py b/tests/regress/bad_ram.py new file mode 100644 index 00000000..0fc7d0bb --- /dev/null +++ b/tests/regress/bad_ram.py @@ -0,0 +1,30 @@ +#!/usr/bin/python + +from unicorn import * +from unicorn.x86_const import * + +import regress + + +class Hang(regress.RegressTest): + + def runTest(self): + CODE_ADDR = 0x400000 + RSP_ADDR = 0x200000 + binary1 = "\xCA\x24\x5D" # retf 0x5d24 + mu = Uc(UC_ARCH_X86, UC_MODE_64) + + mu.mem_map(CODE_ADDR, 0x5000) + mu.mem_map(RSP_ADDR, 0x5000) + + # write machine code to be emulated to memory + mu.mem_write(CODE_ADDR, binary1) + + mu.reg_write(UC_X86_REG_RSP, RSP_ADDR) + + # emu for maximum 1 sec. + mu.emu_start(CODE_ADDR, 0x400000 + 0x5000, 0) + + +if __name__ == '__main__': + regress.main() From 0e258b9587db90f59618a4eff79e9ba286591281 Mon Sep 17 00:00:00 2001 From: mothran Date: Mon, 28 Sep 2015 22:50:27 -0700 Subject: [PATCH 2/2] updated a few small errors in the script --- tests/regress/bad_ram.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/tests/regress/bad_ram.py b/tests/regress/bad_ram.py index 0fc7d0bb..7693ccb9 100644 --- a/tests/regress/bad_ram.py +++ b/tests/regress/bad_ram.py @@ -9,21 +9,18 @@ import regress class Hang(regress.RegressTest): def runTest(self): + PAGE_SIZE = 0x5000 CODE_ADDR = 0x400000 RSP_ADDR = 0x200000 binary1 = "\xCA\x24\x5D" # retf 0x5d24 mu = Uc(UC_ARCH_X86, UC_MODE_64) - mu.mem_map(CODE_ADDR, 0x5000) - mu.mem_map(RSP_ADDR, 0x5000) + mu.mem_map(CODE_ADDR, PAGE_SIZE) + mu.mem_map(RSP_ADDR, PAGE_SIZE) - # write machine code to be emulated to memory mu.mem_write(CODE_ADDR, binary1) - mu.reg_write(UC_X86_REG_RSP, RSP_ADDR) - - # emu for maximum 1 sec. - mu.emu_start(CODE_ADDR, 0x400000 + 0x5000, 0) + mu.emu_start(CODE_ADDR, CODE_ADDR + PAGE_SIZE, 0) if __name__ == '__main__':