-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathParseIDT.py
29 lines (27 loc) · 912 Bytes
/
ParseIDT.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
__author__ = "Gerhart"
__license__ = "GPL3"
__version__ = "1.3.0"
import idaapi
idtr_str = Eval('send_dbg_command("r idtr")')
idtr = long(idtr_str[5:-1],16)
print "idtr = 0x%x" % idtr
i = 256
for i in range(0,256):
buf = idaapi.dbg_read_memory(idtr+16*i, 16)
isr = 0
isr = isr + (ord(buf[11]) << (8*7))
isr = isr + (ord(buf[10]) << (8*6))
isr = isr + (ord(buf[9]) << (8*5))
isr = isr + (ord(buf[8]) << (8*4))
isr = isr + (ord(buf[7]) << (8*3))
isr = isr + (ord(buf[6]) << (8*2))
isr = isr + (ord(buf[1]) << (8*1))
isr = isr + (ord(buf[0]) << (8*0))
#for j in range(6,12):
# isr = isr+(ord(buf[j]) << (8*(j-4)))
#for j in range(0,2):
# isr = isr+(ord(buf[j]) << (8*(j)))
print "isr %x address = " % i,hex(isr)
idc.create_insn(isr)
idc.add_func(isr)
set_name(isr,str('mISR_') + hex(i).upper(), SN_NOWARN)