《超脑黑客校对版作者疯狂小强》第83/659页


  “那咋办?岂不是做了无用功了?”
  就算是林鸿改造的这个烧录器能起作用,但是没有相应的软件与之配套使用,那也是白搭。
  “让我想想,我有几个朋友懂编程技术……不过他们大部分都是改改游戏什么的,做对编程器这种底层编程应该不太擅长……”
  顾伟嘴中念念有词,正在寻思着该找谁过来帮忙编写这个程序。
  而这个时候,林鸿已经做在了计算机前,开始进入BASIC编程状态编写起来。
  CP/M操作系统虽然是基于Z80的,但是BASIC编程却是和苹果的DOS基本相同。
  顾伟听到耳边霹雳啪啦的键盘响声,转头看到林鸿正在操作计算机,于是惊讶地问道:
  “你在做什么?”
  “编程啊,给烧录器编写一个配套工具。”
  “你连这个都懂?”
  “学过一些。”
  顾伟彻底无言了,他还想着找一个朋友过来帮忙,而且还没有把握是否真的能够在短时间内编写好能够配套的软件,却没想到林鸿此刻已经开始编上了。
  林鸿之所以有这个把握,完全是建立在已经摸透了烧录器的基本原理的基础之上。
  这个过程看似很复杂,其实原理是比较简单的,就是一个数据的复制过程,将一个存储器中的数据,复制到另外一个地方,对地址里面的数据进行挨个扫描就行了。
  林鸿此刻的打字方式并不科学,完全使用“二指禅”,但是打字速度却相当快,他甚至已经实现了盲打,完全可以不看键盘敲出准确的对应字符。
  顾伟在旁边看得简直要傻掉了。
  他实在无法想象,两个手指头也能打字这么快,而且还盲打。难道对方已经将键盘各个键位之间的距离记得清清楚楚,而且对手指的控制达到了如此令人恐怖的地步?
  太变态了!
  林鸿完全不知道顾伟此刻已经将其归类于“变态人物”,他全神贯注地在编写着手中的这个程序。
  由于涉及到底层的编程,单单只用BASIC的语句是不能完成所有功能的,他还在其中嵌入了一些汇编指令,直接对硬件底层进行操作。
  这在十几年后,就相当于是单片机编程,随便一个计算机专业毕业的人估计都知道编写几段。但是在现在这个时候,国内在这块简直还处于空白状态,就算有,也只是停留在各大研究机构和院校的实验室中,这些技术还得完全靠从国外引进。
  当然,林鸿完全不知道这一点。
  由于林鸿编写的这个工具,是专门针对他改造的烧录器而编写的,相比起之前的那个万用型编程器软件,要简单许多,他大概只编写了不到五百行代码就完成了这个小工具的编写,其中有五六十行嵌入汇编语句。
  在顾伟充满震惊和崇拜的目光之下,他继续调试了几次之后,最终将DUMP程序顺利完成了。
  这个程序的主要功能和之前的配套程序差不多,区别之处就在于多了一个对辅助电路的支持,在刚开始的时候,辅助位为0,当数据复制到八兆的时候,辅助位就会自动更换为1,这样就开始了八兆以上地址空间的扫描。
  “可以开始尝试DUMP了。”
  林鸿对顾伟说道。
  顾伟连忙将27C320芯片插到烧录器的中间插槽中,然后启动了电源。
  林鸿敲上他编写的程序名称,然后回车。
  显示器左下角的位置上立刻出现了一个慢慢增大的百分率数字――
  1%……
  2%……
  5%……
  没有图形,只有一个这样的简单表示,对观看者述说着数据的DUMP过程正在逐渐完成。
  要想实现图形表示林鸿也是可以实现的,只是现在似乎没有这个必要,他们关注的只是能不能成功将数据DUMP出来,至于软件的界面,这是次要的,只要自己能够看懂进行了。
  顾伟可以看到,这一次的DUMP速度,确实比之前要快很多,这意味着林鸿加的那根飞线的确起作用了。
  48%……
  快要到八兆了,林鸿和顾伟两人此刻的心情各不相同,不过都紧盯着显示器。
  49%……
  50%……
  51%……
  “成功了!”
  顾伟高兴地叫了一声。
  林鸿脸上也露出了笑容,虽然他很有自信,但亲眼看到自己设计的电路起作用了,心中还是非常开心的。
  这个过程很快就达到了100%,顾伟迫不及待地在目录中找到了DUMP出来的数据包。
  废了这么大的心思才将这些数据导出来,他心中隐隐生出了一种期待的感觉。
  他用LIST命令查看了一下文件的大小,大概4兆大小。
  林鸿看到,微微一愣,疑惑道:“怎么只有这么小?”
  “没错。”顾伟解释道,“游戏机卡带里面的容量普遍采用兆位BIT来计算,而电脑都采用兆字节BYTE来计算,一个字节等于八个比特,所以导出来的数据在计算机里面只有原来的八分之一大小。”
  顾伟先用文本编辑器查看了一下数据包,发现是十六进制的机器码,看不懂,于是将其和之前DUMP出来的数据一起打包,放到街机模拟器里面运行。
  结果还是一片黑屏,没有任何东西,按键盘也没有任何反应。
  “奇怪,怎么回事……”
  费了这么大的心思导出来的数据竟然没用,这不禁让他感到非常郁闷。
  “难道是导出数据的时候出了问题?”
  顾伟转头看了看林鸿。
  如果在DUMP数据的时候出了问题,的确也会出现这样的现象,软件就是这样,讲究完整性,缺少任何一点代码都可能会导致运转不了。
  林鸿也在默默思考着到底哪个环节出了问题。
  顾伟退出游戏界面,然后重新开始分析导出来的那个数据包里面的代码。
  他决定对那部分代码做一个反编译,仔细看看里面到底是什么结构,以此来判断是否导出的时候出了问题。
  这个过程是他经常做的,所以非常熟练。
  直接调出一个小软件,对数据进行还原,这个软件可以将机器码进行反汇编,最终以汇编代码的形式展现出来,虽然可能会和源程序的代码有区别,但是其完成的功能却是一样的,甚至经过编译器优化过后的代码甚至比源代码的执行效率更高。
  当然,顾伟的这个小软件并不能将整个游戏的完整代码都还原出来,因为游戏在进行编译的时候,通常会加入一些反破解的代码,虽然不能百分之百地组织破解和逆向工程,但却极大地增加了难度。
  顾伟还没达到能够将整个游戏的源代码给逆向出来的水平。
  不过,他这么一反编译,却发现了一个异常情况。
  “奇怪了,怎么全部是数据?没有任何一条指令。”
  顾伟发现,整个数据包里面的代码,竟然没有任何一个操作码,全部是数据,或者说没有意义的代码。
  他再次用文本编辑器打开了这个数据包,想从中看出点什么规律,但是满屏的机器码,让他眼睛都看花了也没看出什么名堂。于是,他接着将十六进制编码转换为二进制的,全部由“0”和“1”组成。
  他进行这一步转换也只不过是顺手而已,十六进制和二进制,实际是一个效果。
  他将编辑器关掉,转过头来对林鸿说道:
  “看来这个数据包完全是乱码,也不知道哪里出了问题。”

当前:第83/659页

提示: 双击屏幕进入下一页