深度剖析E680I/G应用[转贴]

深度剖析E680G应用一 所谓的Loader

一、写在前面的话

E680G,已不能简单理解为手机,而是一台实实在在运行Linux操作系统的个人掌上电脑! 本文试图通过探讨E680G操作系统的架构,打造个人PDA,扩展其强劲的功能。
由于本人也刚接触E680G不久,再加上Linux知识空白,文章深度也许还远远不能达到分析Linux内核源码的层次,所以我加上了应用二字,足以说明是面向广大普通用户的。对大多数人来讲扩展应用软件才是主要的内容。
此外本文所涉及内容皆不需要进行刷机,这对新手来说更容易接受罢。

二、进入正题

进入正题前还想说几句废话:首先,那就是砸锅卖铁也得要买块扩展卡来,最好是1G的,否则就那点手机内存空间也没有玩的必要了!其次,说明书必须认真阅读,基本操作都不知道,又如何谈得上玩转?

三、探究Loader

A.安装程序
只要你上了E680论坛,你可以看几乎无所不在的L/M!说实话,Loader只不过是别人写的一个简单脚本,几行代码而已。可对刚入手E680g的人来说是很神秘的,纯粹去研究Loader也没有意义,然在我们一步一步探个究竟的过程中,你会发现自已的DIY能力却提高了很多。
Loader的安装程序有两种,一种安装在手机,另一种安装在卡上。一般是个mtf文件如:Loader_E680i_phone.mtf(手机) Loader_E680i_SD.mtf(SD卡)。
扩展名为mtf的文件可以直接被E680g执行。(再废话点,复制到手机或者卡上点下该mtf文件就可以执行了。)
mtf文件的本质是linux下tar包的压缩文件!不明白不要紧,可以将上面文件下改名为Loader_E680i_SD.tar.gz ,用winrar解压缩,就可以看到一些文件。(有兴趣可以看下Linux下tar,gunzip等相关shell命令的用法,那样就会更清楚了。)
不管你是从哪里下载的Load安装程序,这个目录结构肯定都是一样的!
如果mtf在E680G下运行,就是直接解压缩到手机Linux操作系统环境下的对应路径。
用卡版的Loader_E680i_SD.tar.gz为例,它其实就是解压成如下文件:
/mmc/mmca1/.system/java/PlugCardDB
/diska/.system/QTDownLoad/loader/loader.desktop
/diska/.system/QTDownLoad/loader/loader.lin
/diska/.system/QTDownLoad/loader/loader.gif
/diska/.system/QTDownLoad/loader/loader_sm.gif
手机版Loader_E680i_phone.tar.gz路径肯定是有所不同的,以下是手机版解压的对
应文件:
/ezxlocal/download/appwrite/am/InstalledDB
/diska/.system/QTDownLoad/loader/loader.desktop
/diska/.system/QTDownLoad/loader/loader.lin
/diska/.system/QTDownLoad/loader/loader.gif
/diska/.system/QTDownLoad/loader/loader_sm.gif
可以看出卡版和手机版的唯一区别是有个DB不同!
在E680G上也存在这两个文件,PlugCardDB和InstalledDB,存放外部程序(系统自带游戏,自户安装的软件)的配置信息。PlugCardDB存放安装在卡里的程序信息,而InstalledDB存放安装在手机里的程序信息。
在E680G开机或者更改菜单顺序时会读取这两个DB文件来刷新菜单显示。这两个文件都是文本格式,可以用UltraEdit打开。

B.配置文件
我们先打开Loader安装程序的这两个文件,会发现InstalledDB除了一项关于Loader的配置内容还有其他一些内容,而PlugCardDB只有一项关于Loader的配置内容。这是因为做安装包的人已经把手机自带的游戏配置信息也写到InstallDB里了。
以下是卡安装版的Loader配置信息(PlugCardDB),手机版的Loader配置信息也差不多的。
[AppLinkInfo]
AppLinkCount = 100000001

