第一次固件逆向 —— 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/