一、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注入

iOS越狱工具

class_addMethod办法

  • 使用AddMethod办法,让原始办法能够被调用,不至于因为找不到SEL而溃散

class_replaceMethod办法

  • 使用class_replaceMethod,直接给原始的办法替换IMP

method_setImplementation办法

  • 使用method_setImplementation,直接重新赋值原始的新的IMP