轩辕春秋文化论坛 » 设计与修改 » 汉语编程与win32forth关系研究


2007-10-10 21:00 Maxwell
汉语编程与win32forth关系研究

[color=Red]转载请注明[/color]
[color=Blue]轩辕春秋文化论坛设计与修改区 Maxwell
版区链接
[url]http://www.xycq.net/forum/forum-48-1.html[/url]
原帖链接
[url]http://www.xycq.net/forum/thread-152078-1-1.html[/url][/color]
[color=Red]谢谢合作[/color]


  前些天我开了一个帖子,试图向大家介绍一下汉语编程到底是什么样的一门语言,到底有没有它自己宣传的那么神奇,在搜索资料时发现铁血[url]www.tiexue.net[/url]有帖子[url]http://bbs.tiexue.net/post2_2286499_1.html[/url]说汉语编程与一门上世纪60年代发明的forth语言有一定关系,而在该论坛上的汉语编程的某疑似代言人声称汉语编程为完全自主知识产权与Forth没有一点关系。因此花了两天的业余时间研究了一下,取得了一些结果,发出来展现给大家。为了让大家能够自己重复实验,我会尽量将过程写详细一点,如果对我所说内容有质疑的朋友,可以花上半个小时自己验证一下。

1. 相关连接
汉语编程网的连接是[url]http://www.hybcw.com/[/url],但是不知道什么原因,刚才连接上去显示是建设中,希望过段时间能够恢复,毕竟我可不想刚有点眉目网站就关了:titter:
因为汉语编程网暂时无法连接,那么就无法提供下载地址了,不过下载就在网站上的汉编下载栏目中,下载汉编编译器即可,下载文件名是by.rar,解开之后有一个by目录。
刚刚试了一下,汉语编程网站恢复了,汉语编程编译器的下载地址是[url]http://www.hybcw.com/down/by.rar[/url]
汉语编程目前能够下载到的版本为2.03.1920,运行后显示的版权信息如下
[code]Windows(9x,Me,NT,2K) 32位汉语编程系统 Ver 2.03
基于汉语编程核心版本 Ver 1.02
版权所有 (C) 2003-2005 大连.汉编科技(研究院)

        编译时间: 2004年4月10日 12:20
          版本号: 2.03.1920[/code]
由于只使用一个版本的汉语编程,后面的描述中就省掉版本了。

注:有传闻说汉语编程网站的论坛里forth是禁用词汇,不过本人没有去注册帐号试试,有兴趣的可以自己试试,要不赶快可能就改了。:wink:

win32forth是forth语言的一个windows系统下的实现,在铁血网中的帖子有一个简单的比较,用的就是这个win32forth,该forth实现的主页在[url]http://win32forth.sourceforge.net/[/url],在其主页Download's中可以看到
Tom Zimmer's last Win32Forth Version 4.2 Build 671
Our new stable Win32Forth release 6.12.00 (This Version was released on July 14th, 2007).
两项,点击这两项可以得到两个不同的版本,一个是4.2build671,Tom Zimmer似乎是win32forth之前的作者,这应该是他的最后一个版本,另一个是6.12.00是目前最新的稳定版。
为了方便大家,我把直接下载的链接也贴出来
4.2build671
[url]http://nchc.dl.sourceforge.net/sourceforge/win32forth/W32FOR42_671.zip[/url]
6.12.00
[url]http://nchc.dl.sourceforge.net/sourceforge/win32forth/w32f61200.exe[/url]
如果这两个链接下载速度太慢,请登录其主页选择其他镜像下载点。

2. 安装
win32forth4.2和6.12都有安装程序,安装比较简单。汉语编程解压即可使用。

3. wincon.dll
在铁血帖中提到过这个文件,我也是从这个文件入手的。
VC6中有个工具叫做Depends,下面就是Depends查看三个wincon.dll的结果
win32forth4.2
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_70483892fe7d3b3a064dRVWraNJmLCtd.jpg[/img]

win32forth6.12
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_b45ccda4bf3f534604e7XbvbawmeMGVi.jpg[/img]

汉语编程
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_a73b610291d19380eeb5RUZ6jmublfnT.jpg[/img]
铁血帖的朋友说汉语编程是从win32forth中去掉几个函数入口之后形成的,可能那位朋友没有多找几个版本看一下,我觉得这个更像是与4.2差别不大的一个版本,但是可以看到,第1个入口地址与4.2的不同,应该是版本不同造成的。说到版本不同,下面也是一个证据。

由于入口如此的相似,我想这几个dll能否互相替换呢,于是进行下一步实验。
为了方便,我将三个dll文件复制到一起,后缀f4是4.2版,f6是6.12版,hy是汉语编程版。
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_970ec7da2e0e71bd73dcmfKPnJXfJBp2.jpg[/img]
先将三个文件复制到win32forth4.2中,分别使用三个dll后启动WIN32FOR.EXE的结果如下
4.2版
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_623b6e75e8810853de35wOHnRFEeabfc.jpg[/img]

6.12版
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_e6f5956d87b94a32581dfR4X6uzpiTcu.jpg[/img]

汉语编程版
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_2ae57a5a109e6f1281d6s3sm6UCS4GUY.jpg[/img]

然后是win32forth6.12中,由于6.12需要更多的接口,所以4.2和汉语编程的dll调用存在问题,只贴出使用自带dll的截图
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_c7feb4cf024b87b2e2dbVZnxWT25PBAo.jpg[/img]

最后是汉语编程中
4.2版
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_445ea4bc0711289c456eSYkX4KyaAXqv.jpg[/img]

6.12版
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_01cb89e8df0cd9669867h0qJ96CXiMcC.jpg[/img]

汉语编程版
[img]http://www.xycq.net/forum/attachments/month_0710/20071010_5842004cf7bd4e04a233JiLlv75p93Za.jpg[/img]

注意几幅图中画线部分,汉语编程的wincon.dll文件能够被win32forth4.2正常使用,而且读出来的数值与汉语编程环境下一致,都是10895。由于接口改变,4.2和汉语编程的wincon.dll都不能在6.12中使用了。而win32forth4.2版与6.12版的wincon.dll文件都能够在汉语编程环境下使用,而且读出的值都与原环境下一致。综上情况,汉语编程与win32forth在wincon.dll文件上保持了相当好的兼容性,如果说二者一点关系都没有,形成这种结果的几率不知道能有多大。:doubt:
另外汉语编程菜单查看->模板、API列表中有选项可以查看dll中的符号,有兴趣的可以自己看一下,不光数字上是兼容的,还能顺利读取出所有的符号来:titter:
根据接口的变化和常量数量的变化看,汉语编程应该是5.2到6.11.03之间的某个版本的win32forth改的(后来我找到了5.2版win32forth,与4.2版在实验中差别不大,所以没有列出,铁血上的朋友用的是6.11.03)

除了互换之外,再试试缺少这个文件时的表现吧,一试结果还挺有意思
win32forth 4.2版缺少wincon.dll文件时错误提示
[img]http://www.xycq.net/forum/attachments/month_0710/20071011_63f0b5ae2ea39c71ea43jurTtUrOz8GS.jpg[/img]

win32forth 6.12版缺少wincon.dll文件时表现差别比较大,就不贴出来了。

汉语编程缺少wincon.dll文件时错误提示
[img]http://www.xycq.net/forum/attachments/month_0710/20071011_43040b2b35dd24cace21SmjVNCeVA2GG.jpg[/img]

从上面的图看出来,汉语编程与4.2的提示基本一致。这也是巧合吗?:doubt:一个号称汉语的居然冒出一句英文的提示而且还跟别人的如此相似,而且是"Missing procedures!"这种计算机程序中少见的用词以及少见的标题栏中用标点。


4. win32forth与汉语编程乾坤大挪移
前面实现了替换winapi常量的数值,我又进一步想替换画线数值上面的几个数值,中间的过程比较曲折,花了我一些时间,不过取得的成果还是很让人激动的,我也能做出汉语编程来了:victory:

4.1 win32forth 4.2变汉语编程
将汉语编程的win32chp.dll文件复制到win32forth4.2文件夹下并命名为win32for.img,当然之前要备份好原来的win32for.img文件;将汉语编程的ckernel.ovl复制到win32forth4.2文件夹下。然后找一个16进制编辑器,打开win32for.img文件,从偏移4(也就是第5个字节)开始,连续4个字节修改为D5 11 92 01,保存。
[img]http://www.xycq.net/forum/attachments/month_0710/20071011_081e8d7bca66832b02b2uqJL1OzRs9O5.jpg[/img]
双击win32for.exe,猜猜能看到什么?如果你怀疑ckernel.ovl在其中也起了作用的话,可以随便用个什么文件命名为ckernel.ovl甚至是建一个0字节的空文件也没有问题。看截图,带着win32forth 4.2图标的汉语编程。实际上这跟汉语编程的界面还有一个数值不一样,至于怎么变得完全一样,以及测试一下能不能使用,这都留给您自己去做吧。:wink:
[img]http://www.xycq.net/forum/attachments/month_0710/20071011_818c29179b707c1119a2TU8htu0dAzoZ.jpg[/img]
带着win32forth 4.2图标的汉语编程

