Yes, you are right. In 1.0 the code was in a header file but its in its own assembler file for 1.1. But there is no reason why you can't override code in a header file in the usual way (only from the system library). Or override the C file which includes it.
The bare way to use the HAL is just to write a function called alt_main (overriding the standard alt_main). At this point you have complete control of the processor and can do what you like. Nothing is provided unless you explicitly initialise it. Working this way is a lot more complicated, but a lot more powerful, so it's not recommended unless you really need it.