第一次固件逆向 —— cnss招新 IDA bao zha le
前言
第一次接触固件逆向,写题期间还是收获了许多东西,将这第一次逆向过程记录一下,方便日后补充学习相关东西,也希望能给第一次接触固件逆向的后人一定参考
设置IDA
最开始拿到这个固件时,以为是elf文件转换成了bin文件,然后根据题目的ARM傻乎乎的去配置Linux装了一个arm-linux-objdump把给的bin转换成了一个asm汇编文件…打开一看,整个人都不想写了,太长了…还全都是汇编…后续找到的有关资料发现IDA其实也可以进行固件的分析,只不过需要进行相关的设置


设置完后我们点ok即可,随后我们进入IDA会遇到这样的一个界面:

因为这个是一个固件需要我们手动进行加载对应固件程序的偏移,因为我们是第一次打开,没有获得相关的一些信息,所以此处我们直接点OK进入下一步即可


到此处我们的基本设置就已经完成了,接下来就是找到对应的程序加载基址和程序的入口点了
逆向分析

图片里的
加载基质打错了应该是加载基址
设置完IDA我们对着开头的数据按几下d,将其数据类型进行转换,一般来说在固件arm中,前两个地址为RAM地址和程序入口点,随后双击程序入口进行跳转,随后按C进行构建函数

我们可以跳转到函数了,随后我们可以通过字符串来快速定位对应的加密函数块


可以发现程序下面的printf会输出对应的flag通过交叉引用我们可以发现对应flag的生成过程


可以看出来程序每一次对应的异或值会随着i的变化而变化,程序会根据i%6的值进行改变,简单分析可以写出对应的脚本
| 1 |  | 
程序处有一个小坑,第一次的异或值是'v',关于这个好像可以通过交叉引用进行查找?反正问题不大(flag头都反正已知)
至此程序的逆向工作就完成了,希望能对各位师傅们有所帮助。
第一次固件逆向 —— cnss招新 IDA bao zha le
      https://equinox-shame.github.io/2022/08/13/第一次固件逆向 — cnss招新 IDA bao zha le/