之前那贴刚发现是老版本。
下了个新版看看
首先定位常用退出函数exit
查看xref,发现作者在该版本中充满了抛瓦,没有将检验函数放在main里(ROFL)
怼他,发现(如果分析过之前版本的话)伪代码结构非常眼熟
这个手动(Seriously?)混淆了方法名称的oc函数疑似老版本明文md5,接着怼他
接着往下看,发现有针对老版本的hook isVIP的检测(说真的这什么傻逼检测)
继续。老版本的硬编码简单路径变成了mainbundlepath/Contents/PlugIns/Hash后跟两次hash,写代码的话似乎会比较麻烦
于是乎我们暴力检测: MD5 返回的文本长度都为32,且检测用路径前缀固定. 删掉isVIP的hook
//$THEOS/bin/logos.pl /PATH/OF/THIS/FILE > /PATH/OF/NEW/FILE
//clang -shared -undefined dynamic_lookup -o libThunder.dylib /PATH/OF/NEW/FILE
//Inject and profit
%config(generator=internal)
#import <objc/runtime.h>
#import <Foundation/Foundation.h>
%hook NSFileManager
-(BOOL)fileExistsAtPath:(NSString*)K{
if([[K stringByReplacingOccurrencesOfString:@"/Applications/Thunder.app/Contents/PlugIns/" withString:@""] length]==32){
NSLog(@"You are so 1970");
return YES;
}
else{
return %orig;
}
}
%end
%hook LocalTask
-(BOOL)isValidLixianTask{
return YES;
}
%end
%hook UserController
-(BOOL)isLogined{
return YES;
}
-(BOOL)isPlatinum{
return YES;
}
-(BOOL)isDiamond{
return YES;
}
%end
- 终端执行
$THEOS/bin/logos.pl
上面代码保存的路径 > 某个新路径A
这一步是为了用Logos预处理器生成hook代码(我懒得手写这么多runtime hook)
2.Theos生成的可能稍微有点问题,你也许需要打开新路径把下面两个我们的import移动到开头
3.执行clang -shared -undefined dynamic_lookup -o /Applications/Thunder.app/Contents/MacOS/libThunder.dylib
新路径A
4.执行 optool install -c load -p @executable_path/libThunder.dylib -t /Applications/Thunder.app/Contents/MacOS/Thunder
GLHF