ios逆向工具tweak logos语法总结

47 篇文章 4 订阅
8 篇文章 2 订阅


以%百分号开头的语句,是logos语法,可以在theos tweek里面使用

%hook

%hook 类名 
方法1..
方法2..
%end

%hook 后面的类名,是要替换的类名, 里面的 self, 就是这个类

self 要使用的方法,如果报错找不到方法名,则要在前面声明这个类有这个方法,语法如下:

@interface 类名  
声明的方法
@end

例如make时候报错如下:

Tweak.x:19:25: error: no visible @interface for 'FindFriendEntryViewController' declares the selector 'numberOfSectionsInTableView:'
        if  ( section == [self numberOfSectionsInTableView:tableView ] - 1 ){
                          ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方法:
声明self是什么类,在里面加上方法名,如下:

@interface FindFriendEntryViewController  
- (long long)numberOfSectionsInTableView:(id)arg1;
@end

方法2:声明这个类,并且说明他遵守哪个协议,因为上面的numberOfSectionsInTableView是在协议UITableViewDataSource里定义的,所以声明self的类遵守了哪个协议,就代表里面有哪些方法.

@interface FindFriendEntryViewController<UITableViewDataSource>
@end

%new

%new
方法名1..
%new
方法名2..
  • %new下面的方法,是自己添加的方法,不是之前类拥有的方法.自定义的方法都要加在 %new 里
  • %new一定要写在%hook 和 %end之间,就是在%hook 类的里面,否则编译报错
  • 自定义的%new方法要在%hook之前声明,格式如下,否则会报错找不到方法

error: no visible @interface for ‘类名’ declares the selector ‘方法名’

@interface 类名
方法名
@end

%orig

调用原来的方法,自动传入原来所有参数,例如原来方法参数是3个,就自动传入3个,不需要手动填写参数列表

%orig;

发布debug和release版本

在cydia中已安装可以查看 是debug版还是release版本
在make之后的mage package决定打包什么版本
debug版本 直接输入make package

make package

release版本 添加debug=0

make package debug=0

%c

下面2行代码等价%c() 等价于 NSClassFromString ,可以返回字符串表示的类对象

NSClassFromString(@"Student")
%c(Student)

%ctor

在动态库被加载的时候调用的方法,注意不要写在%hook和%end之间

%ctor{
	NSLog(@"ctor执行-------------");
}

%dtor

在app被关闭的时候调用,注意不要写在%hook和%end之间

%dtor{
	NSLog(@"dtor-------------");
}

获取原来app里的对象变量MSHookIvar

MSHookIvar<变量类型>(要获取的对象, "变量名");

例如下面代码 返回原理的self对象里面的age变量

unsigned int age = MSHookIvar<unsigned int>(self, "age");
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值