寫給iOS的沖頂大會輔助

IMG_0691.PNG
IMG_0692.PNG

由于最近沖頂大會越來越熱,網(wǎng)上就出現(xiàn)了各種輔助蛙粘。大都是和“跳一跳”輔助一樣的套路,截圖使用python文字識別然后拿到題目和選項去搜索构挤。我想做的是脫離電腦,直接在app里拿到題目進行搜索。以上截圖就是最終實現(xiàn)的效果。話不多說讓我們直接開始借浊。

工具

我們需要hookApp里的一些方法和修改一些界面所以就需要逆向的一些工具,我使用的是MonkeyDev直接安裝使用,不懂的可以查看教程。至于不帶殼的App可以從某助手里下載或則自己選擇手動砸殼萝招。最后就是分析工具Hopper

分析頁面

我們把砸完殼的app扔進項目運行起來,查看頁面
屏幕快照 2018-01-17 下午9.17.08.png

我們可以很清楚的看到問題在QAContentView下面的Label中我們用Hopper查看類名后面會用到
屏幕快照 2018-01-17 下午10.40.50.png
我們依照同樣的方法也可以找到選項的view存捺。我們只需要取出這些view就能獲取我們想得到的信息槐沼。

編寫

先說說思路通過觀察界面
屏幕快照 2018-01-17 下午9.18.05.png

