【迷你文】日常

  •  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,然后我就得这样绕一大圈)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax