iOS逆向 <MonkeyDev 笔记>

CaptainHook

假如class-dump后找到了头文件,并且知道了属性和方法
例如拿到的方法如下所示(此方法不在文件中,存在与ipa包中):

CustomViewController :UIViewController
@property (nonatomic, copy) NSString* newProperty;
+ (void)classMethod;
- (NSString*)getMyName;
- (void)newMethod:(NSString*) output;
  • CHDeclareClass 申明类可以调用属性和方法
CHDeclareClass(CustomViewController)
  • 进行对方法和属性的调用(请仔细阅读class-dump中的属性和方法,以下是如何调用)
//方法已经明确写出了传什么
# optimization  当前self或者其他
#return_type  需要传入什么类型
#class_type  传入哪一个类
#name  属性名称
CHOptimizedMethod0(<#optimization#>, <#return_type#>, <#class_type#>, <#name#>)

CHOptimizedMethod0(self, NSString*, CustomViewController, getMyName){
//需要实现的代码
}
CHDeclareMethod1(void, CustomViewController, newMethod, NSString*, output){
//需要实现的代码
}
CHOptimizedClassMethod0(self, void, CustomViewController, classMethod){
//需要实现的代码
}
CHOptimizedMethod(0, self,  NSString*, CustomViewController, newProperty) 
{  
//需要实现的代码
}
//需要实现的代码就是,你对以上传入属性值进行修改的,需要返回就returen,不需要则调用父类,或者直接不做任何操作
//添加新的属性
CHPropertyRetainNonatomic(CustomViewController, NSString*, 
newProperty, setNewProperty);
  • 构造函数(CHConstructor)
CHConstructor{
//装载类
    CHLoadLateClass(CustomViewController);
//类名称 类方法
    CHClassHook0(CustomViewController, getMyName);
    CHClassHook0(CustomViewController, classMethod);
//类名称 属性
    CHHook0(CustomViewController, newProperty);
    CHHook1(CustomViewController, setNewProperty);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 开始时间:2015年1月1日 结束时间:2017年6月30日 工具: 手机APP: time meter 作图: ...
    剑飞在思考阅读 2,515评论 0 3
  • 最近一段时间以来。声调式音阶当中这区别,恣意或者磁力作用的音高的变化,那取决于,声调,主要取决于音高,同一个人的不...
    纳百川11阅读 1,215评论 0 0
  • 今天阳光暖和明媚 闲坐愁绪上心头 不妨下厨做厨娘 烟熏火燎烹小鲜 大火下锅小火煎 外焦内酥肉盈香 红椒装扮葱花饰 ...
    陈糊涂阅读 2,649评论 0 5