4.2 汉语编程变win32forth 4.2
将win32forth 4.2的win32for.img文件复制到汉语编程文件夹中,并命名为win32chp.dll,同样,也要备份好原来的那个;将win32forth 4.2的KERNEL.BIN文件复制到汉语编程文件夹中。还是用16进制编辑器打开win32chp.dll文件,从偏移4(也就是第5个字节)开始,连续4个字节修改为DA B7 6E EF,保存。双击win32chp.exe,看到了吧。
[img]http://www.xycq.net/forum/attachments/month_0710/20071011_992fbb42bbda16d9133cbZQ2oiDHCTFn.jpg[/img]
带着汉语编程图标的win32forth 4.2

4.3 结论
结论,呃,还用我来下结论吗?喔,是的,您想起了一个问题,我来回答您:
win32forth4.2的安装文件的日期是2002年4月2日,win32forth5.2的发布日期是2002年5月9日,而汉语编程编译器最早的一个文件日期是2003年5月15日,其版权信息上说明为编译于2004年4月10日 12:20。

说到底,汉语编程应该是这么来的,由于win32forth的源码是公开的(我没注意是按照什么许可协议发布的,6.12似乎是GPL),汉语编程利用其源代码将win32forth字样抹去,并且修改了识别词库文件的标志(将win32forth的D5 11 92 01修改为DA B7 6E EF),编译出可执行程序。然后又根据需要,汉化及添加、修改了词库形成了现在用汉字和一堆全角符号编程的汉语编程语言。可以说汉语编程为了掩盖其与win32forth的关系,将符号修改的很彻底,也不管那一堆全角符号用起来多么古怪。
甚至有可能是汉语编程作者中某位技术好一些的,直接修改了win32forth的某个版本的二进制代码生成的汉语编程,实际上也不难,不过就是抹掉win32forth字样和修改一个符号而已,让我这不懂破解的人来做也不过就是一个多小时的事。:lol:

如果继续研究下去,我想还会掌握更多的证据,甚至有希望根据wincon.dll和winapi词数找到汉语编程使用的那个版本的win32forth,不过目前我觉得这些证据已经足够了,已经不需要再浪费时间了。

4.4 其他
其实汉语编程就是win32forth的一个修改版,实现的功能基本上都是win32forth实现的。把这个东西吹嘘为民族的希望,(以下省略,技术帖,技术帖:sleep:)
汉语编程需要带的ckernel.ovl和win32forth 4.2需要带的kernel.bin文件都是词库(其实就是编译过一次的字节码)的要求,比如要是用汉语编程的编辑器winedit.dll替换成win32for.img的话就不需要带ckernel.ovl了。
注意观察一下汉语编程的各个程序,都是由同名的一个exe文件和一个dll文件组成的,那个dll文件并不是真正的win32格式的dll文件,而是与win32forth 4.2的img仅差一个标志的一种格式;而那个exe文件其实都是可以互换使用的,当然跟win32forth 4.2互换都没有问题。

5. 又一出骗局!
虽然是一出骗局,但也不是像有人认为的那样,欺骗国家经费,按我目前了解的情况,也就忽悠了几个地方政府的一些经费,还好不算太多。汉语编程是公司化运营的,好像主要是靠培训骗学员的钱,从网上可以看到一些痕迹。
汉语编程像谁呢?是汉芯还是麒麟?汉芯吧,虽然假的彻底,但是毕竟都是从技术上面忽悠,不像汉语编程,宣传的那东西一点技术含量都没有,全是假大空。像麒麟吧,不过麒麟好歹还是能用。看起来也就跟传销差不多了,洗脑、假货、骗钱,只是不知道它的学员想退出容易不?:doubt:突然又想起了玩轮子的李大师,好像也差不多,您觉得呢?:sleep:

[[i] 本帖最后由 Maxwell 于 2007-10-15 11:52 编辑 [/i]]

2007-10-10 21:01 Maxwell
保留待用

2007-10-10 21:42 Maxwell
[color=Red]上传附件贴图,主帖贴图出处,勿删。[/color]

[[i] 本帖最后由 Maxwell 于 2007-10-11 10:10 编辑 [/i]]

