I assume when you say hex you mean machine code?
Actually a number of us have been able to program the GPU using its instruction set thanks to HH and his work and the folks helping out there, now I believe Broadcom has published that info.
Writing in "HEX" wont in any way shape or form make your operating system safe or protected or anything like that. That isnt possible on this or most hardware on the planet, and if it were then it is only possible for a short period of time, these days that is anywhere from hours to weeks (once there is interest). The time to defeat protection is generally a fraction of the time to create it. This form of hacking happens at the machine code level (generally disassembled).
The kernel.img file is not an .elf file it is just a raw binary so if for example you take the instruction for branch to self 0xEAFFFFFE and you place it in a file with the proper endianness it will actually run, now it wont do anything very exciting but it wont crash either.
it is harder, esp if you are learning an instruction set to learn machine code first, then assembly later than to learn assembly first then machine code later. Knowing C makes the transition to a new instruction set even easier because you can compile and disassemble and learn the assembly language from that as well...
It is quite trivial to generate machine code if that is what you mean by hex for the raspberry pi. The documentation is all out there for the arm instruction set the kernel.img file is just the raw memory image that is loaded into the ram. Just put the bytes in the file and power it on.
The arm instruction set is significantly easier than the x86 instruction set, much easier to program, if you can program x86 machine code you can do pretty much anything else.
If you cant operate an assembler or compiler you are not going to get very far anyway, spend a few more seconds and get those working. For example, simply load an sd card with the off the shelf raspbian or whatever os, which has the tools already built and ready to use. Or just get the pre-built ones from codesourcery (now mentor graphics) or https://launchpad.net/gcc-arm-embedded
. Much easier than trying to encode branches and other instructions if you dont have a working assembler to show you how to do it. You only need binutils if you dont want to use C.