def test_command_heap_chunks(self): cmd = "heap chunks" target = "tests/binaries/heap.out" self.assertFailIfInactiveSession(gdb_run_command(cmd, target=target)) res = gdb_run_silent_command(cmd, target=target) self.assertNoException(res) self.assertTrue(b"Chunk(addr=" in res and b"top chunk" in res) return
def test_command_set_permission(self): self.assertFailIfInactiveSession(gdb_run_command("set-permission")) target = "tests/binaries/set-permission.out" res = gdb_run_silent_command("set-permission 0x1337000", after=["vmmap",], target=target) self.assertNoException(res) line = [ l for l in res.splitlines() if b"0x0000000001337000" in l ][0] line = line.split() self.assertEqual(line[0], b"0x0000000001337000") self.assertEqual(line[1], b"0x0000000001338000") self.assertEqual(line[2], b"0x0000000000000000") self.assertEqual(line[3], b"rwx") res = gdb_run_silent_command("set-permission 0x1338000", target=target) self.assertNoException(res) self.assertTrue(b"Unmapped address") return
def test_command_heap_bins_fast(self): cmd = "heap bins fast" target = "tests/binaries/heap-fastbins.out" self.assertFailIfInactiveSession(gdb_run_command(cmd, target=target)) res = gdb_run_silent_command(cmd, target=target) self.assertNoException(res) self.assertTrue(b"Fastbins[idx=0, size=0x10]" in res) return
def test_command_heap_set_arena(self): cmd = "heap set-arena main_arena" target = "tests/binaries/heap.out" self.assertFailIfInactiveSession(gdb_run_command(cmd, target=target)) res = gdb_run_silent_command(cmd, target=target, after=["heap arenas",]) self.assertNoException(res) self.assertTrue(b"Arena (base=" in res) return
def test_command_heap_chunk(self): cmd = "heap chunk p1" target = "tests/binaries/heap.out" self.assertFailIfInactiveSession(gdb_run_command(cmd, target=target)) res = gdb_run_silent_command(cmd, target=target) self.assertNoException(res) self.assertTrue(b"NON_MAIN_ARENA flag: " in res) return
def test_command_set_permission(self): self.assertFailIfInactiveSession(gdb_run_command("set-permission")) target = "tests/binaries/set-permission.out" res = gdb_run_silent_command("set-permission 0x1337000", after=["vmmap",], target=target) self.assertNoException(res) line = [ l for l in res.splitlines() if b"0x0000000001337000" in l ][0] line = line.split() self.assertEqual(line[0], b"0x0000000001337000") self.assertEqual(line[1], b"0x0000000001338000") self.assertEqual(line[2], b"0x0000000000000000") self.assertEqual(line[3], b"rwx") res = gdb_run_silent_command("set-permission 0x1338000", target=target) self.assertNoException(res) self.assertTrue(b"Unmapped address") return
def test_command_heap_chunk(self): cmd = "heap chunk p1" target = "tests/binaries/heap.out" self.assertFailIfInactiveSession(gdb_run_command(cmd, target=target)) res = gdb_run_silent_command(cmd, target=target) self.assertNoException(res) self.assertTrue(b"NON_MAIN_ARENA flag: " in res) return
def test_command_ropper(self): cmd = "ropper" self.assertFailIfInactiveSession(gdb_run_command(cmd)) cmd = "ropper --search \"pop %; pop %; ret\"" res = gdb_run_silent_command(cmd) self.assertNoException(res) self.assertFalse(b": error:" in res) self.assertTrue(len(res.splitlines()) > 2) return
def test_command_set_permission(self): self.assertFailIfInactiveSession(gdb_run_command("set-permission")) target = "tests/binaries/set-permission.out" res = gdb_run_silent_command("set-permission 0x1337000", after=[ "vmmap", ], target=target) self.assertNoException(res) self.assertTrue( b"0x0000000001337000 0x0000000001338000 0x0000000000000000 rwx" in res) res = gdb_run_silent_command("set-permission 0x1338000", target=target) self.assertNoException(res) self.assertTrue(b"Unmapped address") return
def test_command_ropper(self): cmd = "ropper" self.assertFailIfInactiveSession(gdb_run_command(cmd)) cmd = "ropper --search \"pop %; pop %; ret\"" res = gdb_run_silent_command(cmd) self.assertNoException(res) self.assertFalse(b": error:" in res) self.assertTrue(len(res.splitlines()) > 2) return
def test_command_heap_bins_fast(self): cmd = "heap bins fast" target = "tests/binaries/heap-fastbins.out" self.assertFailIfInactiveSession(gdb_run_command(cmd, target=target)) res = gdb_run_silent_command(cmd, target=target) self.assertNoException(res) self.assertTrue(b"Fastbins[idx=0, size=0x10]" in res) self.assertTrue(b"Chunk(addr=" in res) return