作過遊戲外掛的人都知道,代碼注入一般是經過這工具去注入的進行測試的【固然還有劫持注入等等其餘注入方式】git
一般這種測試注入的方式有兩種github
因此咱們iOS逆向開發的時候,就是經過注入動態庫,來實現代碼的注入的windows
AssignApp.sh
,並放到項目中AssignApp.sh
的路徑寫上,運行的時候Xcode就會自動幫咱們重簽名![]()
這樣就把Framework注入到項目中了 ![]()
然而發現並沒注入成功,緣由是因爲微信中沒有用到咱們的Framework,因此動態庫不會被加載。 ![]()
這時咱們須要去修改macho的文件屬性,讓微信會去加載咱們的Frameworkbash
咱們會使用到一個新的工具:yololib 這個工具的使用十分簡單 進入.app,查看咱們PFFrameWork的位置 微信
進入命令行模式,使用該工具,修改其Macho文件屬性 ![]()
yololib WeChat Frameworks/PFFrameWork.framework/PFFrameWork
而後再從新打包這個APP
在原先腳本的末尾添加上
yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/PFFramework.framework/PFFramework"
這樣咱們的代碼就能夠成功注入進去了app
緣由是: 項目有時候PFFramework.framework
時有時無,致使了項目偶爾奔潰的現象iphone
神奇的是項目clean後build確定能成功,但我仍是花了很多時間把問題定位出來 原來第二次編譯的時候,編譯器有時候會先把PFFramework.framework
放到.app中,而後咱們執行腳本rm -rf "$TARGET_APP_PATH"
,天然而然就把這個庫給刪了。 因此我把rm -rf "$TARGET_APP_PATH"
替換成一下這個函數函數
function rmFilterFramework(){
for element in `ls $1`
do
if test "$element" == "Frameworks" || test "$element" == "*.framewrok"; then
echo $element
else
rm -rf $1"/"$element
fi
done
}
複製代碼
修改後,就不再會出現BUG了工具
與動態庫的注入【Framework】的第一步一致,這裏我就不重複闡述了測試
與動態庫的注入【Framework】的第三步大體相同,惟一不一樣的就是寫入 腳本的yololib不同,只要改爲如下指令便可 yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/libPFLibrary.dylib"
成功了 嘿嘿~~~ ![]()
代碼晚點我會上傳到百度雲,嘿嘿~