爱黑武论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6386|回复: 5

深度剖析E680G应用四.彻底解决LM带来的麻烦

[复制链接]
发表于 2010-5-5 10:22 | 显示全部楼层 |阅读模式

立即注册,加入爱黑武论坛的大家庭!爱黑武,爱上搞机生活!

您需要 登录 才可以下载或查看,没有账号?注册

x
深度剖析E680G应用四.彻底解决LM带来的麻烦
转载:草木瓜 20060826

一、前言

如果你看过以前的三篇文章,再来理解这篇应该是很轻松了。这篇文章的目
的就是为了能彻底抛弃L/M给我们带来的这么多麻烦!什么安装,卸载,改名等等
一并解决,而且只是更改了手机上一个文件而已。
在这里,需要感谢的人很多,起码要点名两个人,yan0和Cyph。一位搜集整
理了ezx_flexbit.cfg设置方式实现本文方法,需要telnet到手机,其他的Linux操作系统和flashkit工具。

二、原理

其实很简单,在MOTO以前一些机子上就可以直接安装管理MPKG程序,只是在E680系列版
本中居然被屏蔽了,不过幸好大家发现功能的开关就在ezx_flexbit.cfg这个文件中。
不过ezx_flexbit.cfg这个文件有两个,如下:
/usr/setup/ezx_flexbit.cfg
/ezxlocal/download/appwrite/setup/ezx_flexbit.cfg

先详细说一下ezx_flexbit.cfg这个文件的原理。

我们先打开/ezxlocal/download/appwrite/setup/ezx_flexbit.cfg这个文件,
(这是我E680G,未进行任何刷机修改的内容)内容如下:

[SYS_FLEX_TABLE]
0 = 1208211392
1 = 374437888
2 = 2178351491
3 = 1678589
4 = 4289465088
5 = 195198976

这里的每行对应了32位二进制的数值,只是显示成10进制了,我们转换一下,
不足32位的在左端加0,并且4位一组加上序号,内容如下:

ABCDEFGH

0 0100 1000 0000 0011 1101 0111 1100 0000 0 = 1208211392
1 0001 0110 0101 0001 0111 1000 0000 0000 1 = 374437888
2 1000 0001 1101 0111 0000 0001 1000 0011 2 = 2178351491
3 0000 0000 0001 1001 1001 1100 1111 1101 3 = 1678589
4 1111 1111 1010 1100 0000 1011 0000 0000 4 = 4289465088
5 0000 1011 1010 0010 1000 0000 0000 0000 5 = 195198976

可以自已转换一下,看看结果是不是一致,加深下理解。这里每个0或1都表示
一个功能的关闭与开启。这里只选出意义比较重大的功能开关。

◆3行C组第1位

开启USB网的菜单,手机设置-USB模式里会出现USB网,这种模式连接电脑即可
直接Telnet。
这里显然没有开启!

◆3行F组第1位

手机上网有“可能要收取额外的通话费用,继续吗”的提示,此为手机Opera上网
的提示,不是JAVA上网出现的提示。
这里已经开启!

◆4行D组第4位

照相机设置里,快门声音里出现静音的选项。
这里没有开启!

◆4行E组第1位
拍照后,手机会出现是否保存的提示。
这里没有开启!

◆5行A组第3位
开启手机支持MPKG软件的安装功能。
极度重要,这个小小的1,0给我们E680g用户造成了极大的麻烦!这里没有开启!

很遗憾,我们能随意修改的/ezxlocal下的那个文件是没有用的,系统只去找
/usr/setup/ezx_flexbit.cfg这个文件。然想改这个/usr/setup/ezx_flexbit.cfg
似乎比登天还难!我telent进手机,使出浑身懈数也搞不定,后来发现mount可以起
作用。然重启肯定就恢复以前模样了!

我们先做个小小的试验!先修改/ezxlocal的ezx_flexbit.cfg内容,就只加上
MPKG和USB网的两项功能,(3行C组第1位,5行A组第3位)更改后,把对应二进制数值
转换为十进制。显示的文件内容如下:

ABCDEFGH

0 0100 1000 0000 0011 1101 0111 1100 0000 0 = 1208211392
1 0001 0110 0101 0001 0111 1000 0000 0000 1 = 374437888
2 1000 0001 1101 0111 0000 0001 1000 0011 2 = 2178351491
3 0000 0000 1001 1001 1001 1100 1111 1101 3 = 10067197 *修改
4 1111 1111 1010 1100 0000 1011 0000 0000 4 = 4289465088
5 0010 1011 1010 0010 1000 0000 0000 0000 5 = 732069888*修改

我们修改后的ezx_flexbit.cfg文件内容如下:

[SYS_FLEX_TABLE]
0 = 1208211392
1 = 374437888
2 = 2178351491
3 = 10067197
4 = 4289465088
5 = 732069888

