吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1652|回复: 5
上一主题 下一主题
收起左侧

[iOS 原创] H5GG 类型插件中被添加的验证系统

  [复制链接]
跳转到指定楼层
楼主
HackXK 发表于 2026-1-20 15:12 回帖奖励

我们将深入分析如何绕过 H5GG 插件的验证体系,并实现完整的品牌化定制。


第一阶段:原理深度解析

在动手之前,你需要明白我们面对的是什么样的验证体系:
H5GG 插件通常由 Objective-C (原生层)HTML/JS (前端层) 组成。

  1. 前端层负责显示菜单和卡密输入框。
  2. 核心逻辑(如时间校验、权限判断)可能隐藏在 JavaScript 或二进制的 .dylib 中。

我们的策略是:静态物理屏蔽 + 动态 UI 劫持
更简单的办法后文会讲到。


第二阶段:环境准备

  1. Xcode: 必不可少。我们需要它来编译 .xm (Logos) 源代码,将其转化为手机能运行的二进制指令。
  2. Python 3: 用于运行自动化重写脚本。手动使用二进制编辑器(如 Hex Fiend)修改几百处数据太慢且易错。
  3. ldid (重签名工具):
    • 目的:iOS 系统对 .dylib 有签名校验。我们修改了文件的内容后,原本的数字签名就失效了。
    • 作用:如果不使用 ldid 重新进行伪签名,插件注入后 App 会直接闪退。

第三阶段:Python 静态补丁实战 (patch_dylib.py)

这个脚本的核心逻辑是 “搜索并替换”

1. 文本清理(去品牌化)

  • 修改位置text_patches 数组。
  • 修改目的:插件原作者通常会在代码里硬编码 QQ 群、作者名。如果不清理,你的客户会看到原作者的信息。我们用“空格”覆盖这些文字,在不改变文件大小的前提下抹除痕迹。

2. 函数屏蔽(逻辑切断)

  • 修改位置call_patches 数组。
  • 修改目的:原程序会调用 showKeyInput() (显示输入框) 或 showKeyExpired() (显示过期)。
  • 原理:我们将这些调用指令替换为 void(0);。这意味着当程序尝试弹出验证框时,实际上什么都不会发生,逻辑运行到这里就“断”了。

3. HTML 结构物理修改

  • 修改位置html_patches 数组。
  • 修改目的
    • 修改 ID (keyInputOverlAX):原版的 JS 脚本会寻找 id="keyInputOverlay"。我们将它重命名后,原版脚本就“找不到”这个元素了,也就无法控制它的开启或关闭。
    • 强制内联样式 (display:none):通过在 HTML 标签中直接写入死样式,确保无论逻辑如何运行,验证浮层在物理层面上都是不显示的。

第四阶段:Xcode 原生定制 (XMCrack.xm)

如果说 Python 脚本是“止损”(绕过限制),那么 Xcode 重写就是“增值”(定制你的品牌)。

1. 为什么要 Hook FloatButton?

  • 现状:插件默认的悬浮球图标可能是原作者的头像。
  • 目的:我们通过 Hook 原生 UI 类 FloatButton,在其加载到窗口 (didMoveToWindow) 时,强制注入我们自己的逻辑。

2. 核心代码逻辑解析

// 关联对象 (Associated Object)
objc_setAssociatedObject(self, &kOurImageKey, image, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  • 为什么要用关联对象?:因为我们不能直接给系统类添加变量。通过这个技术,我们可以把我们下载的“自定义图标”死死绑定在悬浮球对象上。

3. 拦截 setImage: 的目的

  • 逻辑:原程序可能会在运行过程中多次尝试把图标切回到原作者的图片。
  • 解决方案:我们 Hook 了设置图片的方法。如果传入的图片不是我们绑定的那张,我们就强制将其设为 nil(透明/空白),从而保证你的品牌图标永远是唯一显示的。

第五阶段:完整操作闭环

  1. 配置脚本:修改 patch_dylib.py 里的文件路径。
  2. 执行 patch:运行脚本。你会看到输出显示“已屏蔽 X 处”,这代表验证逻辑已被物理切断。
  3. 配置 Xcode:修改 XMCrack.xm 里的图片链接(建议使用可靠的图床)。
  4. 编译与注入
    • 编译生成最终的 XMCrack.dylib
    • 将该文件与打过补丁的 _patched.dylib 一起打包进 App。

避坑指南 (初学者必看)

  • 字节对齐:在 patch_dylib.py 中,如果要把 A 替换成 B,B 的字节长度必须等于 A。如果 B 短了,脚本会自动补空格;如果 B 长了,文件结构会错位,导致插件报废。
  • 网络图片XMCrack.xm 里的图片链接必须是 直链(以 .jpg 或 .png 结尾)。如果是网页链接,图标会加载失败。
  • ldid 报错:如果提示 command not found,请确保你已经安装了 brew 并运行了 brew install ldid

这是一个群友介绍的,因为啥也不说了,当做一个教材给吾爱友们当个分析。

其实有一个很简单的办法,一般h5的插件我们可以直接用文本打开dylib,拖到底部就可以看到他的源码内容,基本一目了然。这里就不做过多的解释,自己文本打开一看就清楚了。

源码,文件跟dylib打包了,喜欢的吾爱友记得给个免费的start!

全部文件.zip

1.03 MB, 下载次数: 27, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 5威望 +1 吾爱币 +24 热心值 +5 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ttzzw + 1 + 1 谢谢@Thanks!
Carinx + 1 + 1 用心讨论,共获提升!
ioyr5995 + 1 + 1 热心回复!
违规昵称107 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
违规昵称107 发表于 2026-1-20 15:45
学到了学到了
3#
VL008 发表于 2026-1-20 16:10
4#
炫迈 发表于 2026-1-21 08:53
我想补充一点实际经验,H5GG这类插件我玩过不少了,确实用文本编辑器直接打开dylib是最简单粗暴的方法,特别是新手别被那些复杂的步骤吓到,用VSCode或者Notepad++直接打开dylib文件,搜索关键词比如keyInputOverlay或者showKeyExpired,找到相关代码直接注释掉或者删掉就行,比用Python脚本简单多了,不过要注意字节对齐问题,删代码的时候最好用等长的空格替换,不然整个文件就废了,另外楼主提到的ldid重签名确实关键
5#
猫携 发表于 2026-1-22 08:49
直接mac打开safari然后调试真机,就可以直接提出来整个网页
6#
ww144 发表于 2026-1-22 20:41
感谢大老
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-2-7 17:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表