日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Reveal使用步骤和 破解Revealapp的试用时间限制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉載至?http://blog.csdn.net/justinjing0612/article/details/38424061?

下載地址: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)以及當前的targets。
展開查看Reveal.framework中所有h文件都正確加入工程中;


確保Summary--> Linked Frameworks and Libraries目錄下,包含以下三個framework
Reveal.Framework
CFNetwork.framework
QuartzCore.framework
CoreGraphics.framework

2.TARGETS中設置命令
TARGETS --> Settings --> Other Linker Flags -->添加命令 -ObjC

3.由于Reveal只支持iOS6,所以程序的最低適配版本要選擇為iOS6.1
Bulid Setting --> iOS Deployment Target -->iOS6.1

4.運行程序,切換到Reveal,左上部分下拉框選擇當前運行的程序就可以操作了。

如果還不行直接去看官網的教程吧!
http://support.revealapp.com/kb/getting-started/integrating-reveal-with-your-ios-app

?

?

?

破解Revealapp的試用時間限制

原文地址: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使用步骤和 破解Revealapp的试用时间限制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。