作过游戏外挂的人都知道,代码注入一般是经过这工具去注入的进行测试的【固然还有劫持注入等等其余注入方式】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"
成功了 嘿嘿~~~ ![]()
代码晚点我会上传到百度云,嘿嘿~