The weird thing is, I found two integers which represent health, but only one stays allocated throughout the game longer enough for me to work with.
By using a DX9/11 overlay, it's possible to display this number directly in Crysis 2 the same way Fraps' FPS meter is displayed on either corners of the screen.
I found some code to hook myself to DX9, still haven't tested, but will do later.
My hurdle right now is to find the health address, but because it's dynamically allocated, it's location is different as soon as the variable is freed and allocated again.
In the screenshot below we see two addresses that correspond to health.
But only the one on that is displayed in the Memory Viewer is the one we need. In the Memory Viewer window, look at the ASCII representation of the hexadecimal numbers, we see the characters '@,s,t,a,n,d'.
I am going to use those as my pattern and scan the process' virtual address space for them characters and then calculating the address of the health variable which as we see is not that far from the characters we just saw.
No promises though as to whether I will succeed, I think this is a good project to work on, till I get some datasheets from AMD and continue my original project.