SMSNinja源碼研究---短信監(jiān)聽

/var/mobile/Library/SMS 中sms.db存放了短信數(shù)據(jù) 未加密 可解讀

通訊錄存放位置不正確

為/var/mobile/Library/CallHistoryDB

8.4中 ?無Safari/Histroy.plist


http://www.cnblogs.com/OtionSky/archive/2011/11/10/iPhone_TelephoneCenter.html這篇博客詳細講述了IOS5追迟、6上怎么樣短信電話攔截

先感謝snankky的開源精神 分享了SMSNinja這個著名開源插件的源碼?SMSNinja-master.zip

這個源碼對于后續(xù)的關(guān)于短信來電的研發(fā)提供非常寶貴的材料

主要實現(xiàn)了 短信的監(jiān)聽 iMessage的監(jiān)聽 下面主要介紹實現(xiàn)過程以及踩過的坑

實現(xiàn)代碼如下:

%group?SNIncomingMessageHook_5_6_7_8

%hook?IMDServiceSession

-?(void)didReceiveMessage:(id)message?forChat:(NSString?*)arg2?style:(unsigned?char)arg3?//?incoming?iMessage_5/message_6_7_8

{

%orig;

NSLog(@"message?coming:");

message?=?(IMMessageItem?*)message;

NSString?*text?=?[[message?body]?string];

NSLog(@"%@",text);

}

%end

%end

%hook?IMDaemon

-?(void)_loadServices

{

%orig;

NSLog(@"zenmeyang:ffff");

%init(SNIncomingMessageHook_5_6_7_8);

}

%end

%ctor

{

%init

}

這里面關(guān)于logos的語法問題就不介紹了 總之也很頭痛

對于IOS5侮繁,IOS6來說 添加CTTelephonyCenterAddObserver 的監(jiān)控 是有效監(jiān)聽短信來電的有效方法 上面的那個博客說的很詳細了

但是在IOS7,IOS8之后 蘋果改變了這種機制

這兩種系統(tǒng)中 IOS后臺維護了一個后臺進程 這個后臺進程是:com.apple.imagent


這個不用白費心機的打印出來


打印結(jié)果如圖


根本沒有這個進程

原來蘋果在編譯階段 并未加載這個進程 這個進程是在蘋果實際運行的時候加載進去的 這樣打印當然看不到

就是這個進程 主宰著IOS中SMS和iMessage的短信收發(fā)崖疤,這個進程從系統(tǒng)啟動到結(jié)束 一直存在后臺運行并始終有權(quán)限

所以很簡單移层,無論你怎么對可疑函數(shù)進行hook聂抢,根本就沒有用 因為這個函數(shù)是在 這個后臺進程 稱之為imagent進程 中加載的 你無法獲取到這個imagent 就無法hook這個進程

在IOS7中 這個進程啟動函數(shù)是:IMDamenCore這個私有框架里?IMDService類的-?(void)loadServiceBundle 函數(shù) 即 只有在這個函數(shù)里加載可疑函數(shù)才有用 目標函數(shù)是:_processReceivedMessage

在IOS8中 這個進程的啟動函數(shù)是:IMDaemon 這個我根本查不到它是哪個框架哪個類里的_loadServices是進程加載函數(shù) 目標函數(shù)是:-?(void)didReceiveMessage:(id)message?forChat:(NSString?*)arg2?style:(unsigned?char)arg3 只有在這個函數(shù)里面加載才有用

接下來的才是大坑蒂窒,因為imagent這個進程僅僅在系統(tǒng)啟動的時候才啟動一次 所以每次更新完tweak后 必須要重新啟動一次imagent這個進程 否則tweak根本不會生效 可以通過reboot來重啟imagent進程

這里聲明一下 重啟reboot和重啟spring board是兩個事件 重啟reboot則重啟所有的service膀估,而重啟spring board則僅僅重啟自己

相信也一定有辦法重啟imagent進程 而不用每次都重啟reboot

結(jié)果如圖


大功告成

