TikTok越獄檢測之二 <調試器檢測>

來了,調試器檢測。總結如下,多多指教:

檢測app 是否被附加調試:
原理就是檢測父進程是否 launchd啟動,在OS X和iOS 系統中,用戶環境始于launchd,為用戶態出現的第一個進程,為所有的進程的祖先,launchd 的進程PID = 1,
正常情況下,app的啟動都是launchd來啟動的。當app 被調試的時候,PID 的值則變成了調試器的PID,不等于 1

下面是檢測TikTok app 是否被附加調試三種方法,
1.是通過 sysctl函數調用
2.通過getppid 函數調用
3.利用匯編代碼svc 調用
檢測和反檢測都是一目了然的,矛和盾的關系都是平等的。

//非Debug狀態,返回值為1,Debug狀態返回Debugserver進程id
//首先,它檢查父進程 id (ppid) 是否與 /sbin/launchd 相同,后者為 1。不相等則為調試狀態

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

+(pid_t)GetParentPidByProc {

????int?name[4];

????name[0]?=?CTL_KERN;

????name[1]?=?KERN_PROC;

????name[2]?=?KERN_PROC_PID;

????name[3]?=?getpid();

????struct kinfo_proc info;

????size_t info_size?=?sizeof(info);

????info.kp_proc.p_flag?=?0;

????/*查詢成功返回0*/

????int?error?=?sysctl(name, sizeof(name)?/?sizeof(*name), &info, &info_size, NULL,?0);

????if?(error?==?0) {

????????return??info.kp_eproc.e_ppid;

????}

????return?0;

}

//非Debug狀態,返回值為1,Debug狀態返回Debugserver進程id
//首先,它檢查父進程 id (ppid) 是否與 /sbin/launchd 相同,后者為 1。不相等則為調試狀態

1

2

3

4

5

6

7

8

9

10

+(pid_t) GetParentPid{

????bool?bRet?=?false;

????pid_t LAUNCHD_PID?=?1;

?????

????pid_t ppid?=?getppid();

????if?(ppid?==?LAUNCHD_PID) {

????????bRet?=?true;

????}

????return?ppid;

}

//通過svc 匯編代碼來調用,非Debug狀態,返回值為1,Debug狀態返回Debugserver進程id

1

2

3

4

5

6

7

8

9

10

11

12

+(pid_t) GetParentPidBySvc{

????NSInteger ppid?=?0;

????__asm__ volatile(

?????????????????????"mov x16,#39\t\n"

?????????????????????"svc 0x80\t\n"

?????????????????????"mov %0,x0\t\n"

?????????????????????:"=r"(ppid)

?????????????????????:

?????????????????????:

?????????????????????);

????return?(pid_t)ppid;

}

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

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

相關文章

Python模塊、包和異常處理

大家好,在當今軟件開發領域,Python作為一種簡潔、易讀且功能強大的編程語言,被廣泛應用于各種領域。作為一名測試開發工程師,熟練掌握Python的模塊、包和異常處理是提高代碼可維護性和錯誤處理能力的關鍵。本文將和大家一起探討Py…

SAP-MRP和采購申請

1、如果采購申請是手工創建的,跑MRP會不會被覆蓋? 創建一個采購申請18089476,然后運行MRP-MD03,再用MD04查看下 從上圖看,手工創建的采購申請被打上*號,沒有被覆蓋掉。 2、如果采購申請被審批了,會不會被覆蓋掉? 首先創建一個獨立需求MD61 然后庫存消耗掉為0,運行M…

shell實現ssh服務防止暴力破解 —— 筑夢之路

實現原理 對系統登陸日志文件/var/log/secure,進行數據篩選,查找登陸失敗的ip地址,然后將ip加入到黑名單中。 腳本內容 #!/bin/bash# 獲取登陸失敗的ip地址failedcat /var/log/secure|grep "Failed"|awk {print $11}|sort|uniq …

普源精電收購耐數電子——用“鈔能力”拿下“量子”?

「量子市界」聚焦量子前沿,揭秘市場動態┃2024年4月30日,普源精電新增“量子科技”概念。 似乎一夜之間,新增“量子科技”概念的上市企業如雨后春筍般登場——普源精電就是其一。普源精電本就持有耐數電子32.26%股權,于4月2日發布…

c4d云渲染是工程文件會暴露嗎?

在數字創意產業飛速發展的今天,C4D云渲染因其高效便捷而備受歡迎。然而,隨著技術應用的深入,人們開始關注一個核心問題:在享受云渲染帶來的便利的同時,C4D工程文件安全嗎?是否會有暴露的風險?下…

【如何讓論文中摘要后面的內容不出現在目錄中】

首先選擇摘要二字,設置為一級標題,然后選擇摘要后面的內容設置為正文樣式,再選擇這一部分看一下是不是都是正文大綱級別,如果是那就可以了。 具體流程如下 1、選擇摘要二字,設置為一級標題樣式 2、選擇摘要后面的文…

