Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. import idaapi
  2. import idautils
  3. import idc
  4. import struct
  5.  
  6. def do_rename(eaaddr, name):
  7. idc.MakeCode(eaaddr)
  8. idc.MakeFunction(eaaddr)
  9. idc.MakeNameEx(eaaddr, name, idc.SN_NOWARN)
  10.  
  11.  
  12. if __name__ == "__main__":
  13. # name.stackTrace/addr.stackTrace are in rom:/debug/ for Fire Emblem If/Fates (all regions).
  14. with open('name.StackTrace', 'rb') as f:
  15. names = f.read()
  16. with open('addr.StackTrace', 'rb') as f:
  17. addrs = f.read()
  18. functions = []
  19. while len(addrs) > 0:
  20. addr, name_ofs = struct.unpack('<II', addrs[:8])
  21. addrs = addrs[8:]
  22. name = names[name_ofs:min(names.index('\x00', name_ofs))]
  23. if '(' in name:
  24. name = name[:name.index('(')]
  25. # TODO: extract input variable type information.
  26. do_rename(addr, name)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement