IDA failed to recognize some functions, maybe they're not referenced in the executable. Try this IDA Python script from the Mac Hacker's Handbook:
Code:
#!/usr/bin/python
# -*- coding: latin-1 -*-
from idaapi import *
def rebuild_functions_from_prologues():
seg_start = SegByName("__text")
seg_end = SegEnd(seg_start)
cursor = seg_start
while cursor < seg_end:
cursor = find_not_func(cursor, 0x1)
# push EBP; mov EBP,ESP
if (Byte(cursor) == 0x55 and Byte(cursor+1) == 0x89 and Byte(cursor+2)==0xE5):
MakeFunction(cursor, BADADDR)
else:
cursor = FindBinary(cursor, 0x1, "55 89 E5", 16)
if (GetFunctionName(cursor) == ""):
MakeFunction(cursor, BADADDR)
rebuild_functions_from_prologues()
It will try to find the function prologues and identify the functions IDA missed.