How to cheat jb detector and detect cheating

這個月的cocoaheads講了一個比較冷僻的題目,這個題目如果平常沒有在做jb防範應該是不會注意到的。我也是剛好前陣子有這個需求,才去找了一下資料,看了一下stackoverflow,發現大部分都是檢查檔案架構,還有url schema呼叫看看有沒有cydia。然後發現xCon這個tweak,看了幾篇文章後,才有後面這一連串檢查,這一串其實是個冤冤相報何時了的概念。

會寫這一篇的出發點,是在第二頁,列出一些app沒有做保護時會洩漏的資訊還有常常使用的攻擊手法。因為我平常都用這些方法在分析競業app,才會想要找一下防範方法。

在第二頁稍微寫的工具還有他們會造成的什麼影響,我故意沒有細講,我想如果想踏入iOS security研究的人,第二頁那邊的工具可以去玩玩看,留給有興趣的人去發掘,算是個出發點,然後有什麼心得可以加我好友一起來討論XD。想直接看答案的人可參考我之前寫的一篇 iOS app security




reference有這幾篇:
IOS Application Security Part 24 – Jailbreak Detection and EvasionxCon
xCon-Issues
iOS安全攻防(二十):越狱检测的攻与防


影片也出來了,這幾個月都在比快的



問題

在QA的時候田單單有問:我寫的那個check method如果被hook了,那不就白保護了。
我當時的回答是可以寫成block,讓他檢查不只做一次。回家的路上想想這樣還是不夠完整,
其實還可以再做三階段的加強:
  • 第一個是寫成inline block,或者是寫成c的function 宣告,這個目的是為了防止class dump,讓他看不到method name,也就不知道要怎麼hook
  • 第二個是把method name變得很長很長,我在sample裡面是取叫isJailBreakCheck,反正objC的method name都是在比長的,寫成isJailBreakCheckIfYouWantToProtectYourApp_ImSwiftSeniorEngineer也是可以,hook的時候打錯一個字就hook不到了,連我自己也覺得這蠻北爛的。
  • 第三個是回傳的比對值千萬不要用boolean,一定要用object,先定義好兩個object代表有jb跟沒有jb,最簡單的作法是用string。複雜一點的話可以再加一些加密解密的檢查。
在看這些文章的時候常常會想這些寫security的人是不是神經病,哪來這麼多攻擊跟偵測方法可以一層層的疊上去,然後文章看多了自己似乎也變得疑心病很重。真是沒事不要做security。

其他收穫

在晚上活動一開始的時候,主持人(David)有讓大家分成幾組自我介紹。每次去聚會都會看到很多熟面孔,但每次也都會一些第一次來的人。在我那組自我介紹的時候,有兩個是學生或剛畢業的新鮮人,其中一個說是老師介紹他來的,所以我們問他

「你老師有來過喔?」
「對啊」

眾人大驚。

從來都不知道有學校老師來過,這實在有點可惜。
沒有辦法促進產學交流,這更可惜。
我跟幾個朋友在聚會結束之後都會去吃宵夜聊天,如果有新朋友想加入的,不要害怕,伸出友誼之手就對了,我們可以告訴你很多工程師升級經驗談。

像這個月是一群人在國父紀念館旁邊的公園看OOBEsuperbil玩ingress打變電箱。



Apple Design Award app簡單分析

透過reveal.app可以很簡單的看到app的view hierachy,跟頁面使用了哪些class item,就這次Apple Design Award得獎作品簡單分析一下,扣掉幾個遊戲我沒什麼興趣以外,我覺得幾個有象徵意義的如下:

Sky Guide
原本以為很炫,打開後發現沒什麼好分析的,主要UI是用OpenGL實作看不到,除此之外只剩幾顆button不值一提。



Yahoo News Digest

身為連續兩年得獎的公司,yahoo 在news digest上面把視差滾動又玩得更上一層樓。
有很多去年得獎作品Yahoo Weather的影子。



Storehouse
滿滿的客製化UI compoment,細節一大推,我心目中的最大獎就是他





iOS8 beta 降級成iOS7步驟

為了測試現在寫的app在iOS8會有什麼問題,把自己的手機升成iOS8,把一些發現的問題都寫完了。大概有用到螢幕旋轉或判斷keyboard size的都會有些問題出來,還遇到AFNetworking在iOS8的會crash的問題。最難過的是一些常用的app都有大大小小的災情:像是skype不能傳訊息,Line進對話視窗會直接crash。

反正該修的都修完了,也該降回來了。以下是降級步驟:


  1. 把iPhone/iPad關機
  2. 打開iTune,連接iPhone/iPad
  3.  按住Home鍵,直到出現連接iTune的畫面為止。
  4. 然後會進入回覆模式,選「回覆與更新」
  5. 開始下載最新版的ipsw,如果你已經有的話可以按住option再按「回覆與更新」
等他跑完一直按下一步就好了。