覆盖手机上/ezxlocal/download/appwrite/setup/ezx_flexbit.cfg文件,
你去设置里看USB模式,会发现毫无变化!这时在telnet下输入以下命令:
mount --bind /ezxlocal/download/appwrite/setup/ezx_flexbit.cfg /usr/setup/ezx_flexbit.cfg
再去看USB模式,就会发现多了一项--USB网,随便复制个mpkg安装文件,
没有问题!可以象java一样安装卸载,应用名称也可以去见鬼了!我们已经
看到了这个文件的效果,不过重启之后,一切又恢复原样!

我曾经想过,能不能把这个命令在手机下运行,这样大不了我每次开机点一
下,然却发现运行手机系统的是ezx用户,是绝对不支持mount命令的。这里附带
一句,如果那位能简单实现修改这个文件的方法,一定要告知!


三、方法

方法就是绝对要修改这个文件,这里使用了flashkit工具,向只读的flash写
入新文件。下载地址兼中文说明,大家可以去看一下。
http://club.ccmove.com/nclub/top ... &topicid=257967

我的做法(也有一部分复述上面贴子的内容):

1.telnet进手机,执行命令:
tar zcvf /mmc/mmca1/setup.tar.gz /usr/setup

说明:
这里是把整个/usr/setup下文件打包到卡上,为了是在别的Linux下用
mkfs.cramfs制作cramfs文件,然后用flashkit重写。也可以不压缩直接
tar cvf都是一样的。不明白可以查看linux,tar的用法。


2.复制setup.tar.gz到Linux系统下,执行解压缩命令:
mkdir moto
cd moto
tar zxvf setup.tar.gz
这时会出现很多警告,不要紧,执行完毕后会自动建立文件夹。

说明:
我使用的是虚拟机安装的RedHat Linux,通过mount -t smbfs -o
username=administrator,password=yiming,ip=192.168.98.166 -l
//LW/MotoShare /home/root/windows 访问Windows的完全共享文件夹MotoShare,
在Linux,Windows下都可以进行操作。
(本机名LW,IP为192.168.98.166,MotoShare是我的共享文件夹,用户名密码就
不用说了。)

3.修改usr/setup里的ezx_flexbit.cfg文件,可以根据个人喜好修改。

4.在建立的moto文件夹下,使用mkfs.cramfs进行打包,执行命令:
mkfs.cramfs usr/setup liwei.cramfs

说明:
有前辈云:使用mkfs.cramfs进行打包,不是mkcramfs,否则不能telnet。
有兴趣的可以去验证下!这里的mkfs.cramfs只能打包文件夹。所以只好覆盖
setup下所有文件了。

注意:以下内容在flashkit自带的ReadMe有详细的英文说明,英文好的切莫错过!

5.把flashkit.zip解压的文件夹flashkit复制到/mmc/mmca1下,注意里面内容
最好不要改,把liwei.cramfs也复制到/mmc/mmca1下。

6.因为这里采用的是USB方法Telnet的,把USB线拔掉。

7.用loader关联运行/mmc/mmca1/flashkit/rwflash.lin,注意目录,你可以查
看下rwflash.lin的内容,就明白了。

