五分钟搞不定新版Mac迅雷

之前那贴刚发现是老版本。
下了个新版看看

首先定位常用退出函数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

  1. 终端执行$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

4 个赞

太晚了尚未测试是否一直有效。
如否明天继续

NOTE:可以通过Bash脚本修改DYLD_INSERT的方式实现注入。Hook NSBundle重定向可执行文件路径到原始文件的路径。这样就不需要碰原版MachO和任何文件了

mark一下

THEOS的模版一般不都是iOS的么,如何生成Mac程序的模版呢?我查到的资料一般都是用的easySimbl

不需要Theos当编译系统。我这里只是用Theos的语法分析来把Logos语法转换成普通代码。
然后正常直接clang编译就行了

soga,现在懂了。刚好能用上,谢谢:pray: