内容简介:最近有一篇文章 介绍了如何实现 AppStore App 自动下载,笔者看后收获良多。不过文中只介绍了如何去模拟用户的操作来完成下载,并没有涉及抹机、IP 更换等内容。所以笔者打算在此分享一下自己对这些方面的经验。修改设备唯一可识别标识可以做很多事前,比如防止根据 UUID 追踪,避免大数据「杀熟」等。但是在 iOS 设备上目前想做到修改的前提是越狱,所以为了多领几个美团红包而选择承担越狱的风险,是否值得还是要考虑清楚的。 不过在业界有大量应用这种技术的产业,比如积分墙、ASO 的刷榜…… 不过这些产业就属
最近有一篇文章 介绍了如何实现 AppStore App 自动下载,笔者看后收获良多。不过文中只介绍了如何去模拟用户的操作来完成下载,并没有涉及抹机、IP 更换等内容。所以笔者打算在此分享一下自己对这些方面的经验。
FBI WARNING
- 以下内容可能会引起很多人不适,请读者自酌。
- 18 岁以下请在家长陪同下观看!
- 部分内容可能违反你所在地相关法律,请谨慎模仿
为什么要修改 iOS Device ID ?
修改设备唯一可识别标识可以做很多事前,比如防止根据 UUID 追踪,避免大数据「杀熟」等。但是在 iOS 设备上目前想做到修改的前提是越狱,所以为了多领几个美团红包而选择承担越狱的风险,是否值得还是要考虑清楚的。 不过在业界有大量应用这种技术的产业,比如积分墙、ASO 的刷榜…… 不过这些产业就属于 “灰黑产” 了,涉及到了原力的黑暗面,所以笔者不建议涉世不深的读者继续阅读下去。
当你凝视深渊,深渊也在凝视着你。
现状
在开始讲如何做之前,笔者决定先简单介绍一下业界现在已经能做什么:
如图所示,这是一款在业内非常常见的改机软件。由于作者不可考(不过理应如此,毕竟为了自己的人生安全),源码遗失已经 iOS 版本的多次更新,现在已经不值钱了。但是麻雀虽小五脏俱全,它能够修改设备的五码、机型、配置 Apple ID 和一键越狱等。 前人的成功告诉了我们这是可行的,剩下的只是模仿,因此笔者深入逆向并研究了这款软件,在当我看到了一大堆用汇编写的混淆之后…… 放弃了。 所以下面的内容都是笔者编的,大家有兴趣看个开心就好,基本上可以点关闭按钮了 (●°u°●) 」
如何破解一款程序?
笔者依稀记得狗神 在他那本著名的小黄书 中提到,逆向一款软件最重要的不是最终成品的代码,而是过程的分析与思路。所以经常可以看到一款软件的破解代码重要的也许只有两三行,但是过程有多艰辛也许只有破解者才知道。例如破解 Mac 版 QQ 音乐下载需要 VIP 权限的限制的代码也许加上注释也不到一百行:
/* How to Hook with Logos Hooks are written with syntax similar to that of an Objective-C @implementation. You don't need to #include <substrate.h>, it will be done automatically, as will the generation of a class list and an automatic constructor. %hook ClassName // Hooking a class method + (id)sharedInstance { return %orig; } // Hooking an instance method with an argument. - (void)messageName:(int)argument { %log; // Write a message about this call, including its class, name and arguments, to the system log. %orig; // Call through to the original function with its original arguments. %orig(nil); // Call through to the original function with a custom argument. // If you use %orig(), you MUST supply all arguments (except for self and _cmd, the automatically generated ones.) } // Hooking an instance method with no arguments. - (id)noArguments { %log; id awesome = %orig; [awesome doSomethingElse]; return awesome; } // Always make sure you clean up after yourself; Not doing so could have grave consequences! %end */ %config(generator = internal) #import <Foundation/Foundation.h> #include <substrate.h> %hook DownLoadTask - (BOOL)checkHaveRightToDownload:(int)argument { return YES; } %end unsigned int (*old_GetFlexBOOL)(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8); unsigned int new_GetFlexBOOL(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { return 1; } %ctor { NSLog(@"!!!!!!inject success!!!!!!!"); void * Symbol = MSFindSymbol(MSGetImageByName("/Applications/QQMusic.app/Contents/MacOS/QQMusic"), "_GetFlexBOOL"); MSHookFunction(Symbol, &new_GetFlexBOOL, (void *)&old_GetFlexBOOL); } 复制代码
而真正重要的是找出思路和逆向分析的过程,操作系统本质上也是一个软件,修改 Device ID 其实和破解一款音乐 VIP 限制本质上是一样的,只是一个只需要把 checkHaveRightToDownload 的返回值改成 YES ,另一个则需要与操作系统斗智斗勇罢了。
思路
综上所述,在我们对系统下黑手之前应该先理清思路。顺便说一句以下内容皆是我瞎编的,如有雷同实属巧合:
graph TD A[硬件出厂获得 UUID] -->| 内核读取硬件信息 | B(XNU) B -->| 将读取到信息写入某处 | C(经过加密处理的缓存) C -->| 提供一系列接口供其他应用读取 | D{API} D -->| 直接调用 | E[daemon] D -->| 直接调用 | F[上层应用] D -->| 再封装 | G[私有 API] E --> | 从 deamon 读取 | F[上层应用] G --> | 调用私有 API|F[上层应用] 复制代码
~~ 少 (bian) 女(bu)祈 (xia) 祷(qu)中(le)~~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 不修改模板的前提下修改VisualState中的某些值
- 修改Git已提交的的Author和EMail(批量修改脚本)
- ViewGroup 默认顺序绘制子 View,如何修改?什么场景需要修改绘制顺序?
- Per.js 史上最大修改版本,2.1 版本更新,修改 5 项功能
- 通过修改环境变量修改当前进程使用的系统 Temp 文件夹的路径
- Linux下修改时区
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JSON 在线解析
在线 JSON 格式化工具
RGB转16进制工具
RGB HEX 互转工具