爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 7388|回复: 101
收起左侧

[求助] 用IAR移植补丁遇到困难。。

[复制链接]
发表于 2008-7-3 11:40:44 | 显示全部楼层 |阅读模式

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

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

x
打算移植啊冰的区号秀到别的机型,可是不行啊
我的问题是编译不出来补丁,一开始编译SK的生成的补丁能生成.vkp文件,不过只有数据库部分,没有补丁补分,后来我认为是没有elf2vkp,可是下载了依然不行,elf2vkp根本无法运行,一运行就崩溃。再后来我把文件夹都改成英文的,这次遍译的时侯elf2vkp不崩溃了,可是单独运行依然崩溃,而且居然不生成.vkp了。
不知道我说清了没有?
发表于 2008-7-3 12:04:28 | 显示全部楼层
%1\..\tools\elf2vkp.exe %2\CodeShowPatch.elf %1\t_%3.VKP e:\fullflash\lg8\%3.bin

用批处理,格式
elf2vkp.exe路径 elf文件路径 输出vkp文件路径 使用的fullflash路径

错误的路径或文件会出错,可能不支持中文路径
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-3 14:22:40 | 显示全部楼层
下了班回去试试
还有就是上面格式的%1、%2.。。。是说明意思(这个问题不是太可笑吧:/lkh )
回复 支持 反对

使用道具 举报

发表于 2008-7-3 17:35:41 | 显示全部楼层

回复 3# 寒江 的帖子

那个没有关系
按照格式来就行了。
用批处理,格式
elf2vkp.exe路径 elf文件路径 输出vkp文件路径 使用的fullflash路径

%1, %2这些,是在批处理里面传送参数用的。可以看看一些和批处理相关的文章
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-4 17:39:33 | 显示全部楼层
我把IAR和源代码放到硬盘根目录下运行成功,没有错误提示了,能正常编译了,下一步就是移植了
可是我不知道从何入手,应该只要改SK6Cv50.xcl中的地址就可以了吧,移植的话难道还会用到IDA?
另:比较悲惨的是,我单独运行了下mk.bat,结果把我那个盘的东西全删了!!!怎么会这样???::/\dst
回复 支持 反对

使用道具 举报

发表于 2008-7-4 17:54:10 | 显示全部楼层

回复 5# 寒江 的帖子


                               
登录/注册后可看大图

那个可能是mk.bat写得有问题
安全起见,把下面几句删了吧
del *.tmp
del *.dep
rd /s /q %1\%3
rd /s /q %1\settings

要移植的地址在SK6Cv50.xcl和addr.h中,addr.h中的部分地址可以直接在swilib中找到。
补丁移植的基本原理:
假设我们要移植的地址中SK6CV50的0xA0001234,用相关软件打开SK6Cv50的fullflash,跳到0xA0001234这个地址,看这个地址中的数据,假设为ABCDEF,如果要移植到S6Cv53,那么在S6Cv53的FullFlash中查找数据ABCDEF,它所在的地址就是我们要的移植的结果。
当然我们有很多手段达到这个效果。
区号秀太大了,不适合你目前移植。
可以看看:
大家齐动手之 补丁从零开始
http://mobile.0110.cn/viewthread ... &extra=page%3D1

补丁移植过程中,IDA是必备的软件,不过不一定要用到,操作起来比较麻烦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-4 18:52:02 | 显示全部楼层
可你们这些高手现在都变'懒'了,逼我们自己动手啊:(
那个教程我看过了,说实话,只看懂了一部分.
回复 支持 反对

使用道具 举报

发表于 2008-7-4 23:37:11 | 显示全部楼层

回复 7# 寒江 的帖子


                               
登录/注册后可看大图


我不是高手,。。。

不如说大家变懒不爱学习了。
回复 支持 反对

使用道具 举报

发表于 2008-7-4 23:59:25 | 显示全部楼层
终于有个人和我一样给阿冰害了一次,那个MAKE。BAT,哈哈。。。

::/\jhkhh 阿冰应该把SVN上面的那个错误的给删掉。。。

感觉用IAR移植比较简单。。。本人不会算HOOK的。。。也不会IDA反编译。。。
简单的补丁移植,用WINHEX打开,SK65的FLASH然后找到那行,复制HEX,然后在S65里面的找,然后记录下行,就可以了。。。这个一般不会错,感觉比较简单。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-5 07:49:34 | 显示全部楼层
楼上的方法我回去试试,应该能移植一部分,可还有那么多占用空白的呢?用这个办法就不行了吧
ps:
回复 支持 反对

使用道具 举报

发表于 2008-7-5 09:50:31 | 显示全部楼层
空白地址啊?

随便找空白地址就可以了。。。只要不占用。。。。。。。。。
然后生成ELF,然后ELF2VKP就可以自己生成VKP了。
回复 支持 反对

使用道具 举报

发表于 2008-7-5 11:44:57 | 显示全部楼层

回复 11# snoopyhzy 的帖子

空白地址自然还是好好规划一下的好。。。

我从0x01359680开始。。。已经到0x0135C6FF了,嘿嘿,后面的也不要跟我抢,自己找一大块-_-,中间那些屁大的空白就不到不得已的时候不要占
回复 支持 反对

使用道具 举报

发表于 2008-7-5 11:46:02 | 显示全部楼层

回复 9# snoopyhzy 的帖子

批处理写得是没错滴,是你操作错了。 你也不打开看看什么内容啥意思就直接执行了,不怪我不怪我

                               
登录/注册后可看大图
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-6 15:18:39 | 显示全部楼层
实在看不懂了。。。
不用源码直接移植行不?
只移植这部分

;CallOutWindow
#pragma disable old_equal_ff
0x0038E84A: 6AC01448 6FF613FF
;Callinwindow
0x0038F48C: 378A6BE5 6FF6EBF8
;SMS_SEND_HOOK
0x004F1BC4: B7DAC5B69F64AC47B888 004A9047B1E61FA0C046
;AddrBookWindow2
0x0054DDAE: 00 21
;AddrBookWindow
0x0054DDBC: 00080C14 B0F463FC
;RecordWindow
0x00554B54: D6D7D8D9 A9F47CFD
;PhonebookWindow
0x0057B1EC: 00082D00 83F456FA
;NUM_SELECT_MENU_HOOK1
0x0058C4A6: 1F2BA58E 72F426F9
;NUM_SELECT_MENU_HOOK
0x0058C53E: B9C2 72F4
0x0058C540: 6C89 C9F8

;CODE2和;CODE,DATA_C随便找个没用的空白地址刷上
区号秀数据库先不管
会不会简单点
ps:不是不爱学习了,是没时间啊,每周工作7天,节假日不休息,还要陪老婆。。。。
回复 支持 反对

使用道具 举报

发表于 2008-7-6 16:24:59 | 显示全部楼层

回复 14# 寒江 的帖子

;CODE2和;CODE,DATA_C随便找个没用的空白地址刷上
里面也有函数需要移植的!

其实用源码移植是简单方便很多的。
回复 支持 反对

使用道具 举报

发表于 2008-7-6 17:16:07 | 显示全部楼层

回复 14# 寒江 的帖子

其实大家都很忙
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-6 17:51:55 | 显示全部楼层

回复 15# BingK 的帖子

我只会简单移植,移植源码的话什么都不懂啊,也没有有真对性的教程可看
回复 支持 反对

使用道具 举报

发表于 2008-7-6 21:15:17 | 显示全部楼层

回复 17# 寒江 的帖子

只要移植源码中的地址,不用改代码,其他都是通过编译器自动完成的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-6 23:08:41 | 显示全部楼层
用这个方法
简单的补丁移植,用WINHEX打开,SK65的FLASH然后找到那行,复制HEX,然后在S65里面的找,然后记录下行,就可以了。。。这个一般不会错,感觉比较简单。。。。


以下地址在M65中找不到:
#define ADDR_WS_InitByZero    0xA07197EA+1
#define ADDR_GetCalleeNumber    0xA0733432+1

#define ADDR_FreeWS        0xA071988E+1
#define ADDR_AllocWS        0xA0719852+1

#define ADDR_wstrcat        0xA07199B8+1
#define ADDR_wsAppendChar    0xA0719AE0+1

#define ADDR_ADDRBook        0xA0719FE8+1

#define ADDR_SMS_SEND        0xA07D3BC0+1

#define UNUSERAM_NUM        0xA8000240
#define UNUSERAM_METHOD        0xA8000300
#define UNUSERAM_OLD_REDRAW    0xA80002F0

#define ADDR_SELECT_MENU    0xA079188C+1
#define ADDR_MENU_DESC        0xA0711F5C



-Z(CODE)PhonebookWindow=A057B1EC-FFFFFFFF
-Z(CODE)SMS_SEND_HOOK=A04F1BC4-FFFFFFFF
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-6 23:32:54 | 显示全部楼层
在addr.h中加入了

#ifdef M6Cv50
。。。。。。。(省略)
#endif

同时新建了M6Cv50.xcl,可在workspace中看不到M6Cv50,不能maker,怎么回事呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 06:19

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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