2007-10-11 14:18 van
你怎么没事研究起这玩意来了?

2007-10-11 14:39 Maxwell
最近“汉语编程”大搞造神运动,忽悠了不少人,我实在看不过了。不过这东西技术含量太低了,我现学现卖都几个小时发现这么多问题。

真是很久不见了,最近忙什么呢?

2007-10-11 15:02 司徒苍月
经鉴定LZ很闲,正招收苦力呢,LZ报名不:titter:

2007-10-11 16:02 Maxwell
先看看什么事情,再说闲与不闲的转换是很频繁的:lol:

2007-10-11 16:16 fantasydog
多汉化基本书倒是真的,汉语编程本身就是忽悠人的东西。

2007-10-11 19:42 Maxwell
[quote]原帖由 [i]fantasydog[/i] 于 2007-10-11 16:16 发表
多汉化基本书倒是真的,汉语编程本身就是忽悠人的东西。 [/quote]

有中文资料的需求就有中文语言的需求,“汉语编程”这个语言是骗人的不代表所有能中文编程的语言都是忽悠人的。

2007-10-11 22:19 fantasydog
第三代编程语言自身就是个两头沾不上的怪胎,非要再搞个中文编程,有什么意义呢?

除非有办法解析1式语言或者0式语言,否则编程语言根本不能被贴上“中文”或者“英文”的标签。它只是另外一种怪异的表达工具,使用了一些英文的符号罢了。

2007-10-11 22:30 Maxwell
:titter:抽象地说的话,你说的很有道理,但是现实不是抽象。

2007-10-12 10:51 van
[quote]原帖由 [i]Maxwell[/i] 于 2007-10-11 14:39 发表
最近“汉语编程”大搞造神运动,忽悠了不少人,我实在看不过了。不过这东西技术含量太低了,我现学现卖都几个小时发现这么多问题。

真是很久不见了,最近忙什么呢? [/quote]

就在这里发帖子ms作用有限啊,不如直接去踢馆吧:titter:
我没事就玩玩C++,研究研究EXE,写写代码什么的,hehe

2007-10-12 11:02 Maxwell
砸场子砸不了啊,据说forth是禁用词汇,我怎么砸:titter:
放在这里也会有用的,总会传播出去的:lol:

看来最近我确实是闲得无聊了:mellow:

2007-10-13 21:22 kingofrpg
专门注册来顶楼主的!:victory:

2007-10-14 15:20 Maxwell
[quote]原帖由 [i]kingofrpg[/i] 于 2007-10-13 21:22 发表
专门注册来顶楼主的!:victory: [/quote]
呵呵,多谢捧场。

2007-10-16 23:19 lazyman
嗯~~~WORD -> "词" 和Dictionary -> "词典"这都是Forth的专有名词...果然

2007-10-16 23:52 kingofrpg
我测试过,可以用的!

2007-10-18 09:41 Maxwell
[quote]原帖由 [i]kingofrpg[/i] 于 2007-10-16 23:52 发表
我测试过,可以用的! [/quote]


你可有万大仙的那个3D程序?我看看到底有什么难度。

2007-10-18 10:31 aosee
终于明白了!谢谢!

2007-10-18 17:48 tintin412
楼主分析的真是精辟,本来刚看到汉编还真是脑袋上冒了点汉。不知道楼主对澳大利亚的普天语言是否了解?那个好像主要是针对非英语母语国家的人开发的,据说23种语言互译。汉语方面的普天语言也快进入中国了。是不是澳洲的能好一些啊?

2007-10-19 08:36 Maxwell
这个不太了解,基本上我会的语言很少。这种非主流的语言如果真有价值也会在一定范围内流传的。

2007-10-20 10:50 Maxwell
再来一个非主流语言:titter:

发布仿照汉语编程语言的汉语骗程语言
[url]http://www.xycq.net/forum/thread-152903-1-1.html[/url]

2007-10-23 17:28 kingofrpg
[quote]原帖由 [i]Maxwell[/i] 于 2007-10-18 09:41 发表



你可有万大仙的那个3D程序?我看看到底有什么难度。 [/quote]

我只有VC的,Forth的你去参考下Win32Forth6.12的chess程序。

2007-10-23 18:44 Maxwell
[quote]原帖由 [i]kingofrpg[/i] 于 2007-10-23 17:28 发表


我只有VC的,Forth的你去参考下Win32Forth6.12的chess程序。 [/quote]


我是说那个马甲做的那个程序,拿过来看看什么样子,给它做个一样的。

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.