Haha, I have certainly done this in the past. I used to get frustrated no end when access to some internal function or variable was exactly what was needed to make things actually do what I needed. The alternative being write the entire thing from scratch.

I have learned from this experience to try to make my own stuff safe to extend without needing to access genuinely internal stuff, but it's a lot of work to achieve that level of flexibility. I can see why people generally don't bother.