[AppLinkRecord100000001]
AllPosition =
BigIcon = loader.gif
Directory = ../../../../diska/.system/QTDownLoad/loader
Exec = loader.lin
Group = 5
Icon = loader_sm.gif
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = Loader
OsVersion =
Position = 17
Rotation =
Shared = 0
Size = 10K
Type = 2
uid = 100000001


[MimeInfo]
MimeCount = 100000000
你可以去你手机卡上看到这个PlugCardDB文件,亲自对比一下。不过如果你还是新手还不会telnet的话,那样也没关系。大容量模式连接电脑,可以在卡那个盘符,路径为.system/java/下找到PlugCardDB文件。
下面我们列表详细说明下这个配置文件的主要内容。
AppLinkCount = 100000001 安装的程序最大序号
AppLinkRecord100000001,uid = 100000001 应用程序的安装序号,不重复即可。
Directory 应用程序所在路径。
BigIcon = loader.gif,Icon = loader_sm.gif 应用程序显示在菜单上的大图标和小图标。
Exec 所执行的应用程序或脚本
JavaId 如果是Java程序 则为正值,否则为-1
Group =5 前4个是手机系统的Group,5,6是自定一,自定二
Position,AllPosition 显示在菜单上的顺序
Name 应用程序名称
Type 内容很重要,下面详细说明。

系统指定Java程序Type=5,其他应用程序Type=2。(你也可以设为0,3,4,6至于效果可以自行尝试。)这里需要着重说明的是,Type=2时Directory的路径需要回退到顶级目录,前面须要加../../../../,因为两个DB文件都是在四级目录以下,否则系统不能识别。这里还有个著名的问题,就是当Type=2时,系统不管配置信息如何,菜单全部显示“应用名称”!让人比较郁闷。这问题虽然可以通过刷机解决,然而却是没有太大意义,因为就装MPKG的本身而言,其实也没什么必要。(后面会详细说明)

C.Loader小结
读到这里,我们可以得出清晰的结论:所谓Loader的安装过程,只是把loader这个文件夹复制到手机的某个目录,同时覆盖掉InstallDB(手机版)或者PlugCardDB(卡版)文件,即把这个目录程序的配置信息加到DB文件中。
所以在安装后,自己安装的JAVA软件肯定不在了,在InstallDB或者PlugCardDB已经没有了那些软件的配置信息了。
Loader根本没有必要装在手机上!可以完全抛弃mtf安装的方法,直接复制Loader文件夹至卡的任一路径。(记住要是标准路径,不是你大容量的路径。配好telnet,或者装个Qonsole一下就清楚了。)在PlugCardDB文件中手工加入配置信息即可。

D.Loader是什么
那么我们为什么要装Loader,他有什么用。UltraEdit打开loader.lin文件看下。
熟悉Linux的一看就知道,太简单了!只是普通的一个Shell脚本,而起作用的就是exec这句话。比如用test.sh用Loader关联打开,系统Shell启动Loader,执行到exec时,就相当于exec test.sh。(如果不明白可以查看下Linux下相关Shell的脚本介绍。)
按理来说,在Linux在执行这种脚本是天经地义的事,只不过在E680g图形化界面下是不能直接运行的。
那怎么办?下面通过自定义Loader例子说明。
你随便写个脚本test.sh如下:

#!/bin/bash
cd /usr/SYSqtapp/mystuff
./mystuff

这个是启动系统收藏夹的命令。再写个test.load脚本:
#!/bin/bash
exec "$2" &

在卡上建个文件夹如/mmc/mcal1/test,把test.sh,test.load两个脚本复制过去,先在手机上点击test.sh,肯定会显示找不到可执行的程序,这时在PlugCardDB配置信息加上如下内容:
[AppLinkRecord100000001]
AllPosition =
BigIcon =
Directory = ../../../../mmc/mmca1/test
Exec = test.load
Group =
Icon =
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name =
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000001