theos中有個很大的bug 即是只要tweak中 不存在logos的基本的語法錯誤 不存在未知類的鏈接錯誤 就不會報錯 就是說 假設(shè)我在tweak里面hook一個根本沒有的類 根本沒有的函數(shù) theos也不會報錯

諸如上述 在IOS9.3中?IMDaemonCore框架雖然有 但是屬于私有框架 如果不對其進行添加幔亥,那么?didReceiveMessage 這個函數(shù)根本就不會被hook,因為這個函數(shù)這個類 根本就不能被識別

現(xiàn)在在IOS9.3中 添加PRIVATE_FRAMEWORKS 發(fā)現(xiàn) IOS9.3的framework文件路徑有誤

經(jīng)查閱發(fā)現(xiàn) 這個沒有辦法theos目前的私有框架引用 就是不支持IOS9.3

所以要把xcode降級到9.2

theos無法debug開發(fā) 是它最大的弊端察纯,只好在里面不停的輸出log了

比如

這里的abcd類里的 woke函數(shù)根本不存在

編譯器也不報錯

也許 這就是短信hook為什么不通的原因

但是 我可以很明確的缺點 在添加了?IMDaemonCore之后 確實存在著IMDServiceSession這個類 也確實存在這個函數(shù) 為什么SMSNijina能拿到log帕棉,能到這個函數(shù) 我卻不能····

后來發(fā)現(xiàn)不少這個原因····

此為上述監(jiān)聽短信行為demo的編譯文件

可以看到降級到9.2之后 可以成功添加私有框架

最后貼出監(jiān)聽發(fā)短信和打電話的行為代碼

%hook UIApplication

-(BOOL)openURL:(id)arg1

{

%log;

BOOL returnValue = %orig;

NSString*actionName = @"";

NSString *actualString = [arg1 absoluteString];

if ([actualString hasPrefix:@"sms"]) actionName = @"發(fā)短信";

else if ([actualString hasPrefix:@"tel"]) actionName = @"打電話";

else actionName = @"木知";

NSProcessInfo *info = [NSProcessInfo processInfo];

NSLog(@"I konw what you are doing:\n行為:%@\n參數(shù):%@\n進程名:%@\n進程編號:%d\napp bundle id:%@\n當前線程:%@\n當前時間:%@",actionName,arg1,info.processName,info.processIdentifier,[[NSBundle mainBundle]bundleIdentifier],[NSThread currentThread],[NSDate date]);

return returnValue;

}

%end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饼记,隨后出現(xiàn)的幾起案子香伴,更是在濱河造成了極大的恐慌,老刑警劉巖具则,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件即纲,死亡現(xiàn)場離奇詭異,居然都是意外死亡乡洼,警方通過查閱死者的電腦和手機崇裁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門匕坯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來束昵,“玉大人,你說我怎么就攤上這事葛峻∏鲁” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵术奖,是天一觀的道長礁遵。 經(jīng)常有香客問我,道長采记,這世上最難降的妖魔是什么佣耐? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮唧龄,結(jié)果婚禮上兼砖,老公的妹妹穿的比我還像新娘。我一直安慰自己既棺,他們只是感情好讽挟,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丸冕,像睡著了一般耽梅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胖烛,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天眼姐,我揣著相機與錄音诅迷,去河邊找鬼。 笑死众旗,一個胖子當著我的面吹牛竟贯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逝钥,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屑那,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了艘款?” 一聲冷哼從身側(cè)響起持际,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哗咆,沒想到半個月后蜘欲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晌柬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年姥份,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片年碘。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡澈歉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屿衅,到底是詐尸還是另有隱情埃难,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布涤久,位于F島的核電站涡尘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏响迂。R本人自食惡果不足惜考抄,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔗彤。 院中可真熱鬧川梅,春花似錦、人聲如沸幕与。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啦鸣。三九已至潮饱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诫给,已是汗流浹背香拉。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工啦扬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凫碌。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓扑毡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盛险。 傳聞我的和親對象是個殘疾皇子瞄摊,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容