I had similar problems with my son Joseph. In the end I gave him the silent treatment. I know it sounds cruel but he couldn't stand it when I wasn't talking to him. I started to praise absolutely everything that was good and when he did the stroppy teenager act and wouldnt listen I acted like he wasn't there. within about 2 weeks he'd worked out that if he was good I'd pay attention to him and when he was naughty I wouldn't speak to him.
Start off by praising something really silly like "what a good boy for putting your coat on when I asked". I know it sounds daft but I got to the point where EVERYTHING was a drama and a fight. Carry on with that all day and completely ignore when he starts playing up. If you're having trouble with it leave the room when he's naughty. Just act as if you cant see him at all. The moment he does something good again start to praise him again. Remember to praise absolutely everything from brushing his teeth in the morning to eating all his tea quietly.
I know it all sound to simple to be true but it does really work! Honest!!! After the 1st couple of days you'll notice that things are starting to get a little easier. My son is now 7 and acts like a little grown up. He heps me around the house, cleans his own room and hardly ever answers back or anything. Obviously sometimes you get the occaisonal sillyness but hey, thats kids for ya!! haha