我發(fā)現(xiàn)一開始QuestionView就在界面上的只是alpha為0然后縮小了
屏幕快照 2018-01-17 下午9.18.42.png
所以我打算監(jiān)聽alpha值的變化當值為1的時候,這個時候各個view中肯定是有值也就能拿到題目和選項了(別問我為什么不用其它方法捌治,試了很多種方法最后被迫使用這種)
接下來:
CHDeclareClass(_TtC10LiveTrivia18LiveViewController)
CHOptimizedMethod(0, self,void,_TtC10LiveTrivia18LiveViewController,viewDidLoad){
    CHSuper(0, _TtC10LiveTrivia18LiveViewController,viewDidLoad);
    UIWindow *win = [UIApplication sharedApplication].keyWindow;
    UIView *view = CHIvar(self, _view, __strong UIView *);
    CGFloat offsetY = 80;
    UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, CGRectGetHeight(view.frame)/2 + offsetY, CGRectGetWidth(view.frame), CGRectGetHeight(view.frame)/2 - offsetY)];
    web.layer.cornerRadius = 4;
    web.layer.masksToBounds = YES;
    [win addSubview:web];
    objc_setAssociatedObject(self, @"searchWeb", web, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    
    UIButton *moveWeb = [UIButton buttonWithType:UIButtonTypeSystem];
    [moveWeb setTitle:@"Move" forState:UIControlStateNormal];
    [moveWeb addTarget:self action:@selector(moveWebAction:) forControlEvents:UIControlEventTouchUpInside];
    [moveWeb setFrame:CGRectMake(0, 0, CGRectGetWidth(web.frame), 45)];
    moveWeb.backgroundColor = [UIColor whiteColor];
    [web addSubview:moveWeb];
    
    NSLog(@"%@",view.subviews[1].subviews[1]);
    
    UIView *questionView = view.subviews[1].subviews[1];
    [questionView addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:nil];
    
    UILabel *qaLabel = questionView.subviews[3].subviews.firstObject;
    UIButton *option1 = questionView.subviews[5].subviews[0];
    UIButton *option2 = questionView.subviews[5].subviews[1];
    UIButton *option3 = questionView.subviews[5].subviews[2];
    
    objc_setAssociatedObject(self, @"qaLabel", qaLabel, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    objc_setAssociatedObject(self, @"opation1", option1, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    objc_setAssociatedObject(self, @"opation2", option2, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    objc_setAssociatedObject(self, @"opation3", option3, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
 NSLog(@"%@--%@---%@---%@",qaLabel,option1,option2,option3);
}

先添加到webView到window上,然后關(guān)聯(lián)對象到LiveViewController上,留著后面用,加上button是用來控制webView的frame,下面的qaLabel是存放問題的,三個optionButton分別是三個選項岗钩。同樣我們關(guān)聯(lián)到controller上,我們還要監(jiān)聽questionView的alpha值的變化。
alpha值改變我們獲取問題和選項去搜索

CHOptimizedMethod(4, self,void,_TtC10LiveTrivia18LiveViewController,observeValueForKeyPath,NSString *,keyPath,ofObject,id,object,change,NSDictionary*,change,context,void *,context){
    NSLog(@"%@,%@",change,keyPath);
    
    if ([change[@"new"] intValue] != 1)    return; 

    NSString *questionStr = nil;
    
    UILabel *qaLabel = objc_getAssociatedObject(self, @"qaLabel");
    UIButton *option1 = objc_getAssociatedObject(self, @"opation1");
    UIButton *option2 = objc_getAssociatedObject(self, @"opation2");
    UIButton *option3 = objc_getAssociatedObject(self, @"opation3");
    
    questionStr = [NSString stringWithFormat:@"%@ %@ %@ %@",qaLabel.text,option1.titleLabel.text,option2.titleLabel.text,option3.titleLabel.text];
    
    NSString *wd = [questionStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.baidu.com/s?wd=%@",wd]];
    UIWebView *web = objc_getAssociatedObject(self, @"searchWeb");
    [web loadRequest:[NSURLRequest requestWithURL:url]];
    NSLog(@"%@",questionStr);
}

最后點擊button的事件我們得添加新的方法

%hook _TtC10LiveTrivia18LiveViewController

%new
- (void)moveWebAction:(UIButton *)btn{
    NSLog(@"%@",btn.superview);
    UIWebView *web = btn.superview;
    CGFloat top = 150;
    CGFloat offsetY = 80;
    if (CGRectGetMinY(web.frame) == 150) {
        [UIView animateWithDuration:.3 animations:^{
            CGRect newFrame = CGRectMake(0, kHeight/2 + offsetY, kWidth, kHeight/2 - offsetY);
            web.frame = newFrame;
        } completion:^(BOOL finished) {
            
        }];
    }else{
        [UIView animateWithDuration:.3 animations:^{
            CGRect newFrame = CGRectMake(0, top, kWidth, kHeight - top);
            web.frame = newFrame;
        } completion:^(BOOL finished) {
            
        }];
    }
}

采用tweak的方式寫的肖油。忘了說試圖class-dump出頭文件的就放棄吧,代碼是OC和Swift混編兼吓,所以.........
代碼地址

最后還是聲明一下,寫這個純屬娛樂,請勿用作商業(yè)用途,否則后果自負森枪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末视搏,一起剝皮案震驚了整個濱河市审孽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浑娜,老刑警劉巖佑力,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筋遭,居然都是意外死亡打颤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門漓滔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來编饺,“玉大人,你說我怎么就攤上這事响驴》蠢撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵踏施,是天一觀的道長石蔗。 經(jīng)常有香客問我,道長畅形,這世上最難降的妖魔是什么养距? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮日熬,結(jié)果婚禮上棍厌,老公的妹妹穿的比我還像新娘。我一直安慰自己竖席,他們只是感情好耘纱,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著毕荐,像睡著了一般束析。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憎亚,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天员寇,我揣著相機與錄音,去河邊找鬼第美。 笑死蝶锋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的什往。 我是一名探鬼主播扳缕,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躯舔?” 一聲冷哼從身側(cè)響起驴剔,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庸毫,沒想到半個月后仔拟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡飒赃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年利花,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片载佳。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡炒事,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔫慧,到底是詐尸還是另有隱情挠乳,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布姑躲,位于F島的核電站睡扬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏黍析。R本人自食惡果不足惜卖怜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阐枣。 院中可真熱鬧马靠,春花似錦、人聲如沸蔼两。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽额划。三九已至妙啃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锁孟,已是汗流浹背彬祖。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留品抽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓甜熔,卻偏偏與公主長得像圆恤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355