• 那是云首页
  • 快捷导航
  • 更多
    设为首页收藏本站
  • |

#楼主# 2024-1-18 01:58

跳转到指定楼层
前言

在【兔年大礼包】中详细讲解了如何手工破解华芸NAS系统[1]。并提供了X86的华芸AS-304T系列启动盘实例。因为【兔年大礼包】中讲解的是X64系列的ADM手工破解过程,但并没有提供X64系列的ADM启动盘实例,坛友们希望我再写一篇关于华芸NAS系统破解(X64系列)的文章,并提供一个X64系列的启动盘实例。再专门讲解一下如何实施程序化的破解,以及如何创建启动盘的问题。因此在龙年来临之际,作为又一个嵌入式Linux逆向工程的教学范例。我将为大家提高关于实施程序化的破解和创建启动盘。希望大家能更好地学习,研究逆向工程的技术。从中学到有益的东西。

需要强调的是,我不是一个黑客。文章中提到的固件资源均来自于华芸官网公布的系统包和发布的固件。在参考文献中注明了所有引用的出处。此【龙年大礼包】启动工具盘的理念和启动引导的基础架构设计均绝对是老骥伏枥本人独创,并合法利用开源项目 (Tiny Core Linux Project) [2] 开发的。 也是老骥伏枥通过 NASYUN 论坛在全球独家首发。此工具盘为的是进行教学, 研究和技术交流。 禁止用于任何商业目的。

建立了一个交流QQ群,欢迎一起进群讨论:783953098

第一讲
程序化的破解创建启动盘的设计思想方法

在【兔年大礼包】中详细讲解了如何手工破解华芸NAS系统。但坛友们普遍反映,手工破解华芸NAS系统难度大,不易实施。学习起来也有一定的困难。更希望能详细讲一讲程序化的破解。

关于华芸嵌入式Linux逆向工程的手工破解问题在【兔年大礼包】中已经详细讲解了。这里就不赘述了。从整个手工破解过程看,我们需要做如下的一些对系统固件的改造。

1.        要修改/usr/lib/libnasman.so.0.0这个动态库的二进制代码。
2.        要利用Linux的所谓动态库劫持技术,补充一个用户自定义的动态库。
3.        需要把添加的动态库劫持补丁到系统。
4.        考虑到针对不用的硬件,还可能需要添加相关的设备驱动。例如:网卡驱动等等。
5.        针对华芸的ADM系统破解,提供一些相应的工具程序。
6.        要创建一个用户自定义的启动盘。

如果要把上述的内容,全部通过程序化来实现,就可以方便地制作破解的ADM系统了。

为了实施程序化破解,肯定需要首先构建一个可以实施的工作环境。在这个环境中,运行一些相关的工具程序,一步一步地完成上述的过程。为此我决定选用开源项目 (Tiny Core Linux Project)来构建工作环境。为什么选用Tiny Core呢?从名称就可以知道,它是一个非常小的Linux系统。破解用的工作环境,在完成破解后基本上就没有用可以废弃了。所以工作环境只要能够提供破解所需的工具的最小集合就足够了。另外Tiny Core系统还有一个优点,就是可以根据需要自由剪裁系统工具集,这非常适合我们用它来构建破解的工作环境。

为了启动盘实例的方便发布,并能同时支持legacy BIOS和UEFI。我会考虑把破解工作环境的发布盘做成一个iso9660标准格式的文件。这样的话,用户可以直接用于虚拟机上。也可以用工具软件,例如:rufus-3.8.exe 等等,将iso文件制成USB启动盘来使用。

接下来让我继续讨论在破解工作环境中的工作步骤:

第一步:要获取ADM官方网站发布的固件。

它的下载地址是:
这个固件是【兔年大礼包】中详细讲解的固件。但是在写【龙年大礼包】的时候,华芸已经把固件升级到了X64_G3_4.2.1.RGE2。

它的升级版下载地址是:
因此,【龙年大礼包】的破解中,会以这个版本为范例。因此也会包括这个版本的破解。

为了让破解工作环境的通用性更强,我决定为获取ADM固件专门单独写一个程序。我把它命名为:get_adm_firmware。

第二步:要对获取的固件中的libnasman.so.0.0动态库做二进制代码改造。这是比较麻烦的一项工作,可以用很多方法。比如对于那些需要改造的点,可以使用AI启发式扫描定位,那样做的的话,程序设计会比较复杂,通用性强。但我准备采取更简单的办法,做一个libnasman.so.0.0模板,以此模板来定位改造点。这样会使程序设计大大简化。但缺点是对于每次升级,都需要再做另一个模板(其实也未必,小版本升级时模板并不需要变动。例如:4.0.5.RRS1升级到4.0.5.RT42时模板就没有变动。甚至升级到4.1.0.RGS1时,旧模板仍然可用,但可能会存在小的不匹配或bug),通用性差。因此,我决定为这项工作也专门单独写一个程序。我把它命名为:patch_libnasman。

