def __init__(self): e_cli.EnviCli.__init__(self, self, symobj=self) vivisect.VivWorkspace.__init__(self) self.canvas.addRenderer("bytes", e_render.ByteRend()) self.canvas.addRenderer("u_int_16", e_render.ShortRend()) self.canvas.addRenderer("u_int_32", e_render.LongRend()) self.canvas.addRenderer("u_int_64", e_render.QuadRend()) import vivisect.renderers as viv_rend self.canvas.addRenderer("viv", viv_rend.WorkspaceRenderer(self)) self.prompt = "viv> " self.addScriptPathEnvVar('VIV_SCRIPT_PATH')
def loadDefaultRenderers(self, trace): import envi.memcanvas.renderers as e_render import vdb.renderers as v_rend # FIXME check endianness self.canvas.addRenderer("bytes", e_render.ByteRend()) self.canvas.addRenderer("u_int_16", e_render.ShortRend()) self.canvas.addRenderer("u_int_32", e_render.LongRend()) self.canvas.addRenderer("u_int_64", e_render.QuadRend()) self.opcoderend = v_rend.OpcodeRenderer(self.trace) self.canvas.addRenderer("disasm", self.opcoderend) drend = v_rend.DerefRenderer(self.trace) self.canvas.addRenderer("Deref View", drend)
def loadDefaultRenderers(self): import envi.memcanvas.renderers as e_render # FIXME check endianness self.mem_canvas.addRenderer("bytes", e_render.ByteRend()) self.mem_canvas.addRenderer("u_int_16", e_render.ShortRend()) self.mem_canvas.addRenderer("u_int_32", e_render.LongRend()) self.mem_canvas.addRenderer("u_int_64", e_render.QuadRend()) vivrend = viv_rend.WorkspaceRenderer(self.vw) self.mem_canvas.addRenderer('Viv', vivrend) self.mem_canvas.setRenderer('Viv')
def loadDefaultRenderers(self): self.mem_canvas.addRenderer("bytes", e_render.ByteRend()) self.mem_canvas.addRenderer("u_int_16", e_render.ShortRend()) self.mem_canvas.addRenderer("u_int_32", e_render.LongRend()) self.mem_canvas.addRenderer("u_int_64", e_render.QuadRend())
def test_do_cmds(self): mem = e_mem.MemoryObject() mem.addMemoryMap(0x41410000, 7, 'testmem', b'@ABCDEF' * 256) ecli = e_cli.EnviCli(mem) ecli.canvas = e_mcanvas.StringMemoryCanvas(mem) ecli.canvas.addRenderer("bytes", e_render.ByteRend()) ecli.canvas.addRenderer("u_int_16", e_render.ShortRend()) ecli.canvas.addRenderer("u_int_32", e_render.LongRend()) ecli.canvas.addRenderer("u_int_64", e_render.QuadRend()) # do_alias ecli.do_alias('') output = ecli.canvas.strval self.assertIn('Runtime Aliases (not saved):', output) self.assertIn('Configured Aliases:', output) ecli.canvas.clearCanvas() # do_binstr ecli.do_binstr('47145') output = ecli.canvas.strval self.assertIn('0x0000b829 (47145) 1011100000101001', output) ecli.canvas.clearCanvas() # do_clear ecli.vprint("foobar") ecli.do_clear('') output = ecli.canvas.strval self.assertEqual('', output) ecli.canvas.clearCanvas() # do_config ecli.do_config('') output = ecli.canvas.strval self.assertIn('cli.verbose = False\n', output) ecli.canvas.clearCanvas() # do_EOF ecli.do_EOF('') output = ecli.canvas.strval self.assertIn('Use quit\n', output) ecli.canvas.clearCanvas() # do_eval ecli.do_eval('0x40 + 0x47145') output = ecli.canvas.strval self.assertIn('0x40 + 0x47145 = 0x00047185 (291205)\n', output) ecli.canvas.clearCanvas() # do_maps ecli.do_maps('') output = ecli.canvas.strval self.assertIn('0x41410000', output) ecli.canvas.clearCanvas() ecli.do_maps('0x41410001') output = ecli.canvas.strval self.assertIn(' 0x41410001\n0x41410000', output) ecli.canvas.clearCanvas() # do_mem ecli.do_mem('0x41410001 20') output = ecli.canvas.strval self.assertIn( '0x41410001 41 42 43 44 45 46 40 41 42 43 44 45 46 40 41 42 ABCDEF@ABCDEF@AB\n0x41410011 43 44 45 46 40 41 42 43 44 45 46 40 41 42 43 44 CDEF@ABCDEF@ABCD\n', output) ecli.canvas.clearCanvas() ecli.do_mem('-F u_int_16 0x41410001 20') output = ecli.canvas.strval self.assertIn( '0x41410001 4241 4443 4645 4140 4342 4544 4046 4241 ABCDEF@ABCDEF@AB\n0x41410011 4443 4645 4140 4342 4544 4046 4241 4443 CDEF@ABCDEF@ABCD\n', output) ecli.canvas.clearCanvas() ecli.do_mem('-F u_int_32 0x41410001 20') output = ecli.canvas.strval self.assertIn( '0x41410001 44434241 41404645 45444342 42414046 ABCDEF@ABCDEF@AB\n0x41410011 46454443 43424140 40464544 44434241 CDEF@ABCDEF@ABCD\n', output) ecli.canvas.clearCanvas() ecli.do_mem('-F u_int_64 0x41410001 20') output = ecli.canvas.strval self.assertIn( '0x0000000041410001 4140464544434241 4241404645444342 ABCDEF@ABCDEF@AB\n0x0000000041410011 4342414046454443 4443424140464544 CDEF@ABCDEF@ABCD\n', output) ecli.canvas.clearCanvas() # do_memcmp ecli.do_memcmp('0x41410001 0x41410005 20') output = ecli.canvas.strval self.assertIn( '==== 20 byte difference at offset 0\n0x41410001:4142434445464041424344454640414243444546\n0x41410005:4546404142434445464041424344454640414243\n', output) ecli.canvas.clearCanvas() # do_memdump ecli.do_memdump('0x41410001 /tmp/foo40 20') output = ecli.canvas.strval self.assertIn('wrote 20 bytes.\n', output) ecli.canvas.clearCanvas() with open('/tmp/foo40', 'rb') as testfile: self.assertEqual(testfile.read(), b'ABCDEF@ABCDEF@ABCDEF') ecli.canvas.clearCanvas() # do_python ecli.do_python( 'with open("/tmp/foo41", "wb") as testfile:\n\ttestfile.write(b"Test Worked")' ) output = ecli.canvas.strval with open('/tmp/foo41', 'rb') as testfile: self.assertEqual(testfile.read(), b'Test Worked') ecli.canvas.clearCanvas() # do_saveout ecli.do_saveout('/tmp/foo42 search ABCDEF') output = ecli.canvas.strval self.assertIn('\ndone (256 results).\n', output) ecli.canvas.clearCanvas() # do_search ecli.do_search('ABCDEF') output = ecli.canvas.strval self.assertIn('\ndone (256 results).\n', output) ecli.canvas.clearCanvas()