爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 云卷.云舒
收起左侧

按时段执行功能应用(附汇编指令代码)

[复制链接]
发表于 2008-10-11 15:08:37 | 显示全部楼层
没有看懂 只有景仰。。。。:/lkh
回复 支持 反对

使用道具 举报

发表于 2008-10-11 22:36:18 | 显示全部楼层
请问云mm,能否在按时段执行功能的代码里加上能定义分钟?即几点几分~几点几分执行某某功能
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-11 22:52:51 | 显示全部楼层

回复 22# Wang 的帖子

完全可以啊,现在用了一个寄存器R12,存放小时数据
可以扩展补丁内容,再增加寄存器存放分钟数据。

其实这个补丁是非常简单,可以参考6688的一些跟时间有关的补丁,有更多用法,加更多判断
回复 支持 反对

使用道具 举报

发表于 2008-10-11 23:10:45 | 显示全部楼层
哦,这个我就不懂了。方便的话,放一个代码出来吧。谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-11 23:15:23 | 显示全部楼层
0x35E8E6: DAA36E77 DABF6006

0x1F0660: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88808890D7400D00F2F8DE2546F816009D03
0x1F0670: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46F807009D0BD7400D00F2F9DC2546F9XXXX
0x1F0680: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9D0346F9YYYY9D02DAC7C0DC98909880DB00


上面是纸上谈兵,随便写的,没测试过

还是先R8取得小时数据进行判断,大于前一个数据22:00就跳到进行分钟判断,大于后一个数据7.00返回不执行

然后D7400D00F2F9DC25 就是R9取得分钟数据,XXXX和YYYY是指定分钟数据,也是需要转换为16进制,前后高低互换
大于XXXX执行,大于YYYY返回不执行

分别用R8和R9,2个寄存器
回复 支持 反对

使用道具 举报

发表于 2008-10-12 10:32:35 | 显示全部楼层
云MM帮忙看看20楼的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-12 11:32:49 | 显示全部楼层
原补丁是FAXXXXXX调用的,FA是绝对跳转不需要返回的,而DAXXXXXX后面结束一般是DB00返回

分析一下原补丁选中执行是蓝色部分,不选是执行红色部分
0X1F6200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403600F2F4740D9AF410C0DAB3A862
0X1F6210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FC8000E00DE6FE2262E6FFBF00FAD6
0X1F6220: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D41CDAB34463E6FC50000D02E6FC0001
0X1F6230: FFFFFFFF FAD6CA1C


下面是要加上时间判断,当不在设定时间内,是跳到后面的98D0DB00,这里DB00就出问题了当然会死机
0x1F0a80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88D0D7400D00F2FDDE2546FD14009D03
0x1F0a90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FD08009D02FABF006298D0DB00FFFF

所以98D0DB00FFFF替换成98D0FABF2C62,
FABF2C62就是跳到功能部分的不选时执行的部分E6FC0001FAD6CA1C,来代替原来不在设定时间内的不执行功能返回...


;下面是整个补丁
0X361CC6:E6FC2003  FABF800A
0x1F0a80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88D0D7400D00F2FDDE2546FD14009D03
0x1F0a90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FD08009D02FABF006298D0FABF2C62

0X1F6200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403600F2F4740D9AF410C0DAB3A862
0X1F6210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
E6FC8000E00DE6FE2262E6FFBF00FAD6
0X1F6220: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D41CDAB34463E6FC50000D02E6FC0001
0X1F6230: FFFFFFFF
FAD6CA1C






;以上只是理论分析,未测试过....
回复 支持 反对

使用道具 举报

发表于 2008-10-12 11:50:32 | 显示全部楼层

回复 27# 云卷.云舒 的帖子

刚测试了下,在不亮灯时段电话呼入正常,在亮灯时段电话呼入就关机,不知道还需调整哪里?

另一个启发:不知道能否开发这样的补丁,就是直接按时段控制某项应用程序的选上与不选,这样就不必调整原有补丁了,而是按时间直接控制某一项或多项应用程序可选项的选定与否。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-12 14:53:52 | 显示全部楼层

回复 28# XJWSYXY 的帖子

看了一下,应该是设定时间内的执行部分少了堆栈还原

0x1F0a80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88D0D7400D00F2FDDE2546FD14009D03
0x1F0a90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FD08009D0398D0FABF006298D0FABF2C62
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-12 15:29:02 | 显示全部楼层

回复 28# XJWSYXY 的帖子

直接按时段控制某项应用程序的选上与不选

也可以的,最直接的,就是利用应用快捷开关...把按时段执行加上应用快捷开关函数,然后挂在待机挂钩表上,但这样一来是不是又很费电...

