破解Revealapp的试用时间限制

letspro-5.2.9.zip 立即下载

原文地址:http://jingwei6.me/2014/02/28/reveal_crack.html

Revealapp作为分析iOS app UI结构的利器,还是非常称手的,89刀的价格也是物有所值。本文分析其试用版时间限制,只是用于学习,如果一直用,还是买个licence支持一下吧。

试用版有30天的时间限制,既然是30天时间限制,肯定每次启动是要读当前时间的啰。所以最简单的hack方法就是修改系统时间。如果这种方法可以接受,就不用往下看了。

如果你的工作严重依赖于Calendar,那么修改系统时间的方法就是不可以接受的。下面的追踪过程包含了对双精度浮点数在内存中的表示、ObjC对象模型等问题的讨论,如果不感兴趣可直接跳到文末查看最终的解决方案。

开始的尝试

用dtruss看了下启动时调用的syscall,是没有网络通讯的,说明app的安装时间不可能是从网络读下来的,那么这个时间肯定是写在本地的文件系统。

用opensnoop看了下启动时Reveal读过的所有文件,没有值得注意的地方。最后的发现证实这个思路忽略了一个问题,一个app读的文件并不一定是它自己打开的,可以是进程间通信。

这些简单的尝试失败后,就只能老老实实的分析代码了。

从关键字开始

试用版的Reveal有提醒试用剩余时间的信息在窗口的右上角”Free trial ends in xx days”(我觉得这不是一个好的设计,这句话似乎时刻挑衅着使用者:“来呀,你来hack我呀”)。“trial”是我感兴趣的关键字,除了在数据段肯定能找到这个关键字以外,说不定在ObjC的运行时类型系统中还能有意外的收获。果真,Reveal没有对类型信息进行模糊处理,在class-dump生成的头文件中发现了:
-[IBARegistrationPreferencesViewController messageForTrialDaysRemaining:(long long)arg1] 
从函数名来看它应该就是生成试用剩余时间字符串的。

上GDB,单步跟踪,

0x000000010008bd34 push rbp 
0x000000010008bd3f move rbx, rdx ; rdx 就是还剩下的试用天数,也就是函数的参数arg1

以此为突破口,发现下面的小段代码。

0x00000001000872cd call 0x100086ec2 
0x00000001000872d2 mov rcx, rax ; rax中是上面函数返回的已过去的天数 
0x00000001000872d7 mov eax, 0x1e ; 0x1e=30 30天的限制 
0x00000001000872dc sub rax, rcx ; 30减去已经过去的天数的,减出来就是还剩下的天数

再往下走,需要分析的数据不再像是“天数”这样的整数,而是像软件安装日期NSDate这样的对象,特征不明显。所以就有必要清楚NSDate这个对象中日期的表示方法。

内存中的NSDate对象

NSDate对象应该有两个域,第一个“isA”是所有ObjC对象都有的类型指针,指向NSDate类型对象。第二个是个双精度浮点数,表示从2001年1月1日到现在的时间间隔,单位是秒。

pointer: isA
double: _timeIntervalSinceReferenceDate

其实isA指针就是NSDate对象的特征,所有的NSDate对象都是以相同的8个字节开始。第二个域是一个浮点数,分两步把它转换为一个日期。

第一步,十六进制浮点数转换为十进制

双精度浮点数由8个字节构成,1个bit表示符号,11个bit表示指数,剩下的52位用来表示底数。
使用python可以方便的把8字节的十六进制浮点数转换为十进制数:
struct.unpack('<d','c3b72c7a9ebfb841'.decode('hex'))[0]

在gdb中,可以直接使用命令 
p *(double*)(NSDate指针地址+8)

第二步,秒数转换为日期

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:415285808.20822901]; 
NSLog(@"\n%@", date);

使用上面的方法,可以在跟踪汇编代码的时候检查内存中的NSDate对象,以及它所表示的日期。(这需要点耐心)

最终,安装Reveal的时间第一次出现在内存中的位置被找到,这个位置所在的函数显然负责把存在文件某处的一个magic number转换为软件安装日期。

但是意料之外的是,这个想像中的magic number并不magic,它仅仅是存在user default的plist文件中的一项,而且就是安装日期的双精度浮点数的十六进制表示。

结论

所以,要想永久试用Reveal,只需要打开

~/Library/Preferences/com.ittybittyapps.Reveal.plist

把IBAApplicationPersistenceData这一项删除就是了。

Reveal.app破解版,iOS调试利器 实测可用的iOS UI调试利器,已破解,去除30天时间限制! 立即下载

相关推荐

新版Reveal破解

IOS真机调试利器,运行后,请用资源附带的license文件注册

Reveal 破解 无限试用

1、退出reveal 2、在终端中运行killall cfprefsd杀掉所有的cfprefsd进程 3、删除~/Library/Preferences/com.ittybittyapps.Reveal.plist 4、运行APP,此时新的plist就会起作用了 转载于:https://www.cnblogs.com/codemakerhj/p/5075694.html...

