
系統(tǒng)iOS9.3.2,與書中作者的的案例有些出入。但思路相同。一個(gè)簡單的案例帶你入門
1.class-dump -H SpringBoard -o 路徑
2.書中SBScreenShotter不存在,只有SBScreenshotManager。SBScreenshotManager是不是之前的SBScreenShotter,在頭文件中找到saveScreenshots方法。在cycript -p SpringBoard驗(yàn)證,SBScreenshotManager就是之前的SBScreenShotter。

3.如何調(diào)用SBScreenshotManager中的saveScreenshots方法?

方法名都改了,SBScreenshotManager中也沒有sharedInstance。在按書中的寫法必然不能生效。
只需要聲明相同的方法和屬性:
@interface SBScreenshotManager:NSObject
- (void)saveScreenshots;
@end
@interface SpringBoard
- (void)hookMethod;
@property(readonly, nonatomic) SBScreenshotManager *screenshotManager;
@end
勾住SpringBoard _menuButtonDown方法
%hook
- (void)_menuButtonDown:(id)down{
NSLog(@"You've pressed home button.");
SBScreenshotManager * screenshotManager = [self screenshotManager];
[screenshotManager saveScreenshots];
%orig;
}
%end
4.效果圖中閃光顏色也被改變了,是因?yàn)楣醋×薙BScreenFlash的flashColor方法。
%hook SBScreenFlash
- (void)flashColor:(id)arg1 withCompletion:(id)arg2{
NSLog(@"iOSRE:flashColor: %s,%@,",object_getClassName(arg1),arg1);
CGFloat red = (arc4random() % 256) / 255.0;
CGFloat green = (arc4random() % 256) / 255.0;
CGFloat blue = (arc4random() % 256) / 255.0;
UIColor *c = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
%orig(c, arg2);
}
%end
結(jié)論:
1.對于新手來說,最難的是如何調(diào)用對象里的屬性和方法,我google許久也沒有一個(gè)好的辦法,也沒有找到官方文檔。例如自己init一個(gè)對象,用runtime去獲取對象都沒有生效。這個(gè)方法來自于書中后面的案例,簡單又好使。如果遇到困難,好幾天都沒有解決,還是先保留,也許后面就自然而然的解決了。
2.哈哈,微信的零錢也可以更改,不過只能看不能用。
修改零錢1.png
修改零錢2.png
3.微信改零錢功能是中看不中用的,也就自己高興,當(dāng)然銀行app的余額也同理。我們應(yīng)該做些實(shí)用性的功能:如螞蟻森林自動收取好友能量,釘釘改個(gè)位置定時(shí)打個(gè)卡(不要讓老板知道就好)。
4.當(dāng)然如果是自己分析,定位自己想要的類名和函數(shù)是最難的,想要深入,最好還是學(xué)習(xí)匯編。
5.有任何問題歡迎留言交流。
本文案例來自于《iOS應(yīng)用逆向工程 第2版》
iOS逆向?qū)崙?zhàn)一:實(shí)現(xiàn)按下home鍵截屏,如何使用hook的對象屬性
iOS逆向?qū)崙?zhàn)二:微信聊天界面實(shí)現(xiàn)飄氣球效果
iOS逆向?qū)崙?zhàn)三:修改微信錢包零錢
iOS逆向?qū)崙?zhàn)四:去優(yōu)酷廣告