挂在挂钩表上,是因为补定必须要有个执行条件,
回复 支持 反对

使用道具 举报

发表于 2008-10-13 12:04:03 | 显示全部楼层
原帖由 云卷.云舒 于 2008-10-11 23:15 发表
0x35E8E6: DAA36E77 DABF6006

0x1F0660: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88808890D7400D00F2F8DE2546F816009D03
0x1F0670: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46F807009D0BD7400D00F2F9DC2546F9XXXX
0x1F06 ...


云mm,非常感谢你的热心帮助。有个问题想请教:

我特意把代码分开成段落来表示,如下:

88808890
D7400D00F2F8DE25
46F816009D03
46F807009D0B
D7400D00F2F9DC25
46F9XXXX9D03
46F9YYYY9D02
DAC7C0DC
98909880DB00

其中的9D03、9D0B、9D02应该是指跳转到指定的位置继续往下执行,是这样吧?
那么这里的03、0B、02分别是对应到这段代码的那一句呢?如何确定想跳转到的这个指定位置?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-13 18:30:24 | 显示全部楼层

回复 31# Wang 的帖子

是的,仔细看顶楼的反汇编,会看出9DXX跳到哪里了,03、0B、02其实就是长度,4个字节为一个单位,03就是往后跳了12个字节,0B跳了44个字节
往前也可以跳,算法是16进制的100减去长度。比如往前跳04,就是FC

9D是 跳相对地址JMPR 命令的一种cc_NC大于等于条件
常用的
2D相等
3D:不等
0D无条件跳转

条件判断可以参考下面

cc_UC        无条件
cc_Z        零
cc_NZ        非零
cc_V        溢出
cc_NV        非溢出
cc_N        负
cc_NN        非负
cc_C        进位
cc_NC        非进位
cc_EQ        相等
cc_NE        不等
cc_ULT        无符号小于
cc_ULE        无符号小于等于
cc_UGE        无符号大于等于
cc_UGT        无符号大于
cc_SLE        小于等于
cc_SGE        大于等于
cc_SGT        大于
cc_NET        不等并且不是最后
回复 支持 反对

使用道具 举报

发表于 2008-10-13 20:47:40 | 显示全部楼层
再次感谢云MM,终于测试成功,选上应用程序-来电闪灯后,在晚上20点到第二天早上8点之间闪灯,其余时间不闪灯。补丁附上:
;下面是整个补丁
0X361CC6:E6FC2003  FABF7E0A
0x1F0a7E: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88D0D7400D00F2FDDE2546FD14009D03 ;14 hex=20:00点

0x1F0a8E: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FD08009D0398D0FABF006298D0FABF2C62 ;08 hex=08:00点

0X1F6200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403600F2F4740D9AF410C0DAB3A862 ;C0功能29控制
0X1F6210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FC8000E00DE6FE2262E6FFBF00FAD6
0X1F6220: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D41CDAB34463E6FC50000D02E6FC0001
0X1F6230: FFFFFFFF FAD6CA1C

[ 本帖最后由 XJWSYXY 于 2008-10-13 23:52 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-10-13 22:38:42 | 显示全部楼层
原帖由 云卷.云舒 于 2008-10-13 18:30 发表
是的,仔细看顶楼的反汇编,会看出9DXX跳到哪里了,03、0B、02其实就是长度,4个字节为一个单位,03就是往后跳了12个字节,0B跳了44个字节
往前也可以跳,算法是16进制的100减去长度。比如往前跳04,就是FC

9D是 ...


云mm,9D是大于等于条件,2D是相等,3D是不等,0D是无条件跳转,那大于和小于分别是什么代码?

惭愧,下面几句看不懂的:

条件判断
cc_UC        
无条件
cc_Z        
cc_NZ        非零
cc_V        溢出
cc_NV        非溢出
cc_N        
cc_NN        非负
cc_C        进位
cc_NC        非进位
cc_EQ        相等
cc_NE        不等
cc_ULT        无符号小于
cc_ULE        无符号小于等于
cc_UGE        无符号大于等于
cc_UGT        无符号大于
cc_SLE        小于等于
cc_SGE        大于等于
cc_SGT        大于
cc_NET        不等并且不是最后
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-13 22:49:56 | 显示全部楼层

回复 34# Wang 的帖子

大于和小于没用过...不知道

可以用?D (?=0-F),替换上面补丁里的9D做成VKP,再反汇编来看啊
回复 支持 反对

使用道具 举报

发表于 2008-11-1 14:31:43 | 显示全部楼层
wap13::ii wap14::ii
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-6-23 04:10

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表