原文网址:http://www.nasyun.com/forum.php?mod=viewthread&tid=39736&fromuid=106494
(出处: NAS云论坛)

前言

最近坛友经常问论坛中的黑群晖版发布非常活跃。为什么为什么黑威联通像一潭死水。坛友希望我能再次为黑威联通做一个启动盘。为了答谢坛友们的厚爱,我再次出手制作了一个教学演示用的创建黑威联通启动工具盘。需要说明的是,我不是一个黑客。资源来自于威联通官网公布的系统包和发布的固件。参考文献中注明所有引用的出处。本文深入浅出地介绍了嵌入式linux逆向工程的概念,原理及实现的技术细节。并为教学实践提供了演示用的创建黑威联通启动工具母盘。此启动盘的理念和启动引导的基础架构设计均绝对是老骥伏枥本人独创,并合法利用开源项目 (Tiny Core Linux Project) [1] 开发的。 也是老骥伏枥通过 NASYUN 论坛在全球独家首发。 请坛友们遵守 GNU General Public License, 未经授权禁止用于商业用途。 该演示用工具母盘为的是进行教学, 研究和技术交流。 禁止用于任何商业目的。

第一讲
嵌入式linux逆向工程与常用工具简介

我们为什么要学习嵌入式linux逆向工程呢?答案很明显。利用这个手段,了解和破解提取Linux的嵌入式系统固件的内容。为什么呢?我们可以: 破解固件或将固件升级(增加功能); 审计的安全级别固件;乐趣! 和许多其他的事情!

嵌入式设备固件代码的逆向解析常常被用于破解固件或将固件升级维护及关键电子设备的功能解读和安全防护, 因此学习,研究固件代码逆向解析技术是软件工程中的一个重要领域。 在这个领域中,研究针对Linux固件的逆向解析识别框架;研究固件的一般结构和三大模块的运行机制、实现机制、存储介质相关性及其相互之间的关系等等,会涉及到使用局部特征和分布特征相结合的方法去搜索可疑模块并对模块区间进行排除性剥离,也可能会存在逆向分析过程中固件获取不完整性和固件读取出错的问题。还有就是经验的积累,工具的利用等等。对于菜鸟和小白们,我推荐一本初学者的书"逆向工程入门指南"[2] 给你们读一读。

利用工具进行逆向解析可以提高效率。接下来我介绍如下几款工具给大家,这些只是我自己喜欢用的工具,不一定是最好的工具,也不一定适合你。

一,Binwalk - 开源固件分析工具[3]
binwalk是一个固件文件的分析工具,旨在协助研究人员对固件文件进行分析,提取及逆向工程。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展。在linux系统上的安装方法也是十分简单的,而在windows系统上的安装方法我就不知道了。新手百度下“binwalk工具运行支持的平台”[4] 。

二,Interactive Disassembler (IDA) -交互式反汇编工具[5]
IDA 的官方网站是 https://www.hex-rays.com/ 。在网页上可以看到 IDA 的插件、SDK 等内容。IDA 会在官网提供 Demo 版的下载。然而, Demo 版没有 IDA 最强大的反汇编功能,正版的证书费用比较贵。(专业人士还是建议买证书)。网上也有提供破解IDA Pro版的,可以用来学习。新手百度一下“破解IDA Pro版”。关于IDA的特色,我就不在这里赘述了。推荐大家一个文章:“今天开始学逆向:反汇编的利器IDA和Hopper的基本使用”[6] 。有兴趣的坛友可以读一读。

三,Snowman C/C++反编译器[7]
支持ARM,x86和x86-64体系结构。读取ELF,Mach-O和PE文件格式。重构函数,它们的名称和参数,局部和全局变量,表达式,整数,指针和结构类型,所有类型的控制流结构,包括开关。有一个很好的图形用户界面,汇编程序代码和重建程序之间的一键导航。有一个用于批处理的命令行界面。

四,SystemRescueCD 开源x86平台的Linix操作系统[7]
SystemRescueCd是x86计算机平台的操作系统,但SystemRescueCD的主要目的是在系统崩溃后修复无法启动或以其他方式损坏的计算机系统。 SystemRescueCd不打算用作永久性操作系统。 它从Live CD,USB闪存驱动器或任何类型的硬盘驱动器运行。 它由FrançoisDupoux领导的团队设计,基于Gentoo Linux发行版。我很喜欢使用这个Linix系统。 一张CD盘,不用安装直接启动,就能立即使用。并且包含各种各样的系统救援工具。

第二讲
手把手教破解威联通固件

