[size=3][color=red]本帖所描述的方法适用于0301版高星原厂通刷BIN的小海尔套片之5812组合。其它组合请自行分析解决。
有网友说工具不好用,主要是因为工具适用的BIN只是5812组合的,今天改进了一下,可以适用于1108和2020组合,欢迎测试!
在解开APP后,会在信息区显示数据在APP中的位置,类似于下面这样的文字:[/color]
[color=blue]时间偏移量及时区信息已经读入。
时间调整数据位于BIN中的4BA4(16进制)处。[/color]
如果是4E02,则说明是1108组合,其它组合数值各不相同,由程序自动搜索。
从所周知,中9的时间比实际时间约慢2分钟左右,经常可以看到新闻联播开始了,但节目信息中的时间还在18:58。据本人观察,机项盒时间比节目中显示的时间慢两分钟左右(118-119秒间),比实际时间要慢2分5秒到2分6秒。
时间观念较强的人是不能满意这样的时间显示的,但长期以来,无人能拿出解决办法。本人经过几天的分析,掌握了调整时间差的方法,不敢独享,发出来让想调整时间显示的用户能够心想事成。
手工修改的步骤大约是①解开61000处的应用程序包②修改数据③压缩数据④将压缩后的应用程序包植入到BIN中61000处⑤校验数据并烧录。有BIN修改经验的一般用户在几分钟内就能完成BIN的修改,配合专业工具可以事半功倍。
要修改的地方位于APP区的04BA4处,共3个字节,分别代表要调整的小时、分和秒,正值是调快,负值是调慢。
分析还发现,BIN中有指定时区的地方,目前内置值为08,代表北京时间的时区。如果是其它时区的中9用户,可以修改这个值进行时区变换,具体地址在173F处,正值表示EST,负值表示WST,负数用补码表示。
附图一张,以方便对照修改。[/size]
稍花了一点时间,在原来的文字修改工具中加上了时间调整功能,用法比较简单,基本一看就会。
(1)打开BIN (2)解压 (3)修改并确认 (4)保存 (5)刷机。
与本帖内容相关的反汇编代码片段:
[color=blue][code];时间调整子程序,用于将TDT表中的时间调为本地时间
;入口参数:R321指向时间日期(7DC611)
L7700D0: MOV DPTR, #7DC95BH ;保存结果时间指针的地址
LCALL L7222D9 ;调用C?PSTXDATA
MOV R0, #5EH
MOV R4, #0C9H
MOV R5, #7EH
MOV R3, #0F3H ;指向APP中的时间增量(3字节,时分秒)
MOV R2, #4BH
MOV R1, #0A4H
MOV R6, #00H
MOV R7, #03H
LCALL L722582 ;内存复制,将724BA4处的3个字节复制到7DC95E处
MOV DPTR, #7DC60FH
MOVX A, @DPTR ;取出时区(默认值=08)
MOV R7, A
CLR C
XRL A, #80H
SUBB A, #80H
JC L770101 ;时区为负,转走
MOV DPTR, #7DC95EH
MOV A, R7
MOVX @DPTR, A ;将时区加到偏移值上去
SJMP L77011B
;时区为负时的处理
L770101: MOV DPTR, #7DC60FH
MOVX A, @DPTR
ADD A, #18H ;在原来的负值(补码)上加24小时
MOV DPTR, #7DC95EH
MOVX @DPTR, A
MOV DPTR, #7DC95BH
LCALL L7222B9
MOV R5, #01H
LCALL L75773F 减去一天
L77011B: MOV R3, #7EH
MOV R2, #0C9H
MOV R1, #5EH
MOV DPTR, #7DC958H ;时间偏移值
LCALL L7222D9 ;保存指针(R321=7DC95E)
MOV DPTR, #7DC95BH ;节目流中解出的世界标准时间UTC
LCALL L7222B9 ;取出指针
LCALL L76075C ;时间相加
MOV R7, #01H ;返回值:1=成功
RET[/code][/color]