【iOS逆向與安全】sms短信轉發插件與上傳服務器開發

一、目標

一步步分析并編寫一個短信自動轉發的deb插件

二、工具

  • mac系統
  • 已越獄iOS設備:脫殼及frida調試
  • IDA Pro:靜態分析
  • 測試設備:iphone6s-ios14.1.1

三、步驟

1、守護進程

? 守護進程(daemon)是一類在后臺運行的特殊進程,用于執行特定的系統任務。例如:推送服務、人臉解鎖、iCloud、查找我的iPhone、iMessage等。

相應的配置目錄:

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

  • /Library/LaunchDaemons:管理員提供的系統級守護進程(cydia、filza、frida等就在這)

  • /System/Library/LaunchDaemons:iOS提供的默認守護進程

本文的目的主要短信,所以關注的重點在iOS提供的守護進程,常見的進程配置文件有:

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

更多服務請參考https://www.theiphonewiki.com/wiki/Services

2、定位關鍵函數

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

<?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所對應的路徑,就是該進程執行的二進制文件。執行frida-trace -U -m "*[IM* *]" imagent -o a.log后,當手機收到短信后的日志如下:

-[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]

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

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

當手機收到短信時,對應日志輸出如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Midjourney繪圖參數詳解:從基礎到高級的全面指南

引言 Midjourney作為當前最受歡迎的AI繪圖工具之一&#xff0c;其強大的參數系統為用戶提供了豐富的創作可能性。本文將深入解析Midjourney的各項參數&#xff0c;幫助開發者更好地掌握這一工具&#xff0c;提升創作效率和質量。 一、基本參數配置 1. 圖像比例調整 使用--ar…

音頻進階學習十九——逆系統(簡單進行回聲消除)

文章目錄 前言一、可逆系統1.定義2.解卷積3.逆系統恢復原始信號過程4.逆系統與原系統的零極點關系 二、使用逆系統去除回聲獲取原信號的頻譜原系統和逆系統幅頻響應和相頻響應使用逆系統恢復原始信號整體代碼如下 總結 前言 在上一篇音頻進階學習十八——幅頻響應相同系統、全…

vue3 使用sass變量

1. 在<style>中使用scss定義的變量和css變量 1. 在/style/variables.scss文件中定義scss變量 // scss變量 $menuText: #bfcbd9; $menuActiveText: #409eff; $menuBg: #304156; // css變量 :root {--el-menu-active-color: $menuActiveText; // 活動菜單項的文本顏色--el…

gbase8s rss集群通信流程

什么是rss RSS是一種將數據從主服務器復制到備服務器的方法 實例級別的復制 (所有啟用日志記錄功能的數據庫) 基于邏輯日志的復制技術&#xff0c;需要傳輸大量的邏輯日志,數據庫需啟用日志模式 通過網絡持續將數據復制到備節點 如果主服務器發生故障&#xff0c;那么備用服務…

熵與交叉熵詳解

前言 本文隸屬于專欄《機器學習數學通關指南》&#xff0c;該專欄為筆者原創&#xff0c;引用請注明來源&#xff0c;不足和錯誤之處請在評論區幫忙指出&#xff0c;謝謝&#xff01; 本專欄目錄結構和參考文獻請見《機器學習數學通關指南》 ima 知識庫 知識庫廣場搜索&#…

程序化廣告行業(3/89):深度剖析行業知識與數據處理實踐

程序化廣告行業&#xff08;3/89&#xff09;&#xff1a;深度剖析行業知識與數據處理實踐 大家好&#xff01;一直以來&#xff0c;我都希望能和各位技術愛好者一起在學習的道路上共同進步&#xff0c;分享知識、交流經驗。今天&#xff0c;咱們聚焦在程序化廣告這個充滿挑戰…

探索在生成擴散模型中基于RAG增強生成的實現與未來

概述 像 Stable Diffusion、Flux 這樣的生成擴散模型&#xff0c;以及 Hunyuan 等視頻模型&#xff0c;都依賴于在單一、資源密集型的訓練過程中通過固定數據集獲取的知識。任何在訓練之后引入的概念——被稱為 知識截止——除非通過 微調 或外部適應技術&#xff08;如 低秩適…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加列寬調整功能,示例Table14基礎固定表頭示例

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

取反符號~

取反符號 ~ 用于對整數進行按位取反操作。它會將二進制表示中的每一位取反&#xff0c;即 0 變 1&#xff0c;1 變 0。 示例 a 5 # 二進制表示為 0000 0101 b ~a # 按位取反&#xff0c;結果為 1111 1010&#xff08;補碼表示&#xff09; print(b) # 輸出 -6解釋 5 的二…

