日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios重签名shell脚本_iOS逆向——shell重签名及代码注入

發布時間:2024/7/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios重签名shell脚本_iOS逆向——shell重签名及代码注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

感謝hank老師

上一章我們講了應用簽名原理和重簽名原理,不再贅述,沒有看過的同學可以點這里——

這章概述shell腳本重簽名。可能有的同學認為有很多工具都能快速的幫助我們重簽名實現需求,但我更希望在這里與大家溝通原理性的東西,而不是簡單的使用第三方工具來滿足我們。

shell腳本

什么是shell腳本?

shell是一種特殊的交互式工具,它為用戶提供了啟動程序、管理文件系統中文件以及運行在系統上的進程的途徑。Shell一般是指命令行工具。它允許你輸入文本命令,然后解釋命令,并在內核中執行。

Shell腳本,也就是用各類命令預先放入到一個文本文件中,方便一次性執行的一個腳本文件。

腳本執行相關命令

$source FileName 復制代碼

意思:在當前shell環境中讀取并執行FileName中的命令

特點:? ? ? ???命令可以強行讓一個腳本去立即影響當前的環境(一般用于加載配置文件)。

?命令會強制執行腳本中的全部命令,而忽略文件的權限。

$bash FileName 、 $zsh FileName復制代碼

意思:重新建立一個子shell,在子shell中執行腳本里面的句子。

$./FileName復制代碼

意思:讀取并執行文件中的命令。但有一個前提,腳本文件需要有可執行權限。

下面來點干貨,腳本重簽名的源碼。網上搜也有很多,大家開心就好。不知道為什么,我寫在bash后,代碼格式總亂,大家可以找到其他文獻源碼,這里我貼圖

如果你想要簡單的了解shell,參考Andy哥的文獻。共三篇文章,簡明粗暴易懂。

用戶、組、權限

Unix和Linux都是多用戶、多任務的系統,所以這樣的系統里面就擁有了用戶、組的概念。那么同樣文件的權限也就有相應的所屬用戶和所屬組了。

Mac文件屬性

[? ? ?權限? ? ?]

[連接][所有者]

[所屬組]? ? ? ?[文件大小][最后修改日期][文件名稱]

第一位:文件類型

常見:[d]目錄(dictionary)

[-]文件

后九位,文件權限,每三位一組,第一組:文件所有者的權限 rwx

第二組:這一組其他用戶的權限 r-x

第三組:非本組用戶的權限 r-x

文件權限

[r]:read,讀

[w]:write,寫

[x]:execute,執行

注意:這三組權限的位置不會變,依次是rwx,出現[-]對應位置,代表沒有此權限

改變權限:chmod

文件權限的改變使用chmod命令。設置方法有兩種:數字類型改變

符號類型改變。

由于文件權限分為三種身份:[user][group][other] 三個權限:[read]

[write]

[execute]

數字類型:

各個權限數字對照:r:4

w:2 x:1

如果一個文件權限為 [–rwxr-xr-x ]

User :

4+2+1 = 7

Group: 4+0+1

=

5

Other: 4+0+1

=

5

命令:chmod

755

文件名

符號類型:

chmod [u、g、o、a] [+(加入)、-(除去)、=(設置)]

[r、w、x]

文件名稱

[a]代表all,[a]=[u+g+o],在我們加入權限的時候,沒有添加身份,默認為[a]

代碼注入

一般修改原始的程序,是利用代碼注入的方式,注入代碼就會選擇利用FrameWork或者Dylib等三方庫的方式注入。

在這里我們先簡單介紹一下DYLD,Dynamical Load,又叫動態鏈接器,存在于操作系統中。在手機開機的時候,該程序就默認啟動。DYLD在手機內存中執行,CPU調度DYLD,DYLD就會把加載的應用(MacO)加載到內存中去。當DYLD讀取MacO文件的時候,首先就會讀取Load Commands字段,該字段包含了Foundation \UIKit等庫,例如我們在調用NSLog函數,一定會到Foundation這個庫中調用,但是誰知道Foundation這個庫的真實地址,DYLD。如果依賴的庫不再內存當中,所以就加載該庫。

所以,我們要在Load Commands中插入一個我們自己寫的Framework。

注入步驟

用MacOview查詢ipa文件夾下包內容的二進制文件,查看Load Commands。

Framwork注入

?? 通過Xcode新建Framwork,將庫安裝進入APP包

?? 通過yololib注入Framwork庫路徑。命令:$yololib(空格)MachO文件路徑(空格)庫? ? ? ? ? ? ?路徑

yololib WeChat Frameworks/xxxxHook.framework/xxxxHook //庫加載到MachO中Load Command下的LC_LOAD_DYLIB中復制代碼

?? 所有的Framwork加載都是由DYLD加載進入內存被執行的

?? 注入成功的庫路徑會寫入到MachO文件的LC_LOAD_DYLIB字段中

然后將成功注入后的二進制文件替換掉前文提到的TARGET_IPA_PATH下的二進制文件。

保留Payload文件夾,壓縮Payload。

zip -ry WeChat.ipa Payload復制代碼

最后生成的ipa,用重簽的方式可以安裝到手機。Dylib注入

?? 通過Xcode新建Dylib庫(注意:Dylib屬于MacOS所以需要修改屬性)

?? 添加Target依賴,讓Xcode將自定義Dylib文件打包進入APP包。

?? 利用yololib進行注入。

兩種方式都可以實現代碼的注入。如果我哪里寫的不對、不清楚,還希望你能提出來,我們共同探討進步,如果你喜歡此文章,就動一動小手點個贊吧。

想要yololib和MachOview的安裝文件,可以留言。

總結

以上是生活随笔為你收集整理的ios重签名shell脚本_iOS逆向——shell重签名及代码注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。