■ ■ ■ ■ ■ ■
GO_Utils/Firstmoduledata.py
| skipped 3 lines |
4 | 4 | | |
5 | 5 | | def findFirstModuleData(addr, bt): |
6 | 6 | | #addr_st = "".join(["%s "% x.encode('hex') for x in ("%x" % addr).decode('hex')[::-1]]) |
7 | | - | #print addr_st |
| 7 | + | print '%x' % addr |
8 | 8 | | possible_addr = idautils.XrefsTo(addr).next().frm |
9 | 9 | | if Utils.is_hardcoded_slice(possible_addr, bt): |
10 | 10 | | return possible_addr |
| skipped 1 lines |
12 | 12 | | |
13 | 13 | | def isGo17(addr, bt): |
14 | 14 | | addr += bt.size * 27 |
15 | | - | return Utils.is_hardcoded_slice(addr, bt) |
| 15 | + | addr2 = addr + bt.size * 6 # for go1.7 this addr will be for modulename |
| 16 | + | return Utils.is_hardcoded_slice(addr, bt) and (not Utils.is_hardcoded_slice(addr2, bt)) |
| 17 | + | |
| 18 | + | |
| 19 | + | def isGo18_10(addr, bt): |
| 20 | + | addr += bt.size * 27 |
| 21 | + | addr2 = addr + bt.size * 6 # for go1.8 this addr will be for itablinks |
| 22 | + | return Utils.is_hardcoded_slice(addr, bt) and (Utils.is_hardcoded_slice(addr2, bt)) |
16 | 23 | | |
17 | 24 | | def getTypeinfo17(addr, bt): |
18 | 25 | | addr2 = addr + bt.size * 25 |
| skipped 21 lines |
40 | 47 | | return beg, beg+size*bt.size |
41 | 48 | | |
42 | 49 | | """ |
| 50 | + | 1.10 - same as 1.10 |
43 | 51 | | 1.9 - same as 1.8 |
44 | 52 | | 1.8 |
45 | 53 | | type moduledata struct { |
| skipped 106 lines |