-
Notifications
You must be signed in to change notification settings - Fork 3
/
printer.py
100 lines (77 loc) · 4.02 KB
/
printer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#
# idaDiscover plugin - by Javier Vicente Vallejo - @vallejocc
#
from ida_defines import *
import tempfile
####################################################################################################
class InternalPrinter(simplecustviewer_t):
################################################################################################
def __init__(self, name):
self.name = name
self.tmpdir = tempfile.gettempdir()
################################################################################################
def Start(self):
self.Create(self.name)
################################################################################################
def doPrint(self, s):
print(s)
f = open(self.tmpdir + "/idadiscover.log", "a+b")
f.write(self.name + ":" + s + "\r\n")
f.close()
self.AddLine(s)
self.Show()
################################################################################################
def Create(self, sn=None):
print("Create")
print(sn)
if not IDAAPI_simplecustviewer_t.Create(self, sn):
return False
return True
################################################################################################
def Clear(self):
self.ClearLines()
################################################################################################
def jmpto(self, target):
try:jumpto(IDAAPI_ItemHead(int(target, 16)))
except:pass
try:jumpto(IDAAPI_LocByName(target))
except:pass
################################################################################################
def OnDblClick(self, shift):
self.jmpto(self.GetCurrentWord())
################################################################################################
def OnKeydown(self, vkey, shift):
self.jmpto(self.GetCurrentWord())
################################################################################################
def OnPopupMenu(self, menu_id):
print("OnPopupMenu")
####################################################################################################
####################################################################################################
class Printer():
################################################################################################
def __init__(self):
self.Printers = dict()
self.Printers["algorithms"] = InternalPrinter("Algorithms - IDA Discover results")
self.Printers["crypto"] = InternalPrinter("Crypto - IDA Discover results")
self.Printers["emulator"] = InternalPrinter("Emulator - IDA Discover results")
self.Printers["loops"] = InternalPrinter("Loops - IDA Discover results")
self.Printers["references"] = InternalPrinter("References - IDA Discover results")
#self.Printers["signsrch"] = InternalPrinter("Signsrch - IDA Discover results")
self.Printers["functions"] = InternalPrinter("Functions - IDA Discover results")
self.Printers["yara"] = InternalPrinter("Yara - IDA Discover results")
self.Printers["general"] = InternalPrinter("General - IDA Discover results")
################################################################################################
def Start(self):
for e in self.Printers.keys():
self.Printers[e].Start()
################################################################################################
def doPrint(self, s, origin="general"):
self.Printers[origin].doPrint(s)
################################################################################################
def Clear(self, name=None):
if name:
self.Printers[name].Clear()
else:
for e in self.Printers.keys():
self.Printers[e].Clear()
####################################################################################################