8.将电话闲置30秒以上,长点也没事,我这里让他闲置了1分钟。
(Leave the phone alone and wait. When the screen blanks out wait 30secs
longer, there's a good chance the phone entered low power mode.)

9.重新插USB然后telnet进手机,执行命令
cat /proc/rwflash_status
如果显示为\"unlocked\"代表成功,显示locked需要重新回到6,拔掉闲置~直到显示
unlocked,如果长时间依然是locked,关机开机,从步骤6再开始!

10.确认显示unlocked,执行cd /mmc/mmca1/flashkit 进入目录执行 ./start.sh
这时候telnet会断掉而且电话几乎所有功能会被Kill,任你怎么搞手机,也是无济
于事!但是有几个进程还在,比如mmcsdapp,这样你依然可以看到你卡上的所有内
容!

11.在Windows命令行下telnet 169.254.142.2 10000,用10000这个端口telnet。
输入root,这时就进行了flashkit虚拟的shell中,可以正常操作。

12. cat /proc/mtd 会包含类似以下内容,忘了复制我的屏幕了,这里用intoxicated
的,都差不多。不过我的e680g是六行记录。
mtd4: 000e0000 00020000 \"R/W Kernel
mtd5: 018e0000 00020000 \"R/W RootFS(CG33)
mtd6: 00020000 00020000 \"R/W Setup\"(CG36)
mtd7: 00020000 00020000 \"R/W Logo\" (CG37)
R/W代表可以写入,我们需要做得就是覆盖 mtd6: 00020000 00020000 \"R/W Setup\"
(当然,通过这个方法也可以覆盖mtd5,mtd7对应内容。)

13.输入命令
flashcp -v /mmc/mmca1/liwei.cramfs /dev/mtd6

14.执行完毕,拆掉电池,断电重新开机,L/M问题便彻底解决了!

对于不能mkfs.cramfs的朋友,这里提供了我用过的打包文件,可以去友人网下载。

四、小结

如果你细心看过,现在肯定比较爽了~
我随手安装了个mp3播放器,安装MPKG软件的路径是/mmc/mmca1/.system/
QTDownLoad。这是装在卡上的路径,显然没有必要把MPKG软件装在手机上。同样系
统也会修改/mmc/mmca1/.system/java/PlugCardDB,配置信息如下

[AppLinkRecord100000033]
AllPosition = 39
BigIcon = icon.png
Directory = mp3player
Exec = mp3player
Group = 4
Icon = icon_sm.png
InstalledDate = 2006/9/1
JavaId = -1
Mime =
MpkgFile = /mmc/mmca1/19425526.mpkg
Name = EQ??-???
OsVersion = 1.1
Position = 5
Rotation =
Shared = 2
Size = 1455K
Type = 4
uid = 100000033

注意到这里的Type=4,我们Type=2时,绝对是显示“应用名称”的,Type=5是
Java软件,如果手机不支持MPKG,Type=4的应用程序虽然能显示名称,但却无法
执行的。

这时,你就可以下载一个mpkgKit.exe改名程序。(其实就是修改配置文件的
Name对应值,不过你用普通工具查看时,中文是乱码)去随意更改安装软件的名称
了,图标就更不用说了。这样需要提一下mpkgKit.exe这个工具,最好不要让它
去直接改手机的内容,速度比较慢,而且改了之后,本次telnet速度也慢了。解
决方法就是复制到电脑上,用mpkgKit.exe改完再复制回去。

还有关于XXX.desktop这个文件,只是在MPKG安装时由系统读取罢了,安装就
没有任何作用了,更改图标名称只需修改PlugCardDB这个配置文件。


五、彻底解决LM后,我对于MPKG的管理方法,供大家参考。

PlugCardDB文件的有关配置信息。

[AppLinkRecord100000001]
AllPosition =
BigIcon = liwei.png
Directory = ../../../../mmc/mmca1/soft/liwei
Exec = liwei
Group = 4
Icon = liwei.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = è????????è??#脚本加载
OsVersion =
Position = 17
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000001


[AppLinkRecord100000002]
AllPosition =
BigIcon = app.png
Directory = ../../../../mmc/mmca1/soft/shortcuts
Exec = app.sh
Group = 4
Icon = app.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = ?o???¨?????? #应用综合
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000002


[AppLinkRecord100000003]
AllPosition =
BigIcon = game.png
Directory = ../../../../mmc/mmca1/soft/shortcuts
Exec = game.sh
Group = 4
Icon = game.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = ????????????#游戏综合
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000003


[AppLinkRecord100000004]
AllPosition =
BigIcon = player.png
Directory = ../../../../mmc/mmca1/soft/shortcuts
Exec = player.sh
Group = 4
Icon = player.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = ?a?????????? #媒体综合
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000004


/mmc/mmca1/soft/liwei/liwei的内容

#!/bin/bash
exec $2 &

/mmc/mmca1/soft/shortcuts/app.sh的内容

#!/bin/bash
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
export MYSTUFF_DATA_PATH=/mmc/mmca1/exe/app

chmod 444 $MYSTUFF_DATA_PATH
cd /usr/SYSqtapp/mystuff
./mystuff
chmod 777 $MYSTUFF_DATA_PATH

其他几个sh都差不多,只是路径不同罢。而这些路径就是存放一些MPKG
的运行脚本。这样做的目的,就是考虑菜单资源有限。当然你如果有能力完
全可以自已在菜单做个更漂亮的控制面板,比起来这里的方法要简单多了。
发表于 2010-5-5 11:01 | 显示全部楼层
终于看完了,没感觉
发表于 2010-5-5 11:02 | 显示全部楼层
看完了
哥也晕了[s:196]
发表于 2010-5-5 13:18 | 显示全部楼层
刚开始就没懂,看到最后还是没懂!
发表于 2010-5-5 15:04 | 显示全部楼层
看懂了点皮毛··
发表于 2023-3-31 10:15 | 显示全部楼层
额,看不太懂啊
回复 支持 反对

使用道具 举报

 Hello,黑武的好机友!回复想偷个懒?点这里: 
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|Archiver|手机版|爱黑武论坛 ( 京ICP备2023028323号 | 京公网安备11011202000270号 )

GMT+8, 2024-12-23 05:33 , Processed in 0.034047 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, ihei5.com

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