論文閱讀分享——UMDF(AAAI-24)

概述 題目&#xff1a;A Unified Self-Distillation Framework for Multimodal Sentiment Analysis with Uncertain Missing Modalities 發表&#xff1a;The Thirty-Eighth AAAI Conference on Artificial Intelligence (AAAI-24) 年份&#xff1a;2024 Github&#xff1a;暫…

WBC已形成“東亞-美洲雙中心”格局·棒球1號位

世界棒球經典賽&#xff08;WBC&#xff09;作為全球最高水平的國家隊棒球賽事&#xff0c;參賽隊伍按實力、地域和歷史表現可分為多個“陣營”。以下是基于歷屆賽事&#xff08;截至2023年&#xff09;的陣營劃分及代表性隊伍分析&#xff1a; 第一陣營&#xff1a;傳統豪強&a…

django中路由配置規則的詳細說明

在 Django 中,路由配置是將 URL 映射到視圖函數或類視圖的關鍵步驟,它決定了用戶請求的 URL 會觸發哪個視圖進行處理。以下將詳細介紹 Django 中路由配置的規則、高級使用方法以及多個應用配置的規則。 基本路由配置規則 1. 項目級路由配置 在 Django 項目中,根路由配置文…

【報錯】微信小程序預覽報錯”60001“

1.問題描述 我在微信開發者工具寫小程序時&#xff0c;使用http://localhost:8080是可以請求成功的&#xff0c;數據全都可以無報錯&#xff0c;但是點擊【預覽】&#xff0c;用手機掃描二維碼瀏覽時&#xff0c;發現前端圖片無返回且報錯60001&#xff08;打開開發者模式查看日…

柵格裁剪(Python)

在地理數據處理中&#xff0c;矢量裁剪柵格是一個非常重要的操作&#xff0c;它可以幫助我們提取感興趣的區域并獲得更精確的分析結果。其重要性包括&#xff1a; 區域限定&#xff1a;地球科學研究通常需要關注特定的地理區域。通過矢量裁剪柵格&#xff0c;我們可以將柵格數…

【無人機路徑規劃】基于麻雀搜索算法(SSA)的無人機路徑規劃(Matlab)

效果一覽 代碼獲取私信博主基于麻雀搜索算法&#xff08;SSA&#xff09;的無人機路徑規劃&#xff08;Matlab&#xff09; 一、算法背景與核心思想 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一種受麻雀群體覓食行為啟發的元啟發式算法&#xff0…

MySQL數據庫安裝及基礎用法

安裝數據庫 第一步&#xff1a;下載并解壓mysql-8.4.3-winx64文件夾 鏈接: https://pan.baidu.com/s/1lD6XNNSMhPF29I2_HBAvXw?pwd8888 提取碼: 8888 第二步&#xff1a;打開文件中的my.ini文件 [mysqld]# 設置3306端口port3306# 自定義設置mysql的安裝目錄&#xff0c;即解…

軟件工程:軟件開發之需求分析

物有本末&#xff0c;事有終始。知所先后&#xff0c;則近道矣。對軟件開發而言&#xff0c;軟件需求乃重中之重。必先之事重千鈞&#xff0c;不可或缺如日辰。 汽車行業由于有方法論和各種標準約束&#xff0c;對軟件開發有嚴苛的要求。ASPICE指導如何審核軟件開發&#xff0…

正則表達式,idea,插件anyrule

????package lx;import java.util.regex.Pattern;public class lxx {public static void main(String[] args) {//正則表達式//寫一個電話號碼的正則表達式String regex "1[3-9]\\d{9}";//第一個數字是1&#xff0c;第二個數字是3-9&#xff0c;后面跟著9個數字…

RISC-V醫療芯片工程師復合型轉型的路徑與策略

從RISC-V到醫療芯片:工程師復合型轉型的路徑與策略 一、引言 1.1 研究背景 在科技快速發展的當下,芯片技術已然成為推動各行業進步的核心驅動力之一。其中,RISC-V 架構作為芯片領域的新興力量,正以其獨特的優勢迅速崛起,對整個芯片產業的格局產生著深遠影響。RISC-V 架…

【設計模式】掌握建造者模式:如何優雅地解決復雜對象創建難題?

概述 將一個復雜對象的構建與表示分離&#xff0c;使得同樣的構建過程可以創建不同的表示。 分離了部件的構造(由Builder來負責)和裝配(由Director負責)。 從而可以構造出復雜的對象。這個模式適用于&#xff1a;某個對象的構建過程復雜的情況。 由于實現了構建和裝配的解耦。…