今天在逆向路由器固件时 ida 没有自动恢复 switch 跳转表,于是尝试手动恢复了一下,发现跳转表不是通过立即数加载到寄存器中的: 而是从栈中读取的: 这样就导致了 ida 无法恢复 switch 语句。经过探索发现跳转表在前面被保存到了栈中: 再经过了一些尝试之后,发现只要将 address of jump table 改为真正跳转表的地址就可以恢复啦
[培训]科锐逆向工程师培训第53期2025年7月8日开班!