国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【iOS逆向與安全】sms短信轉(zhuǎn)發(fā)插件開(kāi)發(fā)

這篇具有很好參考價(jià)值的文章主要介紹了【iOS逆向與安全】sms短信轉(zhuǎn)發(fā)插件開(kāi)發(fā)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

經(jīng)過(guò)之前的分享,相信大家已經(jīng)掌握了用戶級(jí)的插件開(kāi)發(fā)。勤奮好學(xué)的你是否對(duì)系統(tǒng)級(jí)的插件也有著濃厚的性趣,本篇文章將和大家一起學(xué)習(xí)如何分析并編寫(xiě)一款系統(tǒng)級(jí)的插件。


一、目標(biāo)

一步步分析并編寫(xiě)一個(gè)短信自動(dòng)轉(zhuǎn)發(fā)的deb插件

二、工具

  • mac系統(tǒng)
  • 已越獄iOS設(shè)備:脫殼及frida調(diào)試
  • IDA Pro:靜態(tài)分析
  • 測(cè)試設(shè)備:iphone6-ios12.5.5

三、步驟

1、守護(hù)進(jìn)程

? 守護(hù)進(jìn)程(daemon)是一類(lèi)在后臺(tái)運(yùn)行的特殊進(jìn)程,用于執(zhí)行特定的系統(tǒng)任務(wù)。例如:推送服務(wù)、人臉解鎖、iCloud、查找我的iPhone、iMessage等。

相應(yīng)的配置目錄:

  • /Library/LaunchAgents:管理員控制特定用戶的代理

  • /Library/LaunchDaemons:管理員提供的系統(tǒng)級(jí)守護(hù)進(jìn)程(cydia、filza、frida等就在這)

  • /System/Library/LaunchDaemons:iOS提供的默認(rèn)守護(hù)進(jìn)程

本文的目的主要短信,所以關(guān)注的重點(diǎn)在iOS提供的守護(hù)進(jìn)程,常見(jiàn)的進(jìn)程配置文件有:

名稱 描述
com.apple.apsd 推送服務(wù)
com.apple.biometrickitd.pearl 人臉解鎖
com.apple.cloudd iCloud
com.apple.icloud.findmydeviced 查找我的iPhone
com.apple.imagent 即時(shí)消息代理 (iMessage)

更多服務(wù)請(qǐng)參考https://www.theiphonewiki.com/wiki/Services

2、定位關(guān)鍵函數(shù)

在iPhone中使用文件管理工具查看/System/Library/LaunchDaemons/com.apple.imagent文件關(guān)鍵信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>EnvironmentVariables</key>
	<dict>
		<key>NSRunningFromLaunchd</key>
		<string>1</string>
	</dict>
	<key>ProgramArguments</key>
	<array>
		<string>/System/Library/PrivateFrameworks/IMCore.framework/imagent.app/imagent</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

ProgramArguments所對(duì)應(yīng)的路徑,就是該進(jìn)程執(zhí)行的二進(jìn)制文件。執(zhí)行frida-trace -U -m "*[IM* *]" imagent -o a.log后,當(dāng)手機(jī)收到短信后的日志如下:

-[SMSServiceSession smsMessageReceived:0x10524abc0 msgID:0x80000006]
-[SMSServiceSession _processSMSorMMSMessageReceivedWithContext:0x10524abc0 messageID:0x80000006]
+[IMMetricsCollector sharedInstance]
-[IMMetricsCollector trackEvent:0x1d02ab1e8]
-[SMSServiceSession _convertCTMessageToDictionary:0x109a0e510 requiresUpload:0x16f832c2f]
-[IMMetricsCollector _trackEvent:0x1d02ab1e8]
-[SMSServiceSession _fixIncomingDate:0xd13d420d70d597e6]
-[SMSServiceSession shouldFixIncomingDate]
-[SMSServiceSession _myCTPhoneNumber]
+[IMCTSubscriptionUtilities sharedInstance]
-[IMCTSubscriptionUtilities deviceSupportsMultipleSubscriptions]
+[IMCTSubscriptionUtilities sharedInstance]
-[IMCTSubscriptionUtilities deviceSupportsMultipleSubscriptions]
+[IMCTSMSUtilities IMMMSEmailAddressToMatchForPhoneNumber:0x100830240 simID:0x0]
+[IMCTSubscriptionUtilities sharedInstance]
-[IMCTSubscriptionUtilities deviceSupportsMultipleSubscriptions]
-[SMSServiceSession _convertCTMessagePartToDictionary:0x109a28610]
-[SMSServiceSession _shouldUploadToMMCS:0x10524aca0]
-[SMSServiceSession _receivedSMSDictionary:0x10524aca0 requiresUpload:0x0 isBeingReplayed:0x0]
-[SMSServiceSession _processReceivedDictionary:0x10524aca0 storageContext:0x0]
+[IMMessageNotificationTimeManager sharedInstance]
-[IMMessageNotificationTimeManager acquireAssertionToUnsuspendProcess]
+[IMLockdownManager sharedInstance]
-[IMLockdownManager isInternalInstall]
-[IMLockdownManager _calculateInstallType]
-[IMMessageItem initWithSender:0x100890210 time:0x1008831d0 body:0x10083ba80 attributes:0x0 fileTransferGUIDs:0x1007081d0 flags:0x1 error:0x0 guid:0x10524acc0]
-[IMMessageItem initWithSender:0x100890210 time:0x1008831d0 body:0x10083ba80 attributes:0x0 fileTransferGUIDs:0x1007081d0 flags:0x1 error:0x0 guid:0x10524acc0 type:0x0]
-[IMMessageItem initWithSenderInfo:0x10085c330 time:0x1008831d0 timeRead:0x0 timeDelivered:0x0 timePlayed:0x0 subject:0x0 body:0x10083ba80 bodyData:0x0 attributes:0x0 fileTransferGUIDs:0x1007081d0 flags:0x1 guid:0x10524acc0 messageID:0x0 account:0x0 accountID:0x0 service:0x0 handle:0x0 roomName:0x0 unformattedID:0x0 countryCode:0x0 expireState:0x0 balloonBundleID:0x0 payloadData:0x0 expressiveSendStyleID:0x0 timeExpressiveSendPlayed:0x0 bizIntent:0x0 locale:0x0 errorType:0x0 type:0x0]
-[IMItem initWithSenderInfo:0x10085c330 time:0x1008831d0 guid:0x10524acc0 messageID:0x0 account:0x0 accountID:0x0 service:0x0 handle:0x0 roomName:0x0 unformattedID:0x0 countryCode:0x0 type:0x0]
-[IMItem setSenderInfo:0x10085c330]

根據(jù)日志可看出關(guān)鍵函數(shù)-[SMSServiceSession smsMessageReceived:0x10524abc0 msgID:0x80000006], 使用命令frida-trace -U -m "-[SMSServiceSession smsMessageReceived:msgID:]" imagent跟蹤該函數(shù),js代碼如下:

{
  onEnter(log, args, state) {
    log(`-[SMSServiceSession smsMessageReceived:${ObjC.Object(args[2])} msgID:${args[3]}]`);
  },
  onLeave(log, retval, state) {
  }
}

當(dāng)手機(jī)收到短信時(shí),對(duì)應(yīng)日志輸出如下:

-[SMSServiceSession smsMessageReceived:<CTXPCServiceSubscriptionContext 0x10bfd1240 slotID=CTSubscriptionSlotOne, uuid=00000000-0000-0000-0000-000000000001, labelID="90D990CE-3484-4310-9F39-49A66EB80541", label="USER_LABEL_PRIMARY", phoneNumber="+861812186xxxx", userDataPreferred=1, userDefaultVoice=1> msgID:0x80000010]

根據(jù)日志信息可看出,該方法里除了msgID,并沒(méi)有包含我們需要的短信及發(fā)件人相關(guān)信息。那我們繼續(xù)按日志的順序往下看,-[SMSServiceSession _convertCTMessageToDictionary:requiresUpload:] 這函數(shù)看著比較親切。trace該函數(shù)得到日志如下:

-[SMSServiceSession _convertCTMessageToDictionary:<[CTMessageAddress: 1898000xxxx/TYPE=PLMN]
	[Recipients: (
)]
	[Items: (
    "<CTMessagePart: 0x10be7f340>"
)]
	[Raw Headers: (null)]
	[Date: 2023-07-30 14:43:23 +0000]
	[message ID: -2147483630]
	[message Type: 1]
	[service center: (null)]
	[Content-type: (null)]
	[Content-type params: {
}]
	[replace message: 0]
 requiresUpload:0x16edaec2f]
-[SMSServiceSession _convertCTMessageToDictionary:requiresUpload:]={
    co = "+861812186xxxx";
    g = "00ECAC3B-0790-8674-CAD5-58DD07F4DEBA";
    h = 1898000xxxx;
    k =     (
                {
            data = <e58fa6>;
            type = "text/plain";
        }
    );
    l = 0;
    m = sms;
    n = 460;
    re =     (
    );
    sV = 1;
    w = "2023-07-30 14:43:25 +0000";
}}=

從日志可以看出。該方法就是我們要hook方法,收件人:co,發(fā)件人:h,短信內(nèi)容:k

3、編寫(xiě)deb插件

具體的創(chuàng)建流程請(qǐng)參考之前的文章,源碼如下:

#import <Foundation/Foundation.h>
#import "CaptainHook/CaptainHook.h"

@interface SMSServiceSession

@end

@interface IMDService

-(void)loadServiceBundle;
@property (nonatomic,retain,readonly) NSBundle * bundle;

@end

CHDeclareClass(SMSServiceSession); // declare class
CHOptimizedMethod2(self, id, SMSServiceSession, _convertCTMessageToDictionary, NSDictionary *, arg1, requiresUpload, BOOL*, arg2) {
    id result = CHSuper2(SMSServiceSession, _convertCTMessageToDictionary, arg1, requiresUpload, arg2);
    
    @try {
        NSString *from = result[@"h"];
        NSString *to = result[@"co"];
        NSArray *msgList = result[@"k"];
        if (msgList.count > 0) {
            NSData *data = msgList[0][@"data"];
            NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"witwit =from %@=to %@=content %@=",from, to, content);
        } else {
            NSLog(@"witwit =sms為空=");
        }
    } @catch (NSException *exception) {
        NSLog(@"witwit =SMSServiceSession _convertCTMessageToDictionary=err=%@=", exception);

    } @finally {
        
    }
    
    return result;
}

CHDeclareClass(IMDService)
CHOptimizedMethod0(self, void, IMDService, loadServiceBundle) {

    CHSuper0(IMDService, loadServiceBundle);
    NSString *bundleId = [[self bundle] bundleIdentifier];
    NSLog(@"witwit =IMDService loadServiceBundle=%@=", bundleId);
    
    if ([bundleId isEqualToString:@"com.apple.imservice.sms"]) {
        CHLoadLateClass(SMSServiceSession);
        CHHook2(SMSServiceSession, _convertCTMessageToDictionary, requiresUpload);
    }
}


CHConstructor // code block that runs immediately upon load
{
	@autoreleasepool
	{
        NSLog(@"witwit SMSForward load success");

        CHLoadLateClass(IMDService);
        CHHook0(IMDService, loadServiceBundle);
    }
}

info.plist文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Filter</key>
	<dict>
		<key>Bundles</key>
		<array>
			<string>com.apple.imagent</string>
		</array>
	</dict>
</dict>
</plist>

注:插件安裝完成后。請(qǐng)重啟imagent:

launchctl unload /System/Library/LaunchDaemons/com.apple.imagent.plist
launchctl load /System/Library/LaunchDaemons/com.apple.imagent.plist