x264 碼率控制原理:rate_estimate_qscale 函數

rate_estimate_qscale 函數 原理 函數功能:根據目前使用的實際比特數更新一幀的qscale;是一個復雜的決策過程,需要考慮多種因素,如幀類型、編碼的復雜度、目標比特率、緩沖區大小等,以確保視頻質量和文件大小之間的平衡。函數參數分析:x264_t *h :編碼器上下文信息結構…

擴散模型學習1

DDPM 總體訓練原理 https://www.bilibili.com/video/BV1nB4y1h7CN/?spm_id_from333.337.search-card.all.click&vd_sourcef745c116402814185ab0e8636c993d8f 講得很好:每次都是輸入t和noise-x的圖像,預測noise之后得到和加入的noise比較&#xff1b…

LLM實戰:當網頁爬蟲集成gpt3.5

1. 背景 最近本qiang~關注了一個開源項目Scrapegraph-ai,是關于網頁爬蟲結合LLM的項目,所以想一探究竟,畢竟當下及未來,LLM終將替代以往的方方面面。 這篇文章主要介紹下該項目,并基于此項目實現一個demo頁面&#x…

Java并發: 鎖和同步

在Java并發: 面臨的挑戰那一篇中我們提到鎖和同步是實現并發安全(可見性/原子性)的方法之一。這一章我們來講講Java中的鎖和同步的各種工具,包括: LockSupportAbstractQueuedSynchronizerJava內置的鎖實現 1. LockSupport LockSupport是基于Unsafe的park/unpark實…

智能禁區監控:計算機視覺在人員禁區闖入檢測中的應用

基于視覺分析的人員禁區闖入行為檢測算法主要依賴于計算機視覺技術和深度學習算法。這些技術結合高性能的攝像頭和圖像處理硬件,實現了對監控區域內人員行為的自動識別和分析。具體來說,這種檢測算法利用攝像頭捕捉的視頻數據,通過深度學習模…

Kubernetes 應用滾動更新

Kubernetes 應用版本號 在 Kubernetes 里,版本更新使用的不是 API 對象,而是兩個命令:kubectl apply 和 kubectl rollout,當然它們也要搭配部署應用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里應用都是以 …

nssctf——web

[SWPUCTF 2021 新生賽]gift_F12 1.打開環境后,這里說要900多天會有flag,這是不可能的 2.f12查看源碼,然后在html中查找flag (在最上方的欄目中,或者按ctrlf) [SWPUCTF 2021 新生賽]jicao 1.打開環境是一段…

Fragment問題:java.lang.IllegalStateException

錯誤提示: Process: com.example.accountapp, PID: 3987 java.lang.IllegalStateException: Could not execute method for android:onClick …

Vue速成學習筆記

這兩天速成了一下Vue,在這里記錄一下相關的筆記,之后有時間詳細學Vue的時候再來回顧一下! 一、Vue理解 1、Vue的核心特征:雙向綁定。 在網頁中,存在視圖和數據。在Vue之前,需要使用JavaScript編寫復雜的邏…

web前端面試題

web前端面試題 1、前端如何實現優化性能 (1)減少網絡時間 ①使用DNS緩存技術 ? ②減少需要傳輸的文件尺寸 ? ③加快文件傳輸速度 (2)減少發送的請求數量 ①利用瀏覽器緩存 ? ②使用合并的圖片文件 (3)提高瀏覽器下載的并發度 ①JS文件放在HTML文檔最后 ? ②使用多個域名 (…

音視頻及H264/H256編碼相關原理

一、音視頻封裝格式原理: 我們播放的視頻文件一般都是用一種封裝格式封裝起來的,封裝格式的作用是什么呢?一般視頻文件里不光有視頻,還有音頻,封裝格式的作用就是把視頻和音頻打包起來。 所以我們先要解封裝格式&#…

谷歌上架,個人號比企業號好上?“14+20”封測如何解決,你知道了嗎

在Google Play上架應用,對開發者而言,既是挑戰也是機遇。隨著谷歌政策的不斷更新,特別是要求2023年11月13日后注冊的個人開發者賬號在發布正式版應用前,必須經過20人連續14天的封閉測試。 這一政策的改變使得許多開發者開始考慮使…

什么是物聯網通信網關?-天拓四方

在信息化、智能化的時代,物聯網技術的廣泛應用正在逐漸改變我們的生活方式。物聯網通過各種傳感器和設備,將現實世界與數字世界緊密相連,從而實現智能化、自動化的生活和工作方式。作為物聯網生態系統中的重要組成部分,物聯網通信…

【數據結構】堆(Heep)

???專欄:數據結構 🧑?🎓個人主頁:SWsunlight 目錄 一、堆: 定義: 性質: 大、小根堆: 二、實現堆(完全二叉樹): 前言: …