需求: 有这样一款app,其本身被注入了A.dylib 和B.dylib两个动态链接库,本来想利用MonkeyDev的MonkeyApp模板对app注入新的动态库进行进一步的修改,但发现只要对该app注入任何其他的动态库,app就会提示并闪退。
分析发现:原来是A.dylib这个动态库中使用了_dyld_get_image_name来检测app导入了哪些动态库,如果发现不是A和B这两个动态库就退出,于是乎,使用MSHookFunction来Hook _dyld_get_image_name这个C函数,但总是无法hook成功!!!!
代码:`
#import <CaptainHook/CaptainHook.h>
#import <UIKit/UIKit.h>
#import <Cycript/Cycript.h>
#import <MDCycriptManager.h>
#import <dlfcn.h>
#include <stdint.h>
#include <substrate.h>
#include <mach-o/dyld.h>
char *(*dyld_get_image_name_old123)(uint32_t index);
char *dyld_get_image_name_mine(uint32_t index)
{
char *imageName = dyld_get_image_name_old123(index);
printf("%s",imageName);
return imageName;
}
CHConstructor{
MSHookFunction((void *)_dyld_get_image_name,(void *)dyld_get_image_name_mine, (void **)&dyld_get_image_name_old123);
}`
环境设备:iphone8 plus未越狱,xcode11.1
第一次这样Hook C函数,望各位大佬赐教一下!