作为教学实践的示范,下面我将一步一步地讲述从下载官方发布的固件开始,如何完成固件代码逆向解析的。遇到需要补充嵌入式linux系统结构和相关知识时,也会详细说明。力求通过本次的教学实践示范,让大家详细了解威联通系统。但我们的目的是教学,研究,不是黑客。禁止利用本教学示范,从事任何商业目的。

首先我们去威联通的官网,选择一个它发布的固件。我会选择比较新的4.3.3版固件。但我不会选择最新版。我破解固件,会遵守江湖上的潜规则,不会破解最新版,至少要低一个小版本号。

 威联通官网固件.txt (5.77 KB, 下载次数: 652)

威联通官网发布的固件包是zip格式的压缩包。解压后会得到一个img文件。这个文件是什么格式,我不知道。所以就要使用Binwalk固件分析工具来查一查它。看看有什么线索。扫描的结果如下:
" lazyloaded="true" _load="1" style="word-wrap: break-word; margin: 0px; padding: 0px; text-decoration: none; font-style: normal; border: 0px; cursor: pointer;">

扫描的结果非常令人沮丧。根据经验,这个扫描结果不能提供什么线索。

思索与分析:
固件可能是加密的。因为这是威联通官网发布的固件,既然它是为Update威联通而发布的,那么威联通的系统在Update时就一定会有解密的方法。因此需要通过研究它的固件更新机制,获取固件包的内容。这是威联通固件的第一个坑。

为了研究威联通系统的固件更新机制,只能想办法找一台威联通,正好我的一个朋友有一台威联通TS288设备。使用SSH登陆后,在/etc/init.d/update.sh的文件中发现了这样的代码:

  1. /sbin/PC1 d QNAPNASVERSION4 "$path_name" "${_tgz}"; \
  2. /bin/tar tzf "${_tgz}" 2>/dev/null

复制代码

根据经验,这段代码给人的直观印象是,它要将"$path_name"所指的文件解密为一个"${_tgz}"文件。为了验证我的想法,我将官网发布的固件拷贝到该设备,运行了/sbin/PC1试一试。结果出乎意料地好。我拿到了一个tgz文件。将这个tgz文件下载,再用Binwalk固件分析工具来查一查它。

扫描的结果如下:
" lazyloaded="true" _load="1" style="word-wrap: break-word; margin: 0px; padding: 0px; text-decoration: none; font-style: normal; border: 0px; cursor: pointer;">

这个结果非常振奋人心。起始地址0开始为gzip compressed data。也就是说这是一个真正的tgz文件。接下来,我需要把/sbin/PC1下载到我的机器中,进行分析。因为以后制作启动工具母盘的时候,这是一个必须的文件。

/sbin/pc1是一个ELF格式的可执行文件。一般情况下,我会用IDA Pro工具先对它做个静态分析,如果需要更近一步的话,我会再用gdb工具做动态分析。其实PC1很简单。静态分析足以。情况如下截图:
" lazyloaded="true" _load="1" style="word-wrap: break-word; margin: 0px; padding: 0px; text-decoration: none; font-style: normal; border: 0px; cursor: pointer;"> 
" lazyloaded="true" _load="1" style="word-wrap: break-word; margin: 0px; padding: 0px; text-decoration: none; font-style: normal; border: 0px; cursor: pointer;"> 
" lazyloaded="true" _load="1" style="word-wrap: break-word; margin: 0px; padding: 0px; text-decoration: none; font-style: normal; border: 0px; cursor: pointer;">

并无悬念它是威联通用来加密,解密官网发布固件的。密钥是“QNAPNASVERSION4”并且固定不变的。使用Snowman对他做C/C++反编译,就可以生产一个pc1.c文件。留着我以后制作启动工具母盘时重新编译使用。这第一个坑总算是迈过去了。

由于NASYUN的篇幅限制,请继续看楼下,【手把手教你破解威联通固件】, 精彩继续!

