爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 660|回复: 7
收起左侧

[E系列] [MP]移植Call Recorder通话录音求助(ELC1v41)

[复制链接]
发表于 2009-8-14 03:30:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 rikhtdss 于 2009-8-14 03:45 编辑

前两天刷了loquat移植的补丁:
http://bbs.0110.cn/viewthread.php?tid=412009&extra=page%3D1

结果不论Master里是否启用,只要一接通电话就死机。后来loquat更新了贴子,但是声明EL版暂停。
再后来又找到了下面的帖子:
http://bbs.0110.cn/viewthread.php?tid=376318&extra=&page=1

看我有人成功,我信心大增,不过还是没找到ELC1版。以前也没试过移植补丁,实在是无从下手。
Google一番后又找到了俄国的原版补丁(E71v45),就这么几个补丁对照着自己边试边改。

下面是我弄的补丁:
  1. ;ELC1v41
  2. ;Call Recorder
  3. ;通话自动录音(MP)
  4. ;(c) Evgr
  5. ;Version: 0.1
  6. 0DC8588: 2A1C2B1C09211730 004B9847,0xA0071D01 ; At connect
  7. 09E4F70: 131C182103300092 004B9847,0xA0071D29 ; At connection received
  8. 067E6BC: 444A2B1C70320021 00498847,0xA0071D51 ; At end of call
  9. 067E6C4: 0120 424A
  10. #pragma enable old_equal_ff
  11. 0071D00: 2A1C2B1C09211730FFB51E48C4DF07D0
  12. 0071D10: 4078002804D039211648016014488047
  13. 0071D20: FFBC08BC04331847131C182103300092
  14. 0071D30: FFB51448C4DF07D08078002804D03921
  15. 0071D40: 0C4801600A488047FFBC08BC04331847
  16. 0071D50: 2B1C703200210120FFB50A48C4DF02D0
  17. 0071D60: 3E2104480160FFBC02BC04310847C046
  18. ;0071D70: 0xA07F76C7,0xA8D80900
  19. 0071D70: 0xA07E3F8B,0xA8D80900
  20. 0071D80: 0xB1C2D3E4,0x00080601,0000000000000000,"\
  21. {p=CallRecorder cp=Evgr id=080601 ver=0.1}\
  22. {1 cb `Outgoing` v=1}\
  23. {2 cb `Inbox` v=1}\
  24. ",00
  25. #pragma disable old_equal_ff
  26. 07D85E0: 040095E5 C69E30EA ;EL
  27. 07D81B4: 8E00000A DA9F30EA ;EL
  28. 07D87BC: 040095E5 639E30EA ;EL
  29. #pragma enable old_equal_ff
  30. 1400100: 6C709FE5000097E5390050E30100000A
  31. 1400110: 040095E5CBEFCEEA0000A0E3000087E5
  32. 1400120: DDEFCEEA4BEFCE0A44509FE5008095E5
  33. 1400130: 3E0058E30200000A0150A0E30680A0E3
  34. 1400140: B5EECEEA3D80A0E3008085E530EFCEEA
  35. 1400150: 1C709FE5000097E53D0050E30100000A
  36. 1400160: 040095E52EF0CEEA0000A0E3000087E5
  37. 1400170: A22BCFEA,0xA8D80900 ; A8D80900 freeRAM
  38. #pragma disable old_equal_ff
复制代码
刷上后不启用不死机,只要Master里一启用补丁,同样在电话接通的一瞬间死掉。

18、19两行我分别试过,结果都一样。
其中0071D70: 0xA07F76C7,0xA8D80900来源于loquat修改之前的帖子
0071D70: 0xA07E3F8B,0xA8D80900则从E71版补丁中直接拷贝。
另外我猜测最后一行也可能有问题。我猜想这个补丁是调用系统函数实现录音,死机的原因可能是E/EL版的函数地址不一样引起的。

