关于Symbian下启动J2ME程序
2010-05-19 18:30:00 来源:WEB开发网今天大致研究了下symbian下启动J2ME程序的方法,结论是想不安装Jar包运行程序,非常有难度。说下今天的研究过程:
安装后启动的方法很简单,我就不说了。我看了下Jar包安装后的E盘,在Private102033E6MIDlets目录下多了一个名字是数字的文件夹,里面有两个文件夹,一个就是我们的Jar包,比对了下大小一模一样,另一个叫uids,用UE打开来一看可以发现其实就是两个UID。
接着装了一个任务管理器,发现启动每一个J2ME程序的时候都会起来一个叫hmidps60v31.exe的程序,猜测这个就是KVM程序。RApaLsSession 启动的方法就是传fakeapp的uid给这个程序,然后这个程序根据uid去启动相关的Jar包,那个uids可能起了两边接头的作用。且据说Jar包在安装前是没有uid的,安装的时候才会随即分配一个。
然后我用了破解助手,将z:\sys\bin\hmidps60v31.exe复制了出来,用elftran工具dump了下头信息,发现它就是个e32格式的可执行文件。虽然之前做过e32格式的动态链接库的解析加载,也同样可以用于解析可执行文件,但是对于如何加载却没有头绪,它也没有 Export函数。于是就变成了两个问题:1、如何去启动一个e32格式的可执行文件 2、如何传参数进去给这个可执行文件来让它运行特定的Jar包。
第一个问题是我一直感兴趣的话题,如果成功就可以做彻底插件化的软件了,作为商用软件的话技术含量就相当高了。因为加载动态链接库目前我只想到解决不用签名便可自更新升级的用途,除此外感觉挺受限的。至于第二个或许可以用RApaLsSession调用命令行程序传参数,但完全不知道怎么写啊,没有资料,而且这个大概也必须是在已经安装过的前提下才行的。还有种途径就是研究下Jar包安装的源码,看看会注册哪些东西,自己能否模仿伪造之。
就算上面两个问题都成功了,还涉及到权限的问题吧,如果hmidps60v31.exe这个文件本身就被加了保护,那这条路也死了。
所以静默安装是目前较为理想的替代解决方案了。
以上,大部分都为自己的猜测,若比较小白则尽请见谅。
更多精彩
赞助商链接