爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3007|回复: 3
收起左侧

[求助] 冰大,我实在不知道错在哪里了。想了一上午没搞定。。。

[复制链接]
发表于 2009-7-25 13:23:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
现在手机上的效果是,Master里关闭补丁时,不在列表中的号码拨入铃声不响,对方听到的是“您所拨打的号码暂时无法接通”
而Master里打开补丁时,不在列表中的号码都会自动接听。。。

我想要的是,关闭补丁时,对不在列表中的号码不做任何处理,正常提醒。
  1. #define PATCH_ID 0xABEF
  2. #ifdef E71Cv41
  3. #define ADDR_GetCalleeNumber 0xA094D15E+1
  4. #define ADR_PlaySound2  0xA05ABEA4
  5. #define ADR_AutoAnswer  0xA09DE7AB
  6. #endif
  7. #ifdef S7Cv47
  8. #define ADDR_GetCalleeNumber 0xA09833EE+1
  9. #define ADR_PlaySound2  0xA0279E44
  10. #define ADR_AutoAnswer  0xA09CF887
  11. #endif
  12.     CODE16
  13.     EXTERN do_check
  14.     RSEG BLACK_LIST_BODY
  15.     PUBLIC GetCalleeNumber
  16.    
  17. GetCalleeNumber:
  18.     PUSH    {R7,LR}
  19.     LDR     R7, =ADDR_GetCalleeNumber
  20.     BLX     R7
  21.     POP     {R7,PC}
  22.    
  23. BODY:
  24.     PUSH    {R0-R7,LR}
  25.     BLX     do_check
  26.     CMP     R0, #1
  27.     BEQ     RP
  28.     LDR     R1, =PATCH_ID
  29.     SWI         0xC4 //void *GetBuffer(int patch_id);
  30.     BNE     RP
  31.     LDR     R3, =ADR_AutoAnswer
  32.     BLX     R3
  33.     //SWI     0x29  //AutoAnswer
  34.     B       EXIT
  35. RP:
  36.     POP     {R0-R7}
  37.     LDR     R7,=ADR_PlaySound2
  38.     BLX     R7
  39.     //SWI     0x33 //PlaySound2
  40.     POP     {PC}
  41.     B       EXIT
  42. EXIT:
  43.     POP     {R0-R7,PC}
  44.    
  45.     CODE32
  46.     RSEG BLACKLIST_DUMP
  47. BLACK_LIST_DUMP:
  48.     LDR     R12, =BODY
  49.     BX      R12
  50.    
  51.     CODE16
  52.     RSEG RHOOKBLACKLIST:CODE(1)
  53.     BLX     BLACK_LIST_DUMP
  54.    
  55.     END
复制代码
发表于 2009-7-25 20:31:10 | 显示全部楼层
本帖最后由 binghelingxi 于 2009-7-25 20:33 编辑
  1.     POP     {PC}
  2.     B       EXIT
复制代码
这句是什么意思?

已经修改了程序计数器(PC)的值,就已经跳转到其他地方运行了,再b exit是没有效果的
回复 支持 反对

使用道具 举报

发表于 2009-7-25 20:34:56 | 显示全部楼层
ARM指令中,
第一个参数,就用R0传送

    LDR     R1, =PATCH_ID
    SWI         0xC4 //void *GetBuffer(int patch_id);

应改为

    LDR     R0, =PATCH_ID
    SWI         0xC4 //void *GetBuffer(int patch_id);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-25 21:42:03 | 显示全部楼层
RO那句,我测试测试。呵呵。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 19:50

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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