- QQ音乐一个神秘操作
- 关于搞游戏时区
昨晚的时候,去抓包了一下qq音乐,目的是为了强制把那些“版权”曲加入到播放列表中,然后自己去找个音源替换进去,就可以听了。
然后就发生了以下事情:
之前就去搜索过,今天把改单独app的时区的进行了实验。
简单来讲,对于普通的unix程序来说,直接设置TZ=<timezone-name>就可以了,比如 “TZ=Asia/Tokyo date”就会输出日本时间了。
但是用简单程序试了下之后发现,NSDate不受这个变量影响。搜索之后看到说是Cocoa API里面总体最后都是回归到[NSTimeZone systemTimeZone],那把这个也改掉就行了吧。
总之简单编译很快就有了可以用的成品
static NSTimeZone *tokyoTZ = NULL; %hook NSTimeZone +(NSTimeZone*)systemTimeZone { return tokyoTZ; } %end %ctor { tokyoTZ = [NSTimeZone timeZoneWithName:@"Asia/Tokyo"]; char* str = (char*)[@"TZ=Asia/Tokyo" cStringUsingEncoding:NSASCIIStringEncoding]; putenv(str); }
实际上开头我并没有用putenv,结果拿一个只输出 localizedStringWithDate:date 的程序可以修改,但进游戏后还是本地时区。所以看来unity的时区不是从Cocoa中取的,而是unix api。在加入了putenv后,游戏里面的时区也就成功变成+9时区了,妙。
(编译器始终不让我用putenv里面直接string literal,然后我就得这样绕一大圈)