易码技术论坛

 找回密码
 加入易码
搜索
查看: 501151|回复: 31

如何通过 lava判断文曲星型号

[复制链接]
发表于 2006-4-12 17:48:00 | 显示全部楼层
不可以。因为LavaX虚拟机可运行于许多非wqx机器。
 楼主| 发表于 2006-4-12 17:56:00 | 显示全部楼层
哪能不能获得一些硬件标识
发表于 2006-4-12 17:59:00 | 显示全部楼层
不能
发表于 2006-4-12 20:16:00 | 显示全部楼层
如果只针对文曲星的话,GVmaker是可以的.

GVmaker的*运算符(地址取值/赋值运算符)并没有对所取地址限制.而且文曲星在运行.lav文件之前是先把GVmaker解释器装载入RAM的.

    所以,可以很方便的用该运算符去得到GVmaker解释器的任何信息,当然就可以判断出该文曲星的型号!

    事实上,针对当前已有的LAVAX运行平台,可以很容易的写一个判断当前运行平台的函数,包括电脑端的虚拟机.最简单的是先判断_TEXT这几个值(在电脑端虚拟机及TC800,_TEXT和文曲星是不同的),然后如果不是电脑端虚拟机或TC800,就可以用*取得GVmaker解释器的信息进行判断.

    如果懂6502汇编的话,很容易可以在6502芯片的文曲星中的GVmaker中嵌入汇编,直接用*(地址赋值)改变GVmaker解释器的跳转地址就可以!

    当然,上述操作可能造成失去跨平台性(也不是一定会).
发表于 2006-4-13 09:55:00 | 显示全部楼层
滥用*操作的程序无法通过LavaX验证。
发表于 2006-4-13 11:48:00 | 显示全部楼层
呵呵,我只是讲讲怎么实现楼主的目的.

如果你做程序的目的是为了在更多的LAVA虚拟机上运行,那么最好不要用我将的方法.

但如果你想让GVmaker有更强劲的功能,那么试试在里面嵌入汇编也是不错的方法.

而且滥用*操作的程序无法通过LavaX验证。也未必.至少现在的Lavax认证机还不是那么智能,只要用一些简单的方法就可以欺骗它通过认证.
发表于 2006-4-13 11:51:00 | 显示全部楼层
说话前最好先仔细调查一下吧。

超范围的地址读写会立即被虚拟机发现!


发表于 2006-4-13 12:04:00 | 显示全部楼层
楼上讲的没错,但程序运行前可以先判断该虚拟机所在平台,再让其执行不同的代码!

比如:

#define NC3000     1
#define OTHER      0
int jiXing(){
    return  OTHER;
}
void main(){
    if(jiXing()==NC3000){
       memset(0x8000,0,100);
       printf("Haha...");
    }
    else{
       printf("Nothing..");
       getchar();
    }
}

是可以通过LAVA ALL认证的!
发表于 2006-4-13 12:15:00 | 显示全部楼层
楼上的代码没看出来有什么用处!

怎么判断该虚拟机所在平台?!
发表于 2006-4-13 12:32:00 | 显示全部楼层
ok,稍等.

弄个判断机型的程序出来,为简单起见,判断的平台只包括 GVmakerIDE 带的虚拟机,LAVAX3.1IDE(版本3.1.0.050703)的虚拟机,TC800的虚拟机,以及NC3000的GVmaker解释器.
发表于 2006-4-13 12:35:00 | 显示全部楼层
等待中....

先去吃饭去
[em01]
发表于 2006-4-13 13:02:00 | 显示全部楼层
[attachment:5824]
Ok..

通过LAVAX3.1IDE带的认证机的LAVA ALL认证,可以判断GVmakerIDE,LAVA3.1IDE,TC800,NC3000这几种不同虚拟机.
见下下下贴!
发表于 2006-4-13 13:08:00 | 显示全部楼层
不过上面程序在静态认证时会提示"含有非跨平台指令_TEXT",其实可以稍做修改去掉这一提示.
发表于 2006-4-13 13:24:00 | 显示全部楼层
用_TEXT等取消的指令来判断吗?

这个恐怕不算数吧。因为已经不符合LavaX3.0规范了。
发表于 2006-4-13 13:41:00 | 显示全部楼层
还真是服了楼上!

好吧,我再写个静态认证通过"全平台适用的"程序.

[attachment:5825]

好了,这个问题到此为止,事实上楼主的问题我已经解答的很详细了.

14135_40336_5825.rar

1 KB, 下载次数: 646

发表于 2006-4-13 14:02:00 | 显示全部楼层
“到此为止”?态度好强硬啊?

既然这样,我也懒得答理了。。。
[em37]
 楼主| 发表于 2006-4-15 18:36:00 | 显示全部楼层
[建议]

可以弄个判断机型的系统函数,方便开发人员



signature:

http://www2.pkuschool.edu.cn/yanjin/
发表于 2006-4-16 14:01:00 | 显示全部楼层
是啊,

对了,TC800的GetPID函数怎么用?

好象这个函数可以判断哦
发表于 2006-8-1 09:12:59 | 显示全部楼层
GetPID是3.0的函数,其他机器不能用的!~用了估计会死机,我没试过的哈哈!
老帖了,翻出来~
发表于 2006-8-1 12:27:19 | 显示全部楼层
那个3.0目前对于WQX是没有限制力的。
楼主问的是文曲星,所以不必提3.0...

就算数到Tc800,也不是3.0吧=.=
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-8-24 02:17 , Processed in 0.017218 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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