總結(jié)

本篇文章主要對(duì)短信轉(zhuǎn)發(fā)器的核心方法進(jìn)行了分析及試驗(yàn),拿到短信內(nèi)容后,具體的轉(zhuǎn)發(fā)邏輯請(qǐng)自行實(shí)現(xiàn)。

提示:閱讀此文檔的過(guò)程中遇到任何問(wèn)題,請(qǐng)關(guān)住工眾好【移動(dòng)端Android和iOS開(kāi)發(fā)技術(shù)分享】或+99 君羊【812546729

【iOS逆向與安全】sms短信轉(zhuǎn)發(fā)插件開(kāi)發(fā),ios,安全,cocoa文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692836.html

到了這里,關(guān)于【iOS逆向與安全】sms短信轉(zhuǎn)發(fā)插件開(kāi)發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【iOS逆向與安全】編寫(xiě)一個(gè)使應(yīng)用保持前臺(tái)運(yùn)行的系統(tǒng)插件

    【iOS逆向與安全】編寫(xiě)一個(gè)使應(yīng)用保持前臺(tái)運(yùn)行的系統(tǒng)插件

    iOS越獄為用戶打開(kāi)了無(wú)限的可能性,其中之一是便是開(kāi)發(fā)系統(tǒng)級(jí)插件,為了確保應(yīng)用程序一直保持在前臺(tái),即使在意外情況下也是如此。 本文將向您展示如何輕松編寫(xiě)這樣的插件,讓我們開(kāi)始探索iOS系統(tǒng)插件的世界吧! 學(xué)會(huì)創(chuàng)建功能強(qiáng)大的iOS系統(tǒng)插件。 mac系統(tǒng) frida:動(dòng)態(tài)調(diào)

    2024年02月03日
    瀏覽(21)
  • IOS 短信攔截插件

    IOS 短信攔截插件

    在使? iOS 設(shè)備的時(shí)候, 我們經(jīng)常會(huì)收到 1069 、 1065 開(kāi)頭的垃圾短信, 如果開(kāi)了 iMessage 會(huì)更嚴(yán)重, 各種亂七?糟的垃圾信息會(huì)時(shí)不時(shí)地收到。 從 iOS11 開(kāi)始, ?機(jī)可以?持惡短信攔截插件了. 我們可以通過(guò)該插件添加?些規(guī)則通過(guò)濾這些不需要的信息. 【1】在 Main.storyboard 的主頁(yè)

    2024年04月18日
    瀏覽(20)
  • 【iOS逆向與安全】原生程序與WebView交互

    【iOS逆向與安全】原生程序與WebView交互

    WKWebView 是 iOS 應(yīng)用中強(qiáng)大的組件,但如何在逆向工程中最好地利用它呢?本文將帶您了解在逆向過(guò)程中遇到webview后的相關(guān)操作。這些技術(shù)將讓您能夠修改 WKWebView 行為,讀寫(xiě)關(guān)鍵元素,接口攔截,并揭示更多有趣的可能性。 了解如何在 iOS 逆向工程中處理 WKWebView,包括 元素

    2024年02月02日
    瀏覽(28)
  • 【iOS逆向與安全】好用的一套 TCP 類(lèi)

    ?初始化 ?發(fā)送數(shù)據(jù) 源碼類(lèi) 配置端口

    2024年02月07日
    瀏覽(25)
  • 【iOS逆向與安全】使用ollvm混淆你的源碼

    【iOS逆向與安全】使用ollvm混淆你的源碼

    當(dāng)你在研究別人源碼的時(shí)候,是不是期望著別人代碼沒(méi)有進(jìn)行任何的防護(hù)和混淆。這時(shí)的你,是不是應(yīng)該考慮一下自己代碼的安全.本篇文章將告訴你,如何使用ollvm來(lái)混淆iOS端的代碼【此文為入門(mén)貼,大佬請(qǐng)繞道】。 編譯ollvm工具,并在Xcode中來(lái)混淆你的ipa或動(dòng)態(tài)庫(kù),增加別

    2023年04月19日
    瀏覽(21)
  • 【iOS逆向與安全】越獄檢測(cè)與過(guò)檢測(cè)附ida偽代碼

    首先在網(wǎng)上查找一些檢測(cè)代碼 放入項(xiàng)目運(yùn)行,用 ida 打開(kāi)后 F5 得到下面的 用 frida hook hook?stat hook md5 frida-trace -UF -i \\\"CC_MD5\\\" -f xxxxxxx.xxx.xxxx fishhook 下面是網(wǎng)上找的源碼

    2024年02月03日
    瀏覽(20)
  • uniapp ios原生插件開(kāi)發(fā)之module

    在文章《uniapp ios原生插件開(kāi)發(fā) (framework,cocoapods)》中我們已經(jīng)介紹了Module 類(lèi)型的插件及其創(chuàng)建過(guò)程, 卻沒(méi)有深入的介紹Module類(lèi)型插件開(kāi)發(fā)過(guò)程中所涉及到的技術(shù)點(diǎn)。 本文呢就將重點(diǎn)放在對(duì)這些技術(shù)點(diǎn)的使用上進(jìn)行詳解,算是是對(duì)上篇文章的一個(gè)補(bǔ)充與擴(kuò)展。 在文章開(kāi)始之前

    2024年02月13日
    瀏覽(23)
  • 【利用寶塔WebHook插件、SmsForwarder(短信轉(zhuǎn)發(fā)器)、quicker實(shí)現(xiàn)電腦端自動(dòng)輸入手機(jī)短信驗(yàn)證碼登錄】

    【利用寶塔WebHook插件、SmsForwarder(短信轉(zhuǎn)發(fā)器)、quicker實(shí)現(xiàn)電腦端自動(dòng)輸入手機(jī)短信驗(yàn)證碼登錄】

    最近公司各種系統(tǒng)有一些小改動(dòng),閑置幾分鐘就得重新登錄,然后每次登錄得:打開(kāi)手機(jī)→查看驗(yàn)證碼短信→在電腦上手動(dòng)輸入,實(shí)在是太影響 效率 (心情)。為了更好地 搬磚 (摸魚(yú)),利用一些小工具實(shí)現(xiàn)了手機(jī)驗(yàn)證碼轉(zhuǎn)發(fā)并自動(dòng)輸入。 服務(wù)器設(shè)定weebhook——手機(jī)驗(yàn)證碼

    2024年03月27日
    瀏覽(56)
  • SMS垃圾短信識(shí)別項(xiàng)目

    SMS垃圾短信識(shí)別項(xiàng)目

    隨著數(shù)字通信的快速發(fā)展,垃圾短信成為了一個(gè)普遍而煩人的問(wèn)題。這些不請(qǐng)自來(lái)的消息不僅打擾了我們的日常生活,還可能包含詐騙和欺詐的風(fēng)險(xiǎn)。因此,有效地識(shí)別并過(guò)濾垃圾短信變得至關(guān)重要。 本項(xiàng)目的主要目標(biāo)是開(kāi)發(fā)一個(gè)機(jī)器學(xué)習(xí)模型,能夠自動(dòng)、準(zhǔn)確地區(qū)分垃圾短

    2024年04月15日
    瀏覽(16)
  • SMS--短信服務(wù)

    SMS--短信服務(wù)

    短信服務(wù)(Short Message Service)是阿里云為用戶提供的一種通信服務(wù)的能力。 接下來(lái),我們使用短信驗(yàn)證碼功能來(lái)演示短信服務(wù)的使用。流程如下: 2.1.1 實(shí)名認(rèn)證 https://help.aliyun.com/document_detail/48263.html?spm=a2c4g.11186623.2.25.1f9415ec9MLqK D 2.1.2?開(kāi)通短信服務(wù) ?2.1.3 申請(qǐng)認(rèn)證秘鑰 ?2.1.4

    2024年02月05日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包