爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 925|回复: 24
收起左侧

[原创] 【冰提示的那两个地址有一个搞不定】好失望,这么好的补丁移植来竟然不能用!!!

[复制链接]
发表于 2009-3-4 13:08:20 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 loquat 于 2009-3-4 23:39 编辑

我先搞的你上面的这个
  1. ;E71Cv41
  2. ;(i)swi
  3. ;RHOOKBLACKLIST
  4. 0x0071DC0E: 8EF6 33F1
  5. 0x0071DC10: 4AE9 F2EA
  6. ;BLACKLIST_DUMP
  7. #pragma enable old_equal_ff
  8. 0x008511F4: 00C09FE51CFF2FE1099835A1
  9. ;BLACK_LIST_BODY,CODE,DATA_C
  10. 0x01359800: 80B5074FB84780BDFFB500F00CE80128
  11. 0x01359810: 02D1002066DF02E0FFBC33DF00BDFFBD
  12. 0x01359820: 5FD194A00C119FE570402DE93CD04DE2
  13. 0x01359830: 7C1091E824008DE27C1080E80D30A0E1
  14. 0x01359840: 8020A0E30010A0E30A0000EF0050B0E1
  15. 0x01359850: 0000A0433400004A400DA0E3140000EF
  16. 0x01359860: 0040A0E10D30A0E1402DA0E30410A0E1
  17. 0x01359870: 0500A0E10B0000EF0060A0E10D10A0E1
  18. 0x01359880: 0500A0E10D0000EF000056E30000A053
  19. 0x01359890: 0400C6572000A0E3250100EF0050A0E1
  20. 0x013598A0: 6E0000EF0510A0E1230000EB2020A0E3
  21. 0x013598B0: 04108DE20500A0E1A30000EF04608DE2
  22. 0x013598C0: 0320A0E31A1F8FE204008DE2150100EF
  23. 0x013598D0: 000050E307608D020610A0E10400A0E1
  24. 0x013598E0: 180100EF011040E2000050E30600000A
  25. 0x013598F0: 000051E30600000A0000D1E5300050E3
  26. 0x01359900: 0300003A3A0050E30100002A0060A0E3
  27. 0x01359910: 000000EA0160A0E30400A0E1150000EF
  28. 0x01359920: 0500A0E1290100EF0600A0E13CD08DE2
  29. 0x01359930: 7080BDE82B383600489935A100C09FE5
  30. 0x01359940: 1CFF2FE1019835A1303A5C4D6973635C
  31. 0x01359950: 426C61636B4C6973742E747874000000
  32. #pragma disable old_equal_ff
