针对AR502H-V2工业物联网网关的分析( 二)

本文仅用于个人学习与技术研究,不涉及任何商业目的。目标软件为闭源系统,本文分析仅为静态学习,未进行任何侵权或破解行为。作者不承担任何使用后果。

尝试对vrp进行逆向分析,这里不会放出任何IDA/objdump反汇编/反编译的代码,仅用python来做简化的demo演示。

上次的vrp程序,我对其进行了更加详细的分析,这是binwalk -E的熵图:

vrp.png

可以看到,它在中间部分大概维持在0.75左右,末尾则是0.95以上且不稳定的高熵部分,也就是说,中间大部分可能都属于机器码,文件尾部则是加密块。

此外,我用binwalk又递归扫描了一边这个vrp,这才发现它的作用可能跟我最初的推断不符合:

QQ20260830-224000.png
QQ20260830-224049.png
QQ20260830-224110.png

不管怎么看,这样一个含有eCos字符串,并且带有一个yaffs文件系统的东西都不像是一个daemon进程,更像是一个完整的镜像。

我通过交叉编译链的arm-objdump工具和readelf定位了程序入口,并找到了main函数,基本印证了之前的猜测,这里放出python实现:

QQ20260830-235605.png

大概就是设置信号集,注册新信号,然后调用一些初始化函数,并根据这些初始化函数的结果来决定是否执行下一层,最后做加密验证,并调用一个名为main_thread_wait_forever的函数。

而这些初始化函数的命名,包含了“devdb”,“kernel_modules”,“devso”等多个明显偏底层的命名方式,结合它针对信号和加密的处理,推测它很可能才是vrp系统启动的核心,而非仅仅是一个web的daemon。

对信号不太熟悉,查了很多资料,因此进度缓慢。

以后有机会可以尝试写一些demo来加强。

评论