(注:依情况更改AppLinkCount和AppLinkRecord,上面配置略去了很多次要内容,只保留必要的。)保存后,更改下菜单的顺序,会发现有个感叹号的应用程序,不用管他,那是因为我们没有指定菜单的图标!这时选择test.sh,然后用那个感叹号的应用程序打开,就会发现成功打开了收藏夹!我们自已的Loader也成功了!
看到这里,Loader的本质想必应该十分清楚了吧。

五、结束
理解的本文的Loader,再讲MPKG,就简单多了。下一篇主要分析MPKG的相关软件。

 

******************************************************************************************************************
深度剖析E680G应用二.MPKG

一、补充说明

上文已完全分析了Loader的实质,试想自已写个Loader脚本,不管是卸载还是扩展都是很轻松的事。这里还需要补充说明一下,上文提到Shell脚本在E680g图形化界面下是不能直接运行的。这里有两种办法,一种通过关联Loader脚本运行,另一种可以直接配置到系统菜单里解释运行,这时便于Loader没有任何关系。
Loader的作用只是方便于在图形化界面下关联运行Shell脚本。
修改PlugCarDB或者InstalledDB需要重新更改菜单顺序,系统是把配置数据载入内存再进行处理的。

二、通过USB实现Telnet

要继续深入下去,不谈Telnet是完全不可能的事,Telnet可以看到手机操作系统的完全目录!可以执行Linux很多有用的Shell脚本,DIY也才算真正开始。
如何实现,网上这类文章也是比较泛滥!下面只简单说明一下。可以去友人网,www.e680.net等这类网站去查看详细说明。

1.写个脚本文件,名称随意,比如usb.lin,复制到手机上卡上任意地方。
#!/bin/bash
echo MotNet > /proc/motusbd
2.准备Moto E680 的 USBNET 驱动
3.Modem方式USB连接电脑,安装好驱动
4.选择usb.lin打开方式,用Loader应用程序打开
5.telnet 169.254.142.2 输入root,回车,这时直接在电脑路径里输入\\169.254.142.2\system,即可访问所有文件。

三、MPKG是什么

坛子上说:运行扩展名为MPKG程序,需要安装MPKG。
至于大家所下载mpkg安装程序,只是shell高手自个写的安装脚本罢了。安装程序过程是怎么样的?说白了就是复制文件嘛,管你是Windows还是Linux!
而那些扩展名为mpkg文件是和mtf文件是一样的,还是Linux下tar文件包的gunzip压缩包,格式就是.tar.gz。MPKG安装也是差不多的意思,一样的解压缩,所不同的是,还需要修改InstalledDB或者PlugCardDB这两个文件,为的是让我们能在菜单上直接看到嘛。

以友人网GMS提供的mp3播放器的mpkg文件为例!
下载地址:http://play.younet.com/view.php?tid=15040
找到19425526.mpkg文件,改名19425526.tar.gz,解压缩出mp3player文件夹,把这个文件夹复制到手机上,找到mp3player文件夹里的mp3player,这个是linux下的应用执行程序。(关于Linux下文件类型的,还是需要找些资料熟悉一下,连应用程序是哪个都不知道的话,也就无语了。)长按这个文件,打开方式选择Loader应用程序。你会发现播放器运行没有任何问题!
思考下,原来什么mpkg安装,搞得只是让我在菜单上看到罢了,我复制过去就可以直接运行,又何必再费事。不过也有问题,没有快捷方式啊,总不能每次找文件夹吧。建立快捷方式可以写个这样的Shell脚本,可以命名为mp3.lin。打开方式用Loader脚本关联,这个文件不管在哪个位置,只要一点击就会执行。内容如下:
#!/bin/bash
#系统的环境变量
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_F "mp3player" | grep -v grep
then
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertExistFile
else
cd /mmc/mmca1/Soft/mp3player
./mp3player
fi

mp3_close.lin

