Dynamic binary firmware analysis: Challenges and solutions