Ok, I worked a few hours today at my disassembler, and improved the code analyze feature.
I am now able to find MOST of the code (maybe 90%) with a pretty good accuracy (there are a few garbage instructions marked as code, but that's because I don't check for the validity of the instructions yet).
This is done by looking at all the b/bl instructions, seeing if they are within the proper range, and then check where it ends and stuff.
As I expected, some code is not found, for example in what the compiler compiles some of the "case/switch" statements. Some of the not found code begins with stmfd, some does not.
So far, it's looking good, I'll improve the accuracy as I go, and once I have most of my code and data marked properly, I can actually check for pointers to the code, which have to be replaced.