#!/bin/bash
Moto_AlertProcess='/usr/SYSqtapp/phone/alertprocess'
Moto_AlertKillFile='/mmc/mmca1/Soft/public/kill.wav'
Moto_AlertNoFile='/mmc/mmca1/Soft/public/no.wav'
Moto_AlertInfoFile='/mmc/mmca1/Soft/public/info.mid'
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertInfoFile
if ps -ef | grep "mp3player" | grep -v grep
then
start-stop-daemon --start --exec /bin/kill ` pidof mp3player `
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertKillFile
else
$Moto_AlertProcess -playvol 5 -playfile $Moto_AlertNoFile
fi

PlugCardDB中关于loader和shortcuts的配置信息

[AppLinkRecord100000001]
AllPosition =
BigIcon = liwei.gif
Directory = ../../../../mmc/mmca1/Soft/liwei
Exec = liwei
Group = 5
Icon = liwei_sm.gif
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = liwei
OsVersion =
Position = 17
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000001
[AppLinkRecord100000002]
AllPosition =
BigIcon = big.png
Directory = ../../../../mmc/mmca1/Soft/shortcuts
Exec = shortcuts.sh
Group = 5
Icon = sm.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name =
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000002

******************************************************************************************************************

深度剖析E680G应用三.目录结构

一、前言

本文主要介绍E680g系统应用相关的重要文件和目录。考虑到没有Linux背景的用户,每步操作皆列出完整命令。
还有,很多情况下不能直接在手机上直接更改文件,文件夹。需要复制到电脑上,修改完再复制替换回去。

二、目录列表
telnet进手机(这里使用的是蓝牙串口连接的无线telnet),键入ls -al,回车,如下所示:

drwxr-xr-x 1 root root 420 Aug 25 22:42 .backup
drwxr-xrwx 1 root root 684 Jan 1 1970 bin
drwxr-xrwx 1 root root 3440 Jan 1 1970 dev
drwxrwxr-x 11 ezx ezx 16384 Jan 1 1970 diska
d---rwxr-x 1 ezx ezx 0 Aug 28 20:14 diskb
drwxr-xrwx 1 root root 792 Jan 1 1970 etc
drwxr-xr-x 1 root root 1 Mar 10 16:42 ezxlocal
drwxr-xrwx 1 root root 20 Jan 1 1970 home
drwxr-xrwx 1 root root 824 Jan 1 1970 lib
drwxr-xr-x 1 root root 20 Jan 1 1970 mmc
lrwxrwxrwx 1 root root 9 Jun 25 12:45 proc -> /ram/proc
drwxr-xr-x 1 root root 0 Jan 1 1970 ram
drwxr-xrwx 1 root root 752 Jan 1 1970 sbin
lrwxrwxrwx 1 root root 8 Jan 1 1970 tmp -> /ram/tmp
drwxr-xrwx 1 root root 336 Jan 1 1970 usr
lrwxrwxrwx 1 root root 8 Aug 22 13:59 var -> /ram/var

包括了很多熟悉的Linux目录,在这里我们只分析与我们应用有关的目录文件。

三、主复位与主清除

实际上,E680G的主复位与主清除的脚本就在/.backup下。/.backup下的文件是专供用于手机恢复出厂设置的文件。
cd /.backup
ls -al

其中包括下面三个脚本文件:
-rwxr-xr-x 1 root root 2902 Jan 1 1970 masterclear_doc.sh
-rwxr-xr-x 1 root root 8795 Jan 1 1970 masterclear_hat.sh
-rwxr-xr-x 1 root root 442 Jan 1 1970 masterreset_hat.sh

masterclear_doc.sh 用于主清除后恢复手机上diska目录
masterclear_hat.sh 用于主清除后恢复手机上ezxlocal目录
masterreset_hat.sh 主复位脚本

如果用UltraEdit打开,内容便一目了然。以下是写给对Linux Shell不是很熟悉人。

1.masterreset_hat.sh
主复位命令,只不过是删除/ezxlocal/download/appwrite下setup和NetProfile下的配置文件罢了(除了ezx_airsync.cfg和ezx_provision cfg)!

