《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

iOS 安全论坛 - 专注于研究 iOS 安全

 找回密码
 立即注册
查看: 203|回复: 3

书中fishhook编译出错的问题

[复制链接]

8

主题

37

帖子

155

积分

注册会员

Rank: 2

积分
155
发表于 2019-8-13 01:27:47 | 显示全部楼层 |阅读模式
本帖最后由 lion 于 2019-8-13 01:28 编辑

使用MonkeyDev新建了一个Logos Tweak工程,然后使用书中第六章讲解的fishhook的示例代码,fishhook.h和fishhook.c都引入到工程里了。
  1. #import <dlfcn.h>
  2. #import <stdio.h>
  3. #include "fishhook.h"

  4. static FILE* (*orig_fopen)(const char *filename, const char *mode);

  5. FILE* my_fopen(const char *filename, const char *mode){
  6.    
  7.     printf("fopen hook\n");
  8.     printf("fopen filename: %s\n", filename);
  9.     return orig_fopen(filename,mode);
  10. }

  11. static __attribute__((constructor)) void _logosLocalInit()
  12. {
  13.     rebind_symbols((struct rebinding[1]){{"fopen", my_fopen, (void *)&orig_fopen}}, 1);
  14.     NSLog(@"logosLocalInit");
  15.     return;
  16. }
复制代码

编译提示出错的语句是rebind_symbols

Cannot initialize a member subobject of type 'void *' with an lvalue of type 'FILE *(const char *, const char *)' (aka '__sFILE *(const char *, const char *)')
Cannot initialize a member subobject of type 'void **' with an rvalue of type 'void *'
回复

使用道具 举报

7

主题

54

帖子

255

积分

中级会员

Rank: 3Rank: 3

积分
255
发表于 2019-8-13 08:42:34 | 显示全部楼层
MonkeyDev模板本身就含有 fishhook
回复

使用道具 举报

86

主题

262

帖子

1049

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1049
发表于 2019-8-13 10:28:05 | 显示全部楼层
修改成这样看行不行?
rebind_symbols((struct rebinding[1]){{"fopen", (void*)my_fopen, (void **)&orig_fopen}}, 1);
回复

使用道具 举报

8

主题

37

帖子

155

积分

注册会员

Rank: 2

积分
155
 楼主| 发表于 2019-8-14 01:02:52 | 显示全部楼层
修改之后解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2019-11-15 10:39 , Processed in 0.052305 second(s), 19 queries .

iOS安全论坛

© 2017-2019 iOS Hacker Inc.

快速回复 返回顶部 返回列表