cyclone17 发表于 2009-1-5 14:53:34

想自己移植下S75的笔画输入法补丁,请SPGC高手指教下

RT,想用这个补丁,但是没有,于是想自己学习,虽然没有编程基础,但是不管成不成,还是希望能学学,此贴作为问题贴吧,正在看教程中,希望有好的有关输入法移植的教程和案例跟贴下,谢谢。。

BingK 发表于 2009-1-5 15:38:29

可以尝试从ELKA移植,源码在此:http://sieelf.googlecode.com/svn/SieELF/IME_BIHUA,编译器为IAR

cyclone17 发表于 2009-1-5 15:42:03

回复 2# BingK 的帖子

谢谢,看了看,发现最大的难题是反汇编之后的东西看不懂,还有一些跳转不是很明白怎么去搜索

BingK 发表于 2009-1-5 15:51:22

移植了那些地址,取代源码中相应的地址,然后编译出来就可以了,别忘了移植xcl文件

cyclone17 发表于 2009-1-5 16:25:59

回复 4# BingK 的帖子

你给我的我倒是没看懂,我还只看到从FULLFLASH里面来搜索。
弱弱的问一句我的理解
在笔画中,输入了笔画的状态下,7,8,9,#,绿键是没有定义的是吗?那这段地址是不是就是空白。而6,*,0是代表一种输入的,这个时候我就要找相应的地址函数做修改?

选择状态是不是也一样?

BingK 发表于 2009-1-5 17:34:58

回复 5# cyclone17 的帖子

补丁:
一般先要一个挂钩(HOOK)地址,在这个地址我们做数据修改,或者是从这个位置跳出到另一个地址运行完另一段程序返回或不返回。

cyclone17 发表于 2009-1-5 21:33:00

唉,研究了好久还是不懂,BINGK,麻烦给我说说大概是个什么过程?用SMELTER来搜索?然后用IAR来反汇编?我就看了IDA反汇编的例子,看样子这个对我来说难度还是很大啊。

BingK 发表于 2009-1-6 12:10:55

先练习一下一些简单的补丁吧,这个补丁是比较复杂的。
IAR是做编译器

cyclone17 发表于 2009-1-6 12:50:14

原帖由 BingK 于 2009-1-6 12:10 发表 http://mobile.0110.cn/images/common/back.gif
先练习一下一些简单的补丁吧,这个补丁是比较复杂的。
IAR是做编译器

恩,简单的搜索和替换是会了,然后IDA反汇编搜索特征字串也囫囵吞枣的懂了一些,但是IAR这个,跟论坛那些个用WINHEX,HEX2VKP的好像不一样啊,看样子我触类旁通的能力还是太差啊,不适合去玩补丁移植这种东西。。。唉,郁闷

BingK 发表于 2009-1-6 12:57:46

参考:
http://mobile.0110.cn/viewthread.php?tid=375345

cyclone17 发表于 2009-1-6 14:33:49

老大,我摸到一点门道了。能不能加你QQ什么的?我正在研究HOOK跳转的搜索字串,空白地址是不是在75区那个空白地址分配里面找一块你们没用的就好了?

BingK 发表于 2009-1-6 14:57:41

有事在帖子里说更好。
很多人路过都可以帮忙。

cyclone17 发表于 2009-1-6 15:25:32

恩。刚刚又仔细研究了一下教程帖子,我说说我的思路,不知道对不对。
;E71Cv41

;JAVA_BD_POP_HOOK
0x006EF288: EA49097808294BD1 00490847CDC835A1
;SYS_BD_POP_HOOK
0x00A3D628: 24D0 C046
;IME_HOOK
0x00B20FF0: 2D9036980223C05E 004B184735C835A1
;SELECT_HOOK
0x00B21670: 31380528BAD8281C 00490847BDC835A1
这里是不是主要的几个HOOK程序,我用WINHEX打开E71C的FULL先搜索到这条地址,然后用IDA反汇编这个地址,然后根据汇编程序来确定几条指令地址对应的机器码,把这个机器码再到S75C的FULL里面去搜索,这样来确定S75C里面对应的地址?

公司的机器太慢,打开IDA就卡死了,想问问,是不是假如能找到这个地址,移植的话是怎么做呢?IAR我还是不懂,怎么用新的地址去替换E71C里面的旧的呢,我想不能直接替换吧,应该要通过IAR的编译才能完成替换工作吧?

BingK 发表于 2009-1-6 15:48:25

你前面说的思路很对。
但现在你已经有了源代码,就不需要对着机器码移植了。

要从E71Csw41移植,那么要移植的就是两个部分E71Csw41.xcl中的地址和addr.h中的E71Csw41部分,用移植出来的地址替换对应的地址。因为E71Csw41的工程已经设置好了,直接借用E71Csw41的工程编译出来就可以。
生成ELF文件之后,还要转换为VKP。使用elf2vkp。用批处理方式,格式: elf2vkp elf路径 生成的vkp路径 fullflash路径

cyclone17 发表于 2009-1-6 16:07:08

如果不通过机器码去对应搜索,要怎么在S75C中搜索对应功能的地址呢?

BingK 发表于 2009-1-6 16:13:37

回复 15# cyclone17 的帖子

搜索还是要靠机器码,但是不要对着已经出来的vkp补丁,对着源码就可以了

ai_mao 发表于 2009-1-6 23:01:14

一边路过一边支持!!

我也是用S75的,也需要这个补丁!

cyclone17 发表于 2009-1-7 14:06:48

呵呵,还在学习中,原来IDA也不是那么好用的。

cyclone17 发表于 2009-1-7 16:34:36

BINGK,看看M75的笔画,我觉得这个就是我想要的,这个看起来好像代码简单很多啊,是不是比你那个E71的移植要简单点呢?昨天晚上试着IDA看E71和S75的FULL,头晕得厉害啊,呵呵
简体笔画输入法修改3.0
;***简体笔画输入法修改3.0***
;(c) Bennie & Lisugar & LinkingP)ghyang0708
;for M75C V21
;占用空白地址19CF80-19D01F

;使用说明:
;等待输入状态:按789*直接选择1234号联想字,无需进入联想选字状态。按“6”进入选字状态。

;输入笔画状态和选字状态:按789*0#6和“绿键”,直接选择1-8号联想字。
;注意:与V2不同,无需拼音输入补丁的支持。并且打补丁之前请UNDO拼音输入补丁。
0x094324: 08AB1020 08F16DFE
0x0ABD8A: 0223C05E F1F0F9F8
0x19CF80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0223C05E052836D0142832D0152829D0
0x19CF90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 162834D12E9B002F04D0012F0DD0022F
0x19CFA0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0BD02CD1362B06D0372B16D0382B16D0
0x19CFB0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 392B0CD023D1144B1847302B09D0362B
0x19CFC0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 09D0372B09D0382B09D0392B17D13327
0x19CFD0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 06E0352704E0372702E0312700E03227
0x19CFE0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0A4B1847012F02D0022F00D007D13627
0x19CFF0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F6E73427F4E7002F01D03827F0E77047
0x19D000: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3068007A024800476BBE0AA05BC20AA0
0x19D010: FFFFFFFF BF4309A0

BingK 发表于 2009-1-8 12:22:28

所以才分了NEWSGOLD和SGOLD,不能从M75移植的。
页: [1] 2
查看完整版本: 想自己移植下S75的笔画输入法补丁,请SPGC高手指教下