2.masterclear_hat.sh,masterclear_doc.sh
这两个脚本只是做主清除后的恢复,但由此可见,我们用户平常操作只是手机下面三个目录。这也是通过这几个脚本获取的最有用信息!
/diska 手机大容量连接电脑后能看到的内容
/ezxlocal 存放用户几乎所有配置信息的地方
/mmc 扩展卡,如果你没买,那肯定这个目录下就没有内容了


四、/diska目录

这个文件夹下的内容都可以删的。
ls -a 会显示如下内容:
. .check .system MyImages MyPrograms preload
.. .preload MyAudio MyNotes MyVideo
目录说明

. 表示当前目录
.. 表示上一级目录
MyImages MyPrograms MyAudio MyNotes MyVideo preload 没什么好说,即使你删了,“我的收藏”还会建的。
.preload 包含了所有E680G的内置JAVA游戏和游戏配置文件。如果想彻底删除游戏必须要把这些文件一并删除,光在菜单图标中卸载,游戏文件还是存在的。
.system 主要是包括用户自已安装在手机的Java软件(.system/java),还有MPKG软件(.system/QTDownLoad),及其他的email,彩信之类。

文件说明

/diska/.preload/ConfigDB 虽然这个文件可以随意删除,但作用很重要。
其中记录了手机主菜单的位置分组信息和文件关联打开的信息。下面对比文件内容详细说明。

[AppConfigInfo]
AppConfigCount = 39 ---> 应用总数量


[AppConfigRecord10] ---> 应用列表
AllPosition = 9 ---> 显示全部时的菜单位置
AppUid = 68 ---> 系统内部使用的应用标志(唯一)
GroupUid = 3 ---> 1办公,2娱乐,3工具,4应用...
Position = 5 ---> 在当前组的位置
uid = 10 ---> 与应用标志对应,我估计不
对应也没事,只要按顺序来就行


[AppConfigRecord11]
AllPosition = 4
AppUid = 105
GroupUid = 2
Position = 4
uid = 11

...

[MimeConfigInfo]
MimeConfigCount = 1 ---> 应用程序关联数目


[MimeConfigRecord1]
AppUid = 100000001 ---> 应用程序标志
Mime = lin ---> 扩展名
uid = 1

可以这个应用程序关联的是lin文件用应用程序100000001打开,自然是我自已配置的Loader了。
五、/ezxlocal目录

从主清除得到信息就知道/ezxlocal目录十分重要!而且这个目录有大小限制不可超过3M,否则后果很难说,死机,无法开机...一切皆有可能~

这个目录下多半是空文件夹,或者内容比较简单,这里简要说一下。重点还是一会讲里面的配置文件。

/ezxlocal/sysDatabase 用户电话本,短信等内容
/ezxlocal/download/appwrite 用户配置信息
/ezxlocal/download/appwrite/setup 主要的用户配置信息
/ezxlocal/download/appwrite/phone 未接来电,已接来电之类的信息
/ezxlocal/download/appwrite/NetProfile

【文件说明】

1. /ezxlocal/download/appwrite/.realplayer.list
系统自带realplayer使用的列表文件,内容不再细说了,比较简单。
2. /ezxlocal/download/appwrite/am/InstalledDB
装在手机上所有Java和MPKG软件的配置信息,实际上我们毫无必要把软件装在手机上,这个文件实际并无太大用处。在我的手机上这个文件就几个字节!
3. /ezxlocal/download/appwrite/setup 我看到这下面数量众多的cfg文件!
我还没有耐心到一个文件一个文件讲解的程度,何况这个配置文件都是比较简单的。不行就查查金山词霸,我只选三个文件简单解释一下。

/ezxlocal/download/appwrite/setup/ezx_camera.cfg
相机的配置文件,内容如下:
[photo]
name = photo
nameType = 0
nextSaveNum = 1
quality = 2
saveToFolder = /diska/MyImages
secondSound = 0
shutterSound = 0
size = 2
[video]
name = video
nameType = 0
nextSaveNum = 1
quality = 2
saveToFolder = /diska/MyVideo
secondSound = 6
shutterSound = 5
size = 1

