Well, you finally gave me the push I needed to dabble in python scripts for the first time. I ended up with this :
Code:
from idaapi import *
ea = get_screen_ea()
seg = getseg(ea)
i = 0
while seg.name == 0xff00003e :
adr = find_not_func(0, SEARCH_DOWN)
jumpto(adr, -1, 0x0001)
add_func(adr, BADADDR)
i = i + 1
print "Finished, %d funcs created" % i
I had a disassembly with a lot of unconverted funcs. I knew there would be side effects doing it with a script but it seemed to have worked. As you can see, looping while in a specific segment (code) is a complete bodge. I couldn't find any form of seg.name == "CODE" or ".text" etc, or seg.type that it liked, except for the direct indetifier which is, I think, specific to an app?.
Next ones to tackle are
1) all those damned case/switch tables IDA leaves outside the func so it then gives each case address a global name. Really is one of my pet hates.
2) why can't it convert a huge pile of UNICODE strings to actual strings instead of leaving each one mis-identified as a table of offsets, which in turn put a load of nonsense address labels all over the place, often in code and quite often splitting an asm statement
How do other people deal with those last 2 problems?
Git