Search code examples
cdisassemblydecompilingida

Difference between main and __libc_start_main


I am beginning to get into the reverse engineering and am using IDA Pro and am working on deassembling a binary.

I am trying to find the memory address for the main function of the C program I am working with.

However, I see that there is a function in IDA for: main and for __libc_start_main

I have read this post but I am afraid I still don't understand. Can someone help me understand the differences between the two, and which one is which?

Thanks!


Solution

  • __libc_start_main is called first, and it invokes main. The former is part of the platform and does some initialization that most people don't even realize is happening, such preparing the threading system. The latter is the entry point of the user program and contains the "regular" code.