photo是照相,video是摄像,改保存路径就是saveToFolder,改拍照声音就是shutterSound(要无声的话自已填个8,9让系统找不到就行了)。

/ezxlocal/download/appwrite/setup/ezx_idle.cfg
主屏快捷方式的配置文件,内容如下:
[agent]
GWIP = 0.0.0.0
GWPort = 0
MGURL = http://brwtest.vicp.net:8080/DpPrototype/4g/
PROFILE = 连接互联网
[dynamic]
animationSpeed = 1
download = 1
dynamicIdle = 1
[static]
nextEvent = 0
shortcut_1 = 81
shortcut_1_freeze = 0
shortcut_2 = 77
shortcut_2_freeze = 0
shortcut_3 = 61
shortcut_3_freeze = 0
shortcut_4 = 91
shortcut_4_freeze = 0
shortcuts = 1

shortcut_1,shortcut_2,shortcut_3,shortcut_4就是后四个快捷方式。对应着应用程序的标志,还记得上面说的/diska/.preload/ConfigDB吗?就是ConfigDB里的应用程序标志,而且这些标志在手机的所有配置文件都是一致的。
这里也同样被改为我的收藏81和设置77了。

/ezxlocal/download/appwrite/setup/ezx_realplayer.cfg
RealPlayer的配置文件,有这段内容:
[MediaLimitationItem]
MaxNumOfBookmark = 20
MaxNumOfHistory = 20
MaxNumOfItem = 500
MaxNumOfList = 7
MaxNumOfMediaFile = 500

哦,MaxNumOfItem已经被我扩大到500了,那个列表的最大文件数量。

六、/mmc/mmca1目录

就是我们的扩展存储卡了。/mmc/mmca1/.system包含着安装在卡的软件和配置信息了。这里我只想再稍微说一下/mmc/mmca1/.system/java/PlugCardDB这个配置文件。都快讲烂了~

看一下内容,这里的[MimeInfo]就没用了,上面说过是关联信息。这些参数太熟悉了,自已再挖掘吧。《深度剖析E680G应用一.所谓的Loader》说明过这些参数!完全必要的除了AppLinkRecord,uid只是Directory,Exec,Type几个而已。

[AppLinkInfo]
AppLinkCount = 100000034


[AppLinkRecord100000001]
AllPosition =
BigIcon = liwei.gif
Directory = ../../../../mmc/mmca1/Soft/liwei
Exec = liwei
Group = 5
Icon = liwei_sm.gif
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = liwei
OsVersion =
Position = 17
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000001


[AppLinkRecord100000002]
AllPosition =
BigIcon = big.png
Directory = ../../../../mmc/mmca1/Soft/shortcuts
Exec = shortcuts.sh
Group = 5
Icon = sm.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name =
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 2
uid = 100000002

******************************************************************************************************************

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

一、前言

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

二、原理

其实很简单,在E680上就可以直接安装管理MPKG程序,只是在E680i,E680g版
本中居然被屏蔽了,不过幸好大家发现功能的开关就在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位一组加上序号,内容如下:

A B C D E F G H

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位)更改后,把对应二进制数值
转换为十进制。显示的文件内容如下:

A B C D E F G H

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写入新文件。下载地址兼中文说明,大家可以去看一下。
club.***/nclub/topicdisplay.aspx?pageno=1&boardid=1189&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的朋友,这里提供了我用过的打包文件,可以去友人网下载。

play.younet.com/view.php?tid=18578

四、小结

如果你细心看过,现在肯定比较爽了~
我随手安装了个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_F MYSTUFF_DATA_PATH=/mmc/mmca1/exe/app

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

其他几个sh都差不多,只是路径不同罢。而这些路径就是存放一些MPKG
的运行脚本。这样做的目的,就是考虑菜单资源有限。当然你如果有能力完
全可以自已在菜单做个更漂亮的控制面板,比起来这里的方法要简单多了。

 ******************************************************************************************************************
深度剖析E680G应用五.Telnet与主题

