My question is, when i dont use any breakpoint it show the message saying "You made it, now keygen me!", but when i put a breakpoint in the main, or any other place it will show a message about __libc_start_main, and will not show the message saying "You made it, now keygen me!", why this happens because of the breakpoint?
From GDB documentation:
Warning: If you use the step command while control is within a function that was compiled without debugging information, execution proceeds until control reaches a function that does have debugging information.
Continue to the next source line in the current (innermost) stack frame. This is similar to step, but function calls that appear within the line of code are executed without stopping.
The file you are analysing was not compiled with debug information - GDB in fact tells you that by:
"Single stepping until exit from function
main, which has no line information."
According to the same GDB docs, to step over one assembly line, which, I assume is what you want to do, you can use