复制代码
我移植后下面。任意来电都是直接“滴”没了
;RHOOKBLACKLIST
0x00359736: 20F786EB 56F3F2FB  ;跳转到006AFF1E,因为我看你的那句是跳转到08511F6的
;BLACKLIST_DUMP
#pragma enable old_equal_ff
0x006AFF1C: 00C09FE51CFF2FE109A053A1;蓝色部分也是对照你的来的,不会是空白地址选错了吧!
;BLACK_LIST_BODY,CODE,DATA_C
0x0153A000: 80B5074FB84780BDFFB500F00CE80128
0x0153A010: 02D1002066DF02E0FFBC33DF00BDFFBD
0x0153A020: 5FD194A090119FE5F0402DE93CD04DE2
0x0153A030: DC1091E80050A0E124008DE2DC1080E8
0x0153A040: 0D30A0E18020A0E30010A0E30A0000EF
0x0153A050: 0070B0E10200005A0000A0E33CD08DE2
0x0153A060: F080BDE8400DA0E3140000EF0040A0E1
0x0153A070: 0D30A0E1402DA0E30410A0E10700A0E1
0x0153A080: 0B0000EF0060A0E10D10A0E10700A0E1
0x0153A090: 0D0000EF24119FE50400A0E1180100EF
0x0153A0A0: 0070B0E10900000A0A00F7E5310050E3
0x0153A0B0: 0600003A390050E30400002AB60000EF
0x0153A0C0: 0010D7E5311041E2000051E1E1FFFF1A
0x0153A0D0: EC109FE50400A0E1180100EF0070B0E1
0x0153A0E0: 0800000A0800F7E5310050E30500003A
0x0153A0F0: 3A0050E30300002A280040E2000055E1
0x0153A100: 0100A0032900000A000056E30000A053
0x0153A110: 0400C6572000A0E3250100EF0050A0E1
0x0153A120: 6E0000EF0510A0E1260000EB2020A0E3
0x0153A130: 04108DE20500A0E1A30000EF04608DE2
0x0153A140: 0320A0E31B1F8FE204008DE2150100EF
0x0153A150: 000050E307608D020610A0E10400A0E1
0x0153A160: 180100EF0070A0E1010047E2000057E3
0x0153A170: 0600000A000050E30600000A0000D0E5
0x0153A180: 300050E30300003A3A0050E30100002A
0x0153A190: 0060A0E3000000EA0160A0E30400A0E1
0x0153A1A0: 150000EF0500A0E1290100EF0600A0E1
0x0153A1B0: 3CD08DE2F080BDE82B383600D49B35A1
0x0153A1C0: EC9B35A1F89B35A100C09FE51CFF2FE1
0x0153A1D0: 019A35A1303A5C4D6973635C426C6163
0x0153A1E0: 6B4C6973742E7478740000005B50726F
0x0153A1F0: 66696C655D3A00005B47726F75705D3A
0x0153A200: 00000000
#pragma disable old_equal_ff
发表于 2009-3-4 13:30:58 | 显示全部楼层
忘了,可能这是源代码
  1. #include "..\inc\swilib.h"

  2. //#pragma swi_number=0x0248
  3. //__swi void GetCalleeNumber(int index, WSHDR *ws);

  4. extern void GetCalleeNumber(int index, WSHDR *ws);

  5. int do_check(int group)
  6. {
  7.         char path[]="0:\\Misc\\BlackList.txt";
  8.         unsigned int err;
  9.         int f=fopen(path, A_ReadOnly, P_READ, &err);
  10.         if(f<0)
  11.                 return 0;//0,不在黑名单或者名单不存在
  12.         char *buf=malloc(4096);
  13.         int size=fread(f, buf, 4096, &err);
  14.         fclose(f, &err);
  15.         char *p;
  16.         p=strstr(buf, "[Profile]:");
  17.         if(p)
  18.         {
  19.                 p+=10;
  20.                 if((*p)>='1'&&(*p)<='8')
  21.                 {
  22.                         if((*p-'1')!=GetProfile())
  23.                                 return 0;
  24.                 }
  25.                 //int pf=GetProfile();
  26.         }
  27.         p=strstr(buf, "[Group]:");
  28.         if(p)
  29.         {
  30.                 p+=8;
  31.                 if((*p)>='1'&&(*p)<='9')
  32.                 {
  33.                         if(group==(*p)-0x28)
  34.                                 return 1;
  35.                 }
  36.         }
  37.         if(size>=0)
  38.                 buf[size]=0;
  39.         char num[32];
  40.         WSHDR *ws=AllocWS(32);
  41.         GetCalleeNumber(IsCalling(), ws);
  42.         ws_2str(ws, num, 32);
  43.         char *s=num;
  44.         if(strncmp(num, "+86", 3)==0)
  45.                 s+=3;
  46.         //char *
  47.         p=strstr(buf, s);
  48.         int rec;
  49.         s=p-1;
  50.         if(p)
  51.         {
  52.                 if(s)
  53.                 {
  54.                         if((*s)>='0'&&(*s)<='9')
  55.                                 rec=0;
  56.                         else
  57.                                 rec=1;
  58.                 }
  59.                 else
  60.                         rec=1;//拒接
  61.         }
  62.         else
  63.                 rec=0;
  64.         mfree(buf);
  65.         FreeWS(ws);
  66.         return rec;
  67. }

复制代码

  1. #ifdef E71Cv41
  2. #define ADDR_GetCalleeNumber 0xA094D15E+1
  3. #define ADR_PlaySound2  0xA05ABEA4
  4. #endif

  5.     CODE16
  6.     EXTERN do_check
  7.     RSEG BLACK_LIST_BODY
  8.     PUBLIC GetCalleeNumber
  9.    
  10. GetCalleeNumber:
  11.     PUSH    {R7,LR}
  12.     LDR     R7, =ADDR_GetCalleeNumber
  13.     BLX     R7
  14.     POP     {R7,PC}
  15.    
  16. BODY:
  17.     PUSH    {R0-R7,LR}
  18.     BLX     do_check
  19.     CMP     R0, #1
  20.     BNE     RP
  21.     MOV     R0, #0
  22.     SWI     0x66  //EndCallBusy
  23.     B       EXIT
  24. RP:
  25.     POP     {R0-R7}
  26.     LDR     R7,=ADR_PlaySound2
  27.     BLX     R7
  28.     //SWI     0x33 //PlaySound2
  29.     POP     {PC}
  30. EXIT:
  31.     POP     {R0-R7,PC}
  32.     /*
  33. NONAME:
  34.     PUSH    {R0-R7,LR}
  35.     MOV     R0, #1
  36.     BL      get_it
  37.     CMP     R0, #0
  38.     BEQ     EXITNOME
  39.     MOV     R0, #0
  40.     //LDR     R3, =ADR_EndCallBusy
  41.     //BLX     R3
  42.     SWI     0x66  //EndCallBusy
  43. EXITNOME:
  44.     POP     {R0-R7,PC}*/
  45.    
  46.     CODE32
  47.     RSEG BLACKLIST_DUMP
  48. BLACK_LIST_DUMP:
  49.     LDR     R12, =BODY
  50.     BX      R12
  51.    
  52.     CODE16
  53.     RSEG RHOOKBLACKLIST:CODE(1)
  54.     BLX     BLACK_LIST_DUMP
  55.    
  56.     END