一、前言
这两方面的内容比较少,而且网上资料也很多,毕竟E680上市都两三年了,再怎么写恐怕少不了拾人牙慧。所以这才做一些总结,本来这应该在介绍Loader之后就详细介绍。相关下载文件,可以访问友人网。
http://play.younet.com/view.php?tid=18578

二、Telnet
E680G本身提供了大容量模式和Modem模式两种方式连接电脑,此外还可以通过读卡器读取E680G的扩展卡(MMC/TF/SD)之类。但是不管什么方式,都不能完全浏览手机操作系统的文件。这时我们就需要telnet来解决问题。

Telnet是远程登录的一种程序,它可以让您的电脑通过网络登录到网络另一端的电脑上,甚至还可以存取那台电脑上的文件。

具体详细的方法如下:

1.安装配置Loader
参见《深度剖析E680G应用一.所谓的Loader》
2.下载USBLIN.rar文件,解压缩出usbnet.lin文件,并复制到扩展卡上。

其实就是如下内容:
#!/bin/bash
echo MotNet > /proc/motusbd

3.下载Windows下USBNet的驱动,随便解压缩到电脑哪个位置。
4.手机设置成Modem方式连接电脑后,用Loader关联打开USB.lin。这时电
脑会提示安装驱动,把路径指向USBNET.rar的解压路径。
5.在命令行输入telnet 169.254.142.2,提示了一些信息之后,会要求输入用户名密码。 这时输入root用户名,密码为空。回车确认!会出现#的提示符,这里就是Linux环境了。
并支持常用Shell命令。
6.打开一个浏览器窗口,在地址栏直接输入\\169.254.142.2\system,就可以看到手机
里面所有内容了。
四、主题
下载口碑很好的主题就不用担心死机之类的问题!一般来说切换的新安装主题,画面没有异常现象就不会导致死机并且开不了机。
安装主题就是复制一些主题文件到手机上。
主题文件可人为划分为主题配置文件和主题资源文件。配置文件都很小,几百字节。资源文件相对就大多了。

主题配置文件(通常扩展名是dhm,phm)须放在/ezxlocal/download/appwrite/setup下,
这样在配色方式就可以看到新主题。这是文件的配置内容。

[THEME_CONFIG_TABLE]
ThemeIconDir = /diska/preload/themes/maiter/
ThemeName = Maitersoft Vista theme for Moto E680i
ThemeWallpaperFile = /diska/preload/themes/maiter/maiter.jpg
ThemePowerDownImage = /diska/preload/themes/maiter/maiter_off.gif
ThemePowerUpImage = /diska/preload/themes/maiter/maiter_on.gif
ThemeTextSize = 0
ThemeSkinFile= /diska/preload/themes/maiter/maiter.skn
ThemeLogoIcon = /diska/preload/themes/maiter/maiterlogo.jpg

[THEME_COLOR_PALETTE_TABLE]
ThemeBase = 0 0 0
ThemeBrightText = 0 0 0
ThemeButton = 0 0 0
ThemeButtonText = 255 255 255
ThemeForeground = 0 0 0
ThemeHighlight = 179 179 179
ThemeHighlightedText = 20 20 20
ThemeText = 0 0 0

主题资源文件放的位置就随意了,不过需要于配置文件对应。包括.ezx,.skn
和开关机画面,主题Logo,主题墙纸。
根据主题资源文件的位置不同,就延伸出不同的叫法。
内存版:主题资源文件放在/ezxlocal下 显然有3M的限制,其他没有任何问题
手机版:主题资源文件放在/diska下,不怕多了会死机之类,但是显然不能大容
量连接电脑了。
卡版:主题资源文件放在/mmc/mmca1下,也不能大容量连接,更不能弹出SD卡。
这里推荐放在/diska下,大容量连接电脑其实没什么用。



******************************************************************************************************************

 

转载于:https://www.cnblogs.com/madgoat/articles/610066.html

你可能感兴趣的:(shell,java,操作系统)