weixin_30951231的博客 501

Reveal17破解版工具及使用

Reveal17破解版及使用 1.解压文件 2.打开Reveal 3.打开PYGPatcher.app 4.到官网获取一个使用账号 5.把Reveal拖到PYGPatcher成功破解

软件跳过自动检测试用期,解除软件试用期限制(Zeal anyday)

这个程序将去除一些演示软件和测试软件的时间限制,例如TCPMAN3.0是一个Internet拨号软件,它允许你免费使用30天,超过此期限就必须重新安装软件。为了解除时间限制,你可以使用AnyDay程序代替TCPMAN启动(从TCPMAN目录),把系统时间改为ANYDAY.INI(由我们的设置程序AnyCfg.exe建立)中指定的日期,然后运行TCPMAN。之后,AnyDay退出,并恢复正确的系统时...

weixin_29958797的博客 1万+

Reveal_4.0 for Mac 破解版

Reveal 是一款调试 iOS App UI 界面的工具, 配合 iPhone Cydia 安装 Reveal Loader (软件源: http://apt.so/codermjlee/) 使用

Reveal1 5 0 4819 破解版 IOS的UI调试利器

iOS UI调试利器,Reveal 1.5超过35个新的功能,这是迄今为止最全面的软件更新。,最新版,完美破解,新版对autolayout支持的更好,支持显示ViewController,下载运行即可

【逆向】Android逆向破解某APP

每日一言:高手不是叫所有人都输给你,而是叫所有人都想赢你。 欢迎一起讨论和学习,QQ:732258496 QQ群:478720016 前言 三人行必有我师焉,取长补短,借鉴优秀的APP,提升自己的认知和能力,作为互联网中的一员,要勇于挑战未知领域,作为Android开发者,应该用特殊的手段搞定特殊的事情,带着我们的目标,来一次Android的逆向之旅吧! 准备工作 基本工具三件套:...

u010194271的博客 2万+

OpenBCI脑电帽硬件DIY与低成本搭建实战

本文详细介绍了如何通过第三方兼容硬件和开源设计,低成本DIY一套功能完备的OpenBCI脑电采集系统。从硬件选购、组装、软件配置到信号调试,提供了完整的实战指南,将总成本控制在千元级别,使脑机接口技术对爱好者、学生和研究者变得更加触手可及。

weixin_29322855的博客 792

和烦人的注册码说拜拜

如果你做过登录信息过期或者token失效的案例,你也许对注册码的试用期计算有一定的感悟 。比如我们在Android中,我们首次登录后可以将一个时间戳保存在本地,每次进入APP都取出来与当前系统时间做差进行验证,如果超出某个范围则将所有的登录信息清空。那么其实在PC端也是同样的原理,在首次安装应用的时候将当前的系统时间保存到本地配置文件中,每次重新进入应用的时候取出来和当前时间做时间差,如果超过一定范

ITPlus的博客 1434

单细胞转录组数据质控实战:如何用Seurat精准过滤低质量细胞(附完整代码)

本文详细介绍了使用Seurat进行单细胞转录组数据质控的实战方法,包括基因检出数、分子计数和线粒体基因比例等关键指标的解读与可视化技巧。通过动态阈值策略和高级质控技巧(如双细胞检测和红细胞过滤),帮助研究者精准过滤低质量细胞,提升数据分析可靠性。附完整代码示例,适合生物信息学研究人员参考实践。

ii567的博客 825

Cisco 路由器 打环测试教程

环 回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如下图所示,我们在设备端口上用命令loopback(某些端口上命令格式为 loopback diagnostic)使接口从内部将自己发送的信号转接到自己的接收端(如红线所示),通过检查数据发送和接收的情况来判断端口工作状态是否正常。如果 需要对端口进行完全的检测,可以使用符合标准的短跳线将端口收发短接构成环...

weixin_34304013的博客 2024

Reveal使用步骤和 破解Revealapp的试用时间限制

下载地址:http://pan.baidu.com/s/1eQstR2M 一.Reveal使用步骤 1.启动Reveal --> Help --> Show Reveal Library in Finder,拖动添加Reveal.framework到工程中。 选中 Copy items into destination group's folder (if needed)以及当前的tar

yongyinmg的专栏 8638

Zynq UltraScale+网络加速方案:用AXI Ethernet Subsystem实现2.5G吞吐量的配置秘籍

本文详细介绍了在Xilinx Zynq UltraScale+平台上使用AXI Ethernet Subsystem实现2.5Gbps网络吞吐量的配置方法。通过硬件设计优化、Vivado工程配置、Linux驱动调优及性能测试等关键步骤,为工业视觉和5G前传等高速网络应用提供可靠解决方案。

weixin_30485379的博客 615
上一篇: CocoaPods一个Objective-C第三方库的管理利器
下一篇: UITableView去除空白cell上多余separator
Mideveloper
博客等级 码龄14年 157粉丝 68原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值