mirror of
https://github.com/vivisect/vivisect
synced 2026-06-08 18:04:23 +00:00
726afe014a
* Get vtrace and other unittests working on windows * tests for vivisect.reports * PE.carve bytes/string IO fix * lots of fixes to the intel emulators per the lockstepper test which only runs on windows. * utilitize some common hex functionality
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
import os
|
|
import unittest
|
|
import vtrace.tests as vt_tests
|
|
|
|
|
|
class VtraceBasicTest(vt_tests.VtraceProcessTest):
|
|
|
|
breakpoints = {
|
|
'windows': 'ntdll.NtTerminateProcess',
|
|
'linux': 'libc.exit',
|
|
'freebsd': 'libc.exit',
|
|
}
|
|
|
|
def test_vtrace_getregisters(self):
|
|
self.assertTrue(self.trace.getProgramCounter())
|
|
self.assertTrue(self.trace.getStackCounter())
|
|
self.assertTrue(self.trace.getRegisters())
|
|
self.runUntilExit()
|
|
|
|
def test_vtrace_setregisters(self):
|
|
pc = self.trace.getProgramCounter()
|
|
sp = self.trace.getStackCounter()
|
|
regs = self.trace.getRegisters()
|
|
self.trace.setStackCounter(sp)
|
|
self.trace.setProgramCounter(pc)
|
|
self.trace.setRegisters(regs)
|
|
self.runUntilExit()
|
|
|
|
def test_vtrace_breakpoint(self):
|
|
plat = self.trace.getMeta('Platform')
|
|
symname = self.breakpoints.get(plat)
|
|
if symname is None:
|
|
raise unittest.SkipTest('no platform breakpoint: %s' % plat)
|
|
|
|
pycode = 'trace.setMeta("testbphit", 1)'
|
|
bpid = self.trace.addBreakByExpr(symname)
|
|
self.trace.setBreakpointCode(bpid, pycode)
|
|
self.runUntilExit()
|
|
|
|
bp = self.trace.getBreakpoint(bpid)
|
|
self.assertTrue(bp.address is not None)
|
|
self.assertTrue(self.trace.getMeta('testbphit'))
|
|
|
|
def test_vtrace_exename(self):
|
|
exename = self.trace.getExe()
|
|
self.assertTrue(os.path.isfile(exename))
|
|
self.assertTrue(exename.lower().find('python') != -1)
|
|
|
|
def test_vtrace_mmaps(self):
|
|
pymapfound = False
|
|
for va, size, perms, fname in self.trace.getMemoryMaps():
|
|
if fname.lower().find('python') != -1:
|
|
pymapfound = True
|
|
break
|
|
self.assertTrue(pymapfound)
|
|
|
|
|
|
# All of the above "simple" tests should also work in the "exec" case
|
|
class VtraceBasicExecTest(VtraceBasicTest, vt_tests.VtraceExecTest):
|
|
breakpoints = {
|
|
'windows': 'ntdll.NtTerminateProcess',
|
|
'linux': 'ld.malloc',
|
|
'freebsd': 'ld._rtld_thread_init',
|
|
}
|