复制代码
  1. -carm
  2. -Z(CODE)BLACK_LIST_BODY,CODE,DATA_C,ICODE,INITTAB,INTVEC,IRQ_STACK,CSTACK=A1359A00-FFFFFFFF
  3. -Z(CODE)BLACKLIST_DUMP=A08511F4-FFFFFFFF
  4. -Z(CODE)RHOOKBLACKLIST=A071DC0E-FFFFFFFF
  5. //-Z(CODE)NONAMEHOOK=A09DBC14-FFFFFFFF


复制代码
回复 支持 反对

使用道具 举报

发表于 2009-3-4 13:31:21 | 显示全部楼层
这个是MP的黑名单吗?
回复 支持 反对

使用道具 举报

发表于 2009-3-4 13:33:02 | 显示全部楼层
传说这个补丁有问题的,所以最好还是详细测试一下,好像发短信会出问题。很久没有用这个了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 13:56:58 | 显示全部楼层
第一段源码C的勉强看得懂,后面两个E71的汇编我才刚开始学啊。
就是因为要移植补丁才看点汇编的。
难度太大了。。。
搞不懂算了,我没发去补丁区,应该不会有人随便就乱刷的。补丁说已经说过了,来电死机。不知何故。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 14:06:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 14:28:05 | 显示全部楼层
很郁闷,是不是那几个跳转没有处理好。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 14:29:46 | 显示全部楼层
调整空白占用,一再的查看跳转地址,还是不行!
不知道是不是我的方法不对。只能望洋兴叹了!!!
回复 支持 反对

使用道具 举报

发表于 2009-3-4 15:53:30 | 显示全部楼层
# #define ADDR_GetCalleeNumber 0xA094D15E+1
# #define ADR_PlaySound2  0xA05ABEA4

这两个地址要移植
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 16:17:56 | 显示全部楼层
还是算了,代码看懂了,这两个地址我不会移植。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 16:25:52 | 显示全部楼层
# #define ADDR_GetCalleeNumber 0xA094D15E+1
这个函数我没看懂。
ADR_PlaySound2这个函数对应的地址取8个字符是一个跳转吧?
A05ABEA4: 08402DE9
A05ABEA4: BLX loc_A05B4102


代码看懂了不会处理成机器码。下一步我该学点什么东西呢。
回复 支持 反对

使用道具 举报

发表于 2009-3-4 16:49:54 | 显示全部楼层
0x0153A020: 5FD194A090119FE5F0402DE93CD04DE2
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 18:10:26 | 显示全部楼层
本帖最后由 loquat 于 2009-3-4 23:44 编辑

是这样啊,晚上再继续处理吧.感谢冰指点.请问冰,怎么把汇编程序转成机器码?

楼上那个函数地址找到了!对应的是:0x009833EF
下面那个还在找。。。

A05ABEA4: 08402DE9
A05ABEA4: BLX loc_A05B4102
这明明就是个跳转。这种跳转不知道该怎么移植!
不知道怎么处理。想了半天没想明白,今晚估计睡不着了。。。
回复 支持 反对

使用道具 举报

发表于 2009-3-4 18:45:45 | 显示全部楼层
用IAR编译成elf,再用ELF2VKP
keil也行,需要hex2vkp,没怎么用过
回复 支持 反对

使用道具 举报

发表于 2009-3-4 19:20:19 | 显示全部楼层
好久没有移植过补丁了.....汗额.................
回复 支持 反对

使用道具 举报

发表于 2009-3-4 19:34:19 | 显示全部楼层
what's function of this patch ?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-4 22:23:36 | 显示全部楼层
好久没有移植过补丁了.....汗额.................
lusure111 发表于 2009-3-4 19:20


lusure,那你来吧。我刚看了那两个地址还是不会移植。

问,加入论坛的SPGC需要什么条件。每个月移植一定数量的补丁?
回复 支持 反对

使用道具 举报

发表于 2009-3-4 22:41:42 | 显示全部楼层
lusure,那你来吧。我刚看了那两个地址还是不会移植。

问,加入论坛的SPGC需要什么条件。每个月移植一定数量的补丁?
loquat 发表于 2009-3-4 22:23


好久没有移植过补丁了.....汗额.................
lusure111 发表于 2009-3-4 19:20
回复 支持 反对

使用道具 举报

发表于 2009-3-4 23:53:56 | 显示全部楼层
这个补丁是什么功能?
回复 支持 反对

使用道具 举报

发表于 2009-3-5 12:00:44 | 显示全部楼层
# #define ADDR_GetCalleeNumber 0xA094D15E+1
# #define ADR_PlaySound2  0xA05ABEA4

前面一个在区号秀中找,后面一个在swilib中找
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 02:22

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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