ios开发

iOS代码注入&Method Swizzle技术

2021-04-25  本文已影响0人  spyn_n

说明:本文仅限于说明其技术点,没有别的,不要做坏事

注入

代码注入方式:动态库framework注入,dylib注入;

1、使用脚本重签名。
2、创建framework,编译。
3、使用yololib手动注入MachO
cd到.app包中,指令:yololib WeChat Frameworks/SPYHook.framework/SPYHook
4、替换掉ipa包中的MachO文件
5、重新打包成ipa包(便于用脚本重签名,自动解压得到已经注入的.app包)
结果查看:

image.png

1、新建一个工程安装到手机上(其实就是需要从苹果服务器拿到描述文件)
2、可以使用脚本重新签名,先看一下是否成功。iOS应用重签名点这里
3、新建Library
  如图点击项目Dylib注入-->在TARGETS点下面的+-->选择macOS,搜索library,选择Library,点击Next

image.png
image.png
  如图点击新建的LibraryPSYHook-->Build Setting-->在搜索中输入base,定位到ArchitecturesBase SDK,修改为iOS
image.png
  如图点击新建的LibraryPSYHook-->Build Setting-->在搜索中输入sign,定位到signingCode Signing identity,修改为iOS Developer
image.png
4、添加Copy Files
  选择项目TAEGETS --> Build Phases --> + --> NewCopy File Phase,确认添加库,以及DestinationFrameworks image.png
image.png
5、在库的.m文件的+load方法中写注入代码
image.png

6、查看注入结果:

image.png
【注意Run ScriptCopy Files的顺序,Run Script在上面,斗则会崩溃,因为我的dylib注入的脚本指令是在,重签名脚本指令之后,确保找到APPMachO路径才可以正常操作】
image.png

Method Swizzle

使用class_getInstanceMethod获取到需要HOOK的方法,然后method_exchangeImplementations交换方法的实现。

image.png

当我们注入成功后,我们一般要先进行动态调试,从界面入手,找到对应的类和事件名称,如图:


image.png

第一种方式:通过class_addMethod配合method_exchangeImplementations
第二种方式:直接使用class_replaceMethod
第三种方式:method_getImplementationmethod_setImplementation
拿到其登录的密码并窗口弹出:

image.png
上一篇下一篇

猜你喜欢

热点阅读