【老骥伏枥-狗年大礼包】嵌入式linux逆向工程,手把手教你作黑Q-第一讲相关推荐

  1. 【老骥伏枥-狗年大礼包】嵌入式linux逆向工程,手把手教你作黑Q-第四讲

    原文网址:http://www.nasyun.com/forum.php?mod=viewthread&tid=39736&fromuid=106494 (出处: NAS云论坛) 第四 ...

  2. 【嵌入式开发】手把手教你4418/6818开发板屏幕修改 本文转自迅为: http://www.topeetboard.com 开发平台:iTOP-4418/6818开发板 44186818屏幕

    [嵌入式开发]手把手教你4418/6818开发板屏幕修改 本文转自迅为: http://www.topeetboard.com 开发平台:iTOP-4418/6818开发板 4418&6818 ...

  3. pve安装黑群晖直通硬盘_蜗牛星际装机教程篇三:手把手教你安装黑群晖NAS

    原文作者:范俩仟 蜗牛星际装机教程篇三:手把手教你安装黑群晖NAS 有很多评论说软路由没必要,我想说我就是把这东西当个玩意儿来消遣的,您喜欢看电影,我就喜欢玩电子产品.还有就是我没钱,所以想花最少的钱 ...

  4. clion浏览linux代码,手把手教你使用 Clion 开发 Linux C++ 项目

    手把手教你使用 Clion 开发 Linux C++ 项目 关于CLion CLion是一款专为开发C及C++所设计的跨平台IDE.它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员 ...

  5. 【Linux】手把手教你在 Linux 环境下部署 Oracle 数据库!

    来源:公众号[杰哥的IT之旅] 作者:三笠 相信大家第一次接触 Oracle 数据库时,大多数是在 windows 环境下安装,方便快捷,基本上可以说是一直下一步就能顺利安装成功.然而企业级的数据库, ...

  6. 写字机上位机c语言,易懂 | 手把手教你编写你的第一个上位机

    一.前言 大家好,我是ZhengN,本次来教大家编写一个基于QT的简单的上位机. 学习一个新的东西我们都从最基础地实例开始,比如学习C语言我们会从编写一个hello程序开始.学习嵌入式我们从点灯开始. ...

  7. 如何优化linux服务器,手把手教你如何优化linux服务器

    关闭不需要的服务.列出需要启动的的服务crond.network.sshd.irqbalance.syslog 启用 irqbalance 服务既可以提升性能,又可以降低能耗. syslog 是 li ...

  8. 【Linux】手把手教你搭建自己个人博客(boss版)

    文章目录 前言 环境 搭建LAMP架构 一 . 编译apache 1. 安装依赖包 a. 安装环境依赖 b. 编译安装依赖包apr c. 安装apr-util依赖包 d. 安装pcre依赖包 2. 开 ...

  9. nmon命令linux安装,手把手教你安装nmon

    一.nmon简介 nmon是由IBM 提供.免费监控 AIX 系统与 Linux 系统资源的工具.该工具可帮助在一个屏幕上显示服务器系统资源耗用情况,并动态地对其进行更新.此外,他还可以利用 exce ...

  10. u盘里装linux系统软件,手把手教你在U盘里面安装一个LINUX系统

    烈火建站学院(LieHuo.Net)服务器文档一提到LINUX,一些人会觉得没有WINDOWS那么实用,那么方便,那么简单,甚至觉得LINUX几乎没什么软件.用它干什么.最主要的一点,某些想尝试一下图 ...

最新文章

  1. 低数值精度推理和训练
  2. Jupyter Notebook 中查看当前 运行哪个python
  3. HMAC-MD5算法原理及实现
  4. 从一个实例看jaxb的强大
  5. 居然还有大学在大一上C语言课?
  6. HTTP2协议的发展与使用
  7. python没有菜单栏怎么搞mac_Mac 下 sublime 怎么调出顶端菜单栏
  8. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
  9. 物联网碰到云计算会怎么样?
  10. laravel 环境自编译过程
  11. idea调试代码步入用法
  12. 基于社会资源的普通摄像机1400结构化AI算法改造方案
  13. 揭开阿里巴巴复杂任务资源混合调度技术面纱
  14. 【网易云信】直播推流SDK特性、系统架构、使用说明
  15. ant中修改a-switch的大小、修改a-checkbox的大小
  16. 基于Hough变换的人眼虹膜定位
  17. 用PDFPrint进行PDF文件的批量打印
  18. html360全景图原理,html360°全景展示 示例
  19. 做好企业站优化需从5个方面共同考虑
  20. 商家如何搭建一个完善的微信生态链

热门文章

  1. python水果超市管理系统流程图_项目1-水果超市管理系统-学生
  2. singleTask
  3. hermite插值法 matlab,分段三次Hermite插值Matlab实现
  4. php最新猜骰子精美ui源码,ThinkPHP全新UI猜猜乐H5游戏源码
  5. win11没有扫雷了?咱用python做一个(效果演示+源码分享)
  6. 匈牙利算法及KM算法详解
  7. cad计算机绘图知识点,学习Auto CAD制图需要掌握哪些重要的知识点?
  8. js书写原生ajax,javascript原生ajax写法
  9. java json-rpc_JSON-RPC(jsonrpc4j)使用demo
  10. python官方中文库_新鲜出炉!Python 3.9 官方中文文档详解!