一、shell预习
shell预习代码:
vi 123.sh
i 进入修正
mkdir shell
cd shell
touch 123.txt
:x 保存退出 :wq 也行
//履行 sh文件
bash 123.sh
zsh 123.sh
source 123.sh //会进入文件夹
./123.sh //会报错 没有权限
chmod +x 123.sh //按权限 履行
二、Framwork注入
一般修正原始的程序,是使用代码注入的办法,注入代码就会选择使用FrameWork或许Dylib等三方库的办法注入。
Framwork注入
-
经过Xcode新建Framwork,将库安装进入APP包
-
经过
yololib注入Framwork库途径
。指令:$yololib(空格)MachO文件途径(空格)库途径 -
所有的Framwork加载都是由DYLD加载进入内存被履行的
-
注入成功的库途径会写入到MachO文件的
LC_LOAD_DYLIB
字段中
三、yololib东西
代码:
//! Project version number for Hook.
FOUNDATION_EXPORT double HookVersionNumber;
//! Project version string for Hook.
FOUNDATION_EXPORT const unsigned char HookVersionString[];
+(void)load
{
NSLog(@"\n\n\n\n\n\n\n\n");
}
Dylib注入
-
经过Xcode新建Dylib库(注意:Dylib属于MacOS所以需求修正属性)
-
增加Target依赖,让Xcode将自界说
Dylib
文件打包进入APP包。 -
使用
yololib
进行注入。
在/usr/local/bin 下配置yololib东西和环境
需求使用yololib
东西进行调用注入 :
在shell脚本中加入:
yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/libHankHook.dylib"
把libHankHook.dylib 途径写入到MachO文件的LC_LOAD_DYLIB
字段中,就完成代码注入。
四、dylib注入
class_addMethod办法
:
- 使用AddMethod办法,让原始办法能够被调用,不至于因为找不到SEL而溃散
class_replaceMethod办法
:
- 使用class_replaceMethod,直接给原始的办法替换IMP
method_setImplementation办法
:
- 使用method_setImplementation,直接重新赋值原始的新的IMP