网易云音乐, QQ音乐, 酷狗音乐 App去反调试

总结:
1)还原包名
2)搜索jail,hook越狱相关检测。
3)搜索debuger之类,看看有没有调试器检测,hook。
4)边Hook,边重新运行看效果。

第一步:砸壳
砸壳(我用的是frIDA,非常好用),然后新建MonkeyDev工程。

第二步:获取包名(ps + cycript命令), 这里就不详细说了。

第三步:
解压砸壳后的ipa文件,得到macho文件。然后拖入hopper。
首先还原包名,为什么要还原包名呢,主要有两方面:
1.还是因为得益于MonkeyDev这一神器,在xcode里面调试起来简直是方便太多,最主要的还是长期正向开发用惯了XCode调试吧。但是MonkeyDev工程必须得有个bundleId, 但是又不能和原bundleId一致,因此有些App就在包名上做反调试。这是之前分析boss直聘的时候经验。
2.另外也许业务接口也会上传App包名。
所以我们先还原包名吧,这个时候我们得先把之前appstore上下载的包删掉,不然真机调试的时候手机上就有两个相同包名的App,会影响调试的。
%hook NSBundle
- (NSString *)bundleIdentifier
{
    return @"com.netease.cloudmusic”;  //包名
}

//注意,hook下面这个方法有可能会影响UI效果.比如网易云音乐hook下面方法就会导致很多App图标加载不了。不hook又无法正常使用,具体原因懒得去分析了,hook上能正常使用就行。
- (NSDictionary *)infoDictionary
{
NSDictionary *dic = %orig;
NSMutableDictionary *resultDic = [dic mutableCopy];
[resultDic setValue"com.netease.cloudmusic" forKey"CFBundleIdentifier”]; //包名
return [resultDic copy];
}
%end




1)酷狗音乐:

搜索jail,得到如下:
 

然后对这些方法hook,直接返回NO即可。
运行起来看看效果,能正常使用。基本就过了。

2)QQ音乐:
同样,先搜索jail:
 

然后对这些方法进行hook, 直接返回NO.
运行起来看看效果,感觉还是不行,有日志提示被xcode调试。然后搜搜debug看看:
 

发现搜出来的debug很多,跟调试器相关的估计也就圈起来的这个,那我们再搜搜debugger试试看:
 

我们先对这三个方法hook,直接返回NO。
另外在搜索KSPerformanceMonitor的时候发现有这么个方法:+ (BOOL)isTheAppStoreEnvironment,我们也hook一下它,直接返回YES。 
然后运行起来看看效果。

这里需要说一下:
当时日志提示正在被xcode调试,我走了不少弯路,先是根据日志内容在Hopper中搜索相关字符串,结果什么也没搜到。然后只好对NSLog下符号断点。并记住 正在被xcode调试的上一条日志内容,当xcode输出这条日志时候,继续运行,应用下一次断下来就是 提示被xcode调试的日志的地址,然后我们bt一下调用栈,结果都去掉符号了。那只有根据当前地址 - base地址 = 偏移地址,然后在hopper中搜索偏移地址,并进行分析咯。

然后搜索包名相关的方法,对返回包名的相关方法进行hook, 恢复App包名。
 

我们可以看看这些类,有第三方SDK设置包名,也有VC,这些我们都不管。 我们只看圈起来的这些类,看看这些类的其他方法,大致看看是干嘛的。然后根据猜测有选择性的对相关类的包名方法进行hook。我这里主要做了如下hook:
%hook RqdBundleUtil
- (NSString *)getBundleId
{
return @"com.tencent.QQMusic";
}
%end

%hook RqdModelBase
- (NSString *)bundleId
{
return @"com.tencent.QQMusic";
}
%end


再跑起来看看,运行正常。那反调试基本就过了。

3)网易云音乐
同样,先是搜索jail, 看看搜索结果:
 

好家伙,还挺多的, 从搜索截图来看,其中NTESBugrptJailbreakCheck这个类的方法还挺多的,那我们对其他类的jail相关方法先hook,然后再来分析这个类。然后有针对性的Hook NTESBugrptJailbreakCheck类的某些方法。
然后跑起来看看,还是有些问题。
我们再来看看有没有跟调试器相关的方法,主要搜索下面这些字符串:
debugattached, debugger,  
 

然后搜索包名相关的方法,对返回包名的相关方法进行hook,恢复App包名。

更多相关文章阅读:

版权保护: 本文由吾爱破解所发布,转载请保留本文链接: http://www.yemogege.cn/nxxg-jswz/432.html

免责声明:蓝域安全网所发布的一切渗透技术视频文章,逆向脱壳病毒分析教程,以及相关实用源码仅限用于学习和研究目的
请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除! 

侵权删帖/违法举报/投稿等事物联系邮箱:yemogege@vip.qq.com 网站地图