第三步:对于破解过程中:补充一个用户自定义的动态库,添加动态库劫持补丁到系统,添加相关的设备驱动,添加相应的工具程序等等工作。这些事情都是静态的。可以事先把这些需要的程序,文件都准备好。在工作环境中,将它们全部放在一个指定的文件系统的目录中。为此,我在工作环境中建立了一个目录。我把它命名为:patch 目录。

第四步:创建用户自定义的启动盘,将上述三个步骤准备好的东西整合在一起,创建成一个用户自定义的启动盘。我决定为这项工作也专门单独写一个程序。我把它命名为:create_adm_boot。

以上就是我的程序化破解创建启动盘的设计思想。我的这些步骤和程序只是根据我的设计思想创建的。大家可以根据自己的需要,进行裁剪和改造。也可以对其中的某个程序做优化替代。例如:把patch_libnasman的模板来定位改为AI启发式扫描定位,等等。我写这篇文章的目的,就是专门讲解一下如何实施程序化的破解,以及如何创建启动盘的问题。也就是说:“授人以鱼不如授人以渔”。接下来我会讲解破解工作环境的细节。

第二讲
破解工作环境的细节

在这一讲中,让我们来看看破解工作环境中的一些细节设计。以便坛友们可用利用我的破解工作环境,对后续的升级版本继续做逆向工程。

根据上一讲的设计思想,我会在破解工作环境中建立两个目录:/home/tc/Template 模板和/home/tc/patch 补丁目录。Template 模板目录中将主要用于存放对libnasman.so.0.0动态库做二进制代码改造用的模板。另外,也会存放一些与版本有关添加相关的设备驱动等模块。这个目录中的东西,都是为程序化的破解辅助用途的。

patch 补丁目录里面存放用于给ADM固件的补丁。这里面会包括,改造后的libnasman.so.0.0动态库,用户自定义的劫持用的动态库,动态库劫持补丁,添加相关的设备驱动,和我为破解添加的相应工具程序,等等。在patch 补丁目录中,建立了与ADM系统对应的目录结构。例如:改造后的libnasman.so.0.0动态库,需要放回系统的/usr/lib/目录中,替换掉原系统的libnasman.so.0.0动态库。因此在patch 补丁目录就会有/usr/lib/ libnasman.so.0.0 文件。这个文件将会由破解程序创建生成,等等以此类推。在patch 补丁目录里的东西,最终会用程序打包,生成一个patch.gz的补丁文件,用grub加载到ADM的固件中。

这两个目录的内容,大家可用参照我这次提供的破解工作环境的发布盘ADM_CreateBoot.iso做分析。来了解我的设计思想细节。

关于get_adm_firmware程序,由于破解工作环境中并不包含ADM系统的固件。这个程序的主要目的是一个给用户一个下载和分析ADM系统的固件的工具。同时还需要对固件进行解包和验证固件的chsum值,确保固件为官方发布的原版。破解工作环境的Tiny Core系统可以支持大多数的网卡,但并不能保证支持所有的网卡类型。启动破解工作环境后,我已经为大家开通了ssh服务。方便大家执行破解程序。在设计get_adm_firmware程序时,我的设计是支持两种方式的获取固件的方法。

可以运行命令:
直接从官网获取固件。
也可以事先下载好固件,把它拷贝到破解工作环境的/home/tc目录中,再运行命令:
get_adm_firmware  X64_G3_4.2.1.RGE2.img
来解析已经下载的固件。

如果解析,验证,解包成功。就会在破解工作环境的/home/tc目录中创建一个boot目录,将创建启动盘所需的固件系统文件,暂定存放在该目录之中。

关于patch_libnasman程序,这是破解固件的核心程序。它的目标就是要修改libnasman.so.0.0这个动态库的二进制代码。华芸的X64固件,以X64_G3_4.2.1.RGE2.img为例,包含了X86_64系列的九个机种。可以说基本上是X86_64系列的全系列破解。我在【兔年大礼包】中已经详细讲解了破解的机制。因此在设计patch_libnasman程序时,考虑到系列的类型,我会给一个index=x的输入参数。具体列表和对应的机型系列如下:

============================================================
index=0: (AS6 Series) Atom(TM):"D27","D25"
index=1: (AS70 Series) Intel Core i3 dual-core"
index=2: (AS50,AS51 Series) Celeron:"J1800","J1900"
index=3: (AS61,AS62 Series) Celeron:"N30","J30","N31","J31" ; Pentium:"J37","N37"
index=4: (AS63,AS64 Series) Celeron:"J33","N30","J34"
index=5: (AS52,AS53 Series) Celeron:"J4005","J4025","J4105","J4125"
index=6: (AS65 Series) Atom:"C3538"
index=7: (AS71 Series Gen2) Intel:"Core(TM)","Xeon(R)"
index=8: (AS66,AS67 Series Gen2) Celeron: "N5105"
============================================================

这些系列机型中,每一个特定的机型的硬件配置都在libnasman.so.0.0动态库中有对应关系的硬编码。如果你用虚拟机做实验,你可以通过调配虚拟机的配置,运行不同的机型。如果你使用实体机做实验,就要主要挑选一个适合你的实体机的系列。例如:我用蜗牛矿渣机时,就会选index=4,生成AS6304这个类型的启动盘。当然,也可生成其它系列的启动盘,但你需要启动ADM系统后,用我提供的工具程序:Nas_Attribute和Dump_Nas_Disk_Info等工具,具体确认哪个系列更适合你的实体机。这些问题,需要在创建启动盘后,慢慢地仔细调整。

为了让patch_libnasman程序更具有通用性,我在设计时为大家留下了一个模板选择接口。它会检查/home/tc/Template目录中的libnasman.so.0.0.<版本号>模板,容许你选择使用哪个模板去破解哪个版本的ADM系统。因此,大家也可以自行破解libnasman.so.0.0.<你的模板>,使用我的patch_libnasman程序去生成补丁文件。当然,大家也可以不用patch_libnasman程序,直接把自行手工改造的libnasman.so.0.0文件,拷贝到/home/tc/patch/usr/lib/ 补丁目录也是可以的。

大家可以自行对ADM系统做补丁和改造,只要把你做的改造文件拷贝到/home/tc/patch补丁目录中的与ADM系统相对应目录中即可。

关于create_adm_boot程序。这段程序就比较简单了。就是把已经解析好的ADM系统文件和补丁包集成在一起,创建一个ADM系统的启动盘。ADM系统的启动盘结构很简单。它有三个分区,第一分区是grub的启动引导分区。第二分区是ADM系统分区。第三分区是ADM系统备份分区。为了方便大家以后调试ADM系统,我在创建启动盘的时候,没有生成ADM系统备份分区,因为没有备份分区并不影响ADM系统的运行。而是把第三分区临时生成了”自举式Tiny Core破解工作环境”。这样可以方便大家通过自举式Tiny Core工具调试ADM系统。如果一切调试都没有问题,可以直接把第二分区拷贝到第三分区,做成release版(发布版)的启动盘。启动盘可以是USB盘,也可以是SATA硬盘,但不能是IDE硬盘。当然,最好用USB盘做启动盘。因为启动盘很小,只需要512M的尺寸即可。

由于NASYUN的篇幅限制,请看楼下,第三讲 【体验程序化的破解ADM系统与实践范例】,精彩继续!

评分

参与人数 1贡献 +1 收起 理由
←_←663 + 1 很给力!

查看全部评分

最自然的一种表达方式,即是不写赞赏语,红色赞赏按钮就在那,大家懂的。

1人打赏

那是云论坛 - 国内知名的NAS交流平台
http://www.nasyun.com
分享淘帖
回复 印象

使用道具

ciniao0921 发表于 2026-7-1 14:42 来自 中国浙江宁波
多谢老骥的分享啊 ,正好需要这个教程呢
回复 支持 反对 印象

使用道具 举报

Redeem 发表于 2026-6-1 20:17 来自 中国河南
太棒了!楼主的水平实在是高,产出的作品也很值得持续反复学习!
回复 支持 反对 印象

使用道具 举报

nas8087 发表于 2026-1-26 14:45 来自 中国广东深圳
nux逆向工程知识,【龙年大礼包】将为大家提供一个破解工作环境的发布盘ADM_CreateBoot.iso。此次的工具盘是iso9660标准格式的文件。该盘中不包含任何原厂的固件。读者需要自行去华芸的官网下载相应的固件。该盘的设计理念,系统结构,所包含的程序代码均为老骥伏枥本人独家原创已及合法使用开源的TinyCore系统。请坛友们遵守 GNU General Public License, 未经授权禁止用于商业用途。 该工具盘仅仅为的是进行教学, 研究和技术交流。 禁止用于任何商业目的。
回复 支持 反对 印象

使用道具 举报

不渝初心 发表于 2026-1-25 19:45 来自 中国山东济宁
大佬威武1知识点讽德诵功睡觉睡觉手机哈
回复 支持 反对 印象

使用道具 举报

gaga1983 发表于 2026-1-16 16:45 来自 中国浙江丽水
老骥伏枥,太棒了!!!
回复 支持 反对 印象

使用道具 举报

吾心何依 发表于 2025-11-29 18:54 来自 中国重庆
感谢大佬的分享(≧≦)
回复 支持 反对 印象

使用道具 举报

Fairy-Tale 发表于 2025-6-14 15:59 来自 中国北京
111111111111111111111111111111111111111111111111
回复 支持 反对 印象

使用道具 举报

hongfl 发表于 2025-4-17 04:04 来自 中国广东深圳
谢谢,尝试学习学习。
回复 支持 反对 印象

使用道具 举报

ganjie 发表于 2025-3-12 22:10 来自 中国广西百色
支持大神!感谢大佬的分享
回复 支持 反对 印象

使用道具 举报

kninja 发表于 2025-2-14 22:11 来自 中国浙江金华
学习学习 太强大了老大膜拜膜拜
回复 支持 反对 印象

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群
懒人地图| 手机版|小黑屋| 智能生活 , 上那是云 |闽ICP备2020018196号-1 |网站地图