希望有人出手相助一下,对这个补丁真的很期待!
发表于 2009-8-14 14:04:59 | 显示全部楼层
补丁中有很多跳转,尚不知是arm还是thumb模式
跳转可能有这些(只能说可能,因为我没有反汇编看):1400114;1400120;1400140;1400164;1400170;
回复 支持 反对

使用道具 举报

发表于 2009-8-14 14:11:21 | 显示全部楼层
初步看了下,应该是Arm模式的跳转。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-14 14:44:29 | 显示全部楼层
谢谢楼上的回复,不过还是看不懂,我没有任何编程基础的说囧~

我看了E71v45版的补丁,发现从45移植到41,发现其中写入空白地址的两段代码大同小异,相同的部分似乎不包含函数地址什么的。而不同的部分主要是这两句:
E71v45:  0071D70: DB387CA00009D8A8
E71v41:  0071D70: 0xA07E3F8B,0xA8D80900
---------------------------------------------------
E71v45:  1400170: A9ABCEEA0009D8A8
E71v41:  1400170: A22BCFEA,0xA8D80900

这两句的后半部分也是相同的,换算后都是0xA8D80900,所以关键是前一个地址。
我现在搞不懂的就是:
0071D70: DB387CA0 -> 0xA07E3F8B
1400170: A9ABCEEA -> A22BCFEA
是怎么得到的,一看到“跳转”什么的就已经晕菜了。。。临时抱佛脚去看你的《菜鸟补丁移植教程》还是看不懂,汗
回复 支持 反对

使用道具 举报

发表于 2009-8-14 15:23:22 | 显示全部楼层
0071D70: DB387CA0 -> 0xA07E3F8B
1400170: A9ABCEEA -> A22BCFEA
前一个就是0xA07C38DB->0xA07E3F8B(是地址的移植,教程中有写)
后一个是Arm跳转,要用IDA反汇编看跳转到的EL71上的地址,把这个地址移植到ELC1上,再用armtool或者IAR计算跳转
这个东西太难了,你还是不要尝试了。先从简单的弄起吧。。。
回复 支持 反对

使用道具 举报

发表于 2009-8-14 15:25:54 | 显示全部楼层
本帖最后由 loquat 于 2009-8-14 20:31 编辑

