Tweak编写问题

比如IOS的类方法 我是不是可以直接在 Tweak.xm 直接写一个类方法 我在这个文件里
的所以hook都可以实现

因为我是只写Tweak.xm 没有对app进行重签名
暂时还没学习app进行重签名 还在学习Tweak.xm编写
我看他们重签名app是写一个类 再到Tweak.xm里引用

不知道直接在Tweak.xm这个想法是不是正确的

我读了5遍,你是想问在tweak中能不能写类方法,还是想问能不能实现它所有hook,还是想问用类方法能不能实现他的重签名,还是想问在tweak中写个类方法能不能实现它所有hook再重签名!?那么问题来了,tweak.xm这个想法是什么

什么玩意儿?
@字节跳动 进来招人

抱歉 描述不好
比如
%hook
A
%end

%hook
B
%end

A和B都要对 NSString 都要调用 类方法 +(void)buttonAction;

如果我写在 A时 B也可以使用

按照我自己的习惯 对于A,B都使用的 类方法 想重新写C来放这个类方法
+(void)buttonAction;

怎么在Tweak.xm 中无中生有 写这个C来存放 方法

看其他人代码都是 ipa 结合 Tweak.xm 一起的 好像是在Xcode的新建个 C
然后在Tweak.xm引用 这个C

我还没学会ipa和Tweak.xm 重新生成一个新的包开发的方法

就想在 Tweak.xm 直接生成这个C类独立出+(void)buttonAction;这个类方法 直接用于A和B 中 不知道这个想法 是不是成立的

hook A 是hook A类的方法,hook B是hook B类的方法,你新增个C类,在AB中调用C类的+(void)buttonAction类方法相当于作用于AB类的C类同名方法(相当于新增方法),并没有对AB产生影响,打个比方:ViewControllerA 和ViewControllerB 都各自有一个UIButton btnA 和btnB ,他们都绑定一个名字都为-onClickBtn:的方法,你现在新增一个ViewControllerC 也创建了个btnC 绑定了个onClickBtn:方法,并没有作用到AB啊。

嗯 谢大佬 知道了

我 class-dump 出 app 的头文件
这些文件有A,B的头文件 没有 C 这个头文件

在Tweak.xm 直接添加

方式一

@interface C
-(void)buttonAction
@end

%hook C
%new
-(NSString *)buttonAction{}
%end

但是我在A,B调用到[%c(C) buttonAction] 编译过了 但是buttonAction没输出

方式二
还是有 我把这方法写在 NSString 中

#import <Foundation/Foundation.h>
@interface  NSString
-(void)buttonAction
@end

%hook NSString
%new
-(NSString *)buttonAction{}
%end

但是我在A,B调用到[%c(NSString) buttonAction] 编译不过 找不到这个方法

方式三
只有写在 A

@interface  A
-(void)buttonAction
@end

%hook A
%new
-(NSString *)buttonAction{}
%end

我在B调用到[%c(A) buttonAction] 只有这样才是正确

请问大佬 方式一 和 方式二 这个想法是错的吗 还是 我写的不够完整

有点疑问 还是只能用方式三 这个和我平常编码习惯 有点出入
所以才有 方式一 和 方式二

请大佬指定下我 方法一 和 方式二 问题

谢谢

但是我在A,B调用到[%c© buttonAction] 编译过了 但是buttonAction没输出

你没写方法正文当然没输出了

这个是弄个略写 说明的个大概 意思 我自己写的时候是有值的 大佬让我很尴尬

#import <CommonCrypto/CommonDigest.h>

+(NSString *)md5HexDigest:(NSString *)input{

const char* str = [input UTF8String];

unsigned char result[CC_MD5_DIGEST_LENGTH];

CC_MD5(str, (CC_LONG)strlen(str), result);

NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];

for(int i = 0; i<CC_MD5_DIGEST_LENGTH; i++) {

    [ret appendFormat:@"%02x",result[i]];

}

return ret;

}

完整是这个
我oc开发刚刚好用到 这个
先弄个md5 加密 到 Tweak.xm 里面完一下

上面是nsstring的buttonAction,下面是CommonCrypto啥啥啥。你到底想问什么

@字节跳动 再进来招人

狗神的小黄书(iOS应用逆向工程),还有庆哥的iOS逆向应用与安全