我就是懒得用IDA反汇编才宣布补丁暂停的。。。
给你反汇编出来了
ROM:A1400100             ; ---------------------------------------------------------------------------
ROM:A1400100             ; START OF FUNCTION CHUNK FOR sub_A07CACDC
ROM:A1400100
ROM:A1400100             loc_A1400100                            ; CODE XREF: sub_A07CACDC:loc_A07CADC4j
ROM:A1400100 6C 70 9F E5                 LDR     R7, =0xA8D80900
ROM:A1400104 00 00 97 E5                 LDR     R0, [R7]
ROM:A1400108 39 00 50 E3                 CMP     R0, #0x39
ROM:A140010C 01 00 00 0A                 BEQ     loc_A1400118
ROM:A140010C
ROM:A1400110 04 00 95 E5                 LDR     R0, [R5,#4]
ROM:A1400114 2B 2B CF EA                 B       loc_A07CADC8
ROM:A1400114
ROM:A1400118             ; ---------------------------------------------------------------------------
ROM:A1400118
ROM:A1400118             loc_A1400118                            ; CODE XREF: sub_A07CACDC+C35430j
ROM:A1400118 00 00 A0 E3                 MOV     R0, #0
ROM:A140011C 00 00 87 E5                 STR     R0, [R7]
ROM:A1400120 3D 2B CF EA                 B       loc_A07CAE1C
ROM:A1400120
ROM:A1400120             ; END OF FUNCTION CHUNK FOR sub_A07CACDC
ROM:A1400124             ; ---------------------------------------------------------------------------
ROM:A1400124             ; START OF FUNCTION CHUNK FOR sub_A07CA958
ROM:A1400124
ROM:A1400124             loc_A1400124                            ; CODE XREF: sub_A07CA958+40j
ROM:A1400124 AB 2A CF 0A                 BEQ     loc_A07CABD8
ROM:A1400124
ROM:A1400128 44 50 9F E5                 LDR     R5, =0xA8D80900
ROM:A140012C 00 80 95 E5                 LDR     R8, [R5]
ROM:A1400130 3E 00 58 E3                 CMP     R8, #0x3E
ROM:A1400134 02 00 00 0A                 BEQ     loc_A1400144
ROM:A1400134
ROM:A1400138 01 50 A0 E3                 MOV     R5, #1
ROM:A140013C 06 80 A0 E3                 MOV     R8, #6
ROM:A1400140 15 2A CF EA                 B       loc_A07CA99C
ROM:A1400140
ROM:A1400144             ; ---------------------------------------------------------------------------
ROM:A1400144
ROM:A1400144             loc_A1400144                            ; CODE XREF: sub_A07CA958+C357DCj
ROM:A1400144 3D 80 A0 E3                 MOV     R8, #0x3D
ROM:A1400148 00 80 85 E5                 STR     R8, [R5]
ROM:A140014C 90 2A CF EA                 B       loc_A07CAB94
ROM:A140014C
ROM:A140014C             ; END OF FUNCTION CHUNK FOR sub_A07CA958
ROM:A1400150             ; ---------------------------------------------------------------------------
ROM:A1400150             ; START OF FUNCTION CHUNK FOR sub_A07CACDC
ROM:A1400150
ROM:A1400150             loc_A1400150                            ; CODE XREF: sub_A07CACDC:loc_A07CAFA0j
ROM:A1400150 1C 70 9F E5                 LDR     R7, =0xA8D80900
ROM:A1400154 00 00 97 E5                 LDR     R0, [R7]
ROM:A1400158 3D 00 50 E3                 CMP     R0, #0x3D
ROM:A140015C 01 00 00 0A                 BEQ     loc_A1400168
ROM:A140015C
ROM:A1400160 04 00 95 E5                 LDR     R0, [R5,#4]
ROM:A1400164 8E 2B CF EA                 B       loc_A07CAFA4
ROM:A1400164
ROM:A1400168             ; ---------------------------------------------------------------------------
ROM:A1400168
ROM:A1400168             loc_A1400168                            ; CODE XREF: sub_A07CACDC+C35480j
ROM:A1400168 00 00 A0 E3                 MOV     R0, #0
ROM:A140016C 00 00 87 E5                 STR     R0, [R7]
ROM:A1400170 A2 2B CF EA                 B       loc_A07CB000
ROM:A1400170
ROM:A1400170             ; END OF FUNCTION CHUNK FOR sub_A07CACDC
ROM:A1400170             ; ---------------------------------------------------------------------------
ROM:A1400174 00 09 D8 A8 dword_A1400174  DCD 0xA8D80900          ; DATA XREF: sub_A07CACDC:loc_A1400100r
ROM:A1400174                                                     ; sub_A07CA958+C357D0r
ROM:A1400174                                                     ; sub_A07CACDC:loc_A1400150r
ROM:A1400178 FF                          DCB 0xFF

32位的B跳转不用我讲,你可以解决了,那个BEQ
ROM:A1400124 AB 2A CF 0A                 BEQ     loc_A07CABD8
和B算出来的相差多少,对应补上就可以了。
  1. A1400124 B A07CABD8
  2. A1400124:AB2ACFEA
复制代码
应该为AB2ACFEA-E0=AB 2A CF 0A
回复 支持 反对

使用道具 举报

发表于 2009-8-14 20:46:18 | 显示全部楼层
顶高手了。。
回复 支持 反对

使用道具 举报

发表于 2009-8-14 21:07:30 | 显示全部楼层
看高手过招也是
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 06:29

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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