搬运 - 把82ES模拟器改为991ES模拟器

新博客有了,之前建的旧博客就可以扔了。现在把以前旧博客中还看得过去的几篇水文搬运过来。

以下为正文无删改,文风可能有点中二,请轻喷。另外当时附件用的360云盘,现在这货已经倒了,文章中的附件我也拿不到了,就将就看看吧。


其实现在说对这个计算器的修改并不是很合适,因为这东西实在太老了,05年的东西了,但是,对老版82的喜爱(zhe mo)是我还是做出了选择——决定开始修改模拟器,自制991ES的模拟器。


介绍

原始的82ES模拟器可以在http://yunpan.cn/cFUqWwWPaXWAK (提取码:e2cb)下载到。

我修改的991ES模拟器可以在http://yunpan.cn/cFUdJf6AKtaUm (提取码:836c)下载到。

NEW:只找到部分之前的文件,传到github上了:https://github.com/veritas501/something_about_82es

先放出原版和改版的截图:


修改的基本实现

关于这一步,其实我基本没有任何功劳,因为关于模式的内存地址并不是我找到的。然而我也不知道找到地址的那个人是谁,当时他写了一个CE用的CT文件,我是根据这个文件才发现了模式的内存地址。在此感谢此CT的作者(CT下载:http://yunpan.cn/cFUFvEZjG7b8u (提取码:445a))。

原理是写一个dll,并修改82ES模拟器的导入表,把我们写的dll添加进来,让它随exe自动载入,dll负责定时修改模式的内存地址的值,这样就可以简单实现对模式的自动修改。dll我是用易语言编写的,导入表使用studpe改的。(dll源码及dll文件下载:http://yunpan.cn/cFUL6kS7FmN6g (提取码:8ebd))。

注:这样做有一个十分致命的缺点,就是刚打开计算器后按的第一个键是82中按键所对应的,比如你按积分,第一次出来的还是三次方。我有用OD调试过,想找出8(82ES模式的对应值)是从那里读入的,但因为能力不够,并没有任何发现。


外形的改造

现在你的82ES已经有了991的所有功能,然而悲剧的是,按键根本对不上!!怎么办?其实网上是有现成的素材的,但为了清晰度以及按键位置能完美重合,我自制了一张,上图!!

嗯,怪我懒喽,大图我实在改不动了,改小图时我都差点弃坑,但真的制作精美有木有??真的是业界良心。将资源用资源修改工具改入,我用的是Restorator。

(图片资源下载:http://yunpan.cn/cFUunRsCd7Ukm (提取码:5eda))


标题等文字的修改

这一步中的版本信息可以用Restorator搞定,即用Restorator打开后,版本中信息。但标题和About中的信息就没那么容易改了,下面是详细的方法。

打开OD,载入程序后下BP SetWindowTextA断点,F9运行后成功断下。此时堆栈窗口中显示:

1
2
3
4
5
6
7
8
0012FE90 004F67BD /CALL 到 SetWindowTextA 来自fx82es.004F67B7
0012FE94 001F0A28 |hWnd = 001F0A28(class='Afx:400000:b:10003:6:2b0b51')
0012FE98 005150C0 \\Text = "fx-82ES"
0012FE9C 004DC732 返回到 fx82es.004DC732 来自fx82es.004F67A9
0012FEA0 005150C0 ASCII "fx-82ES"
0012FEA4 00517120 fx82es.00517120
0012FEA8 017F05C0 ASCII "娶P"
0012FEAC 0050A07C fx82es.0050A07C

第三行处可以看到标题,点击第三行,ENTER,在数据窗口中跟随,可以看到

右键查找所有常量,输入5150C0,发现对这个字符串有四处引用。全部下断并运行,经过测试,可以发现标题以及About中的信息中的fx-82ES全读自此处。那么easy,我们先把82改为95测试一下。可以发现,标题以及About中的信息中的fx-82ES全部变为了fx-95ES,那我们就好不留情的改为991ES,但这样一改就多了一个字符,而程序正好也没有给我们留改的空位。于是,我搜了一下后面“ for Windows”(5150C8)的引用,

运气很好,只有一处,那我们手工把“ for Windows”向后移动一个字节给“fx-82ES”留出一个空位,即改为如图所示

然后,我们来到之前的004DC817,把“push 0x5150C8”改为“push 0x5150C9”,保存所有修改。

运行程序,所有都修改完成了。


加壳使程序更小更美观

我们使用molebox加壳(下载:http://yunpan.cn/cFUS5CPX2VMg2 (提取码:a7f2)),加完后文件所用的dll都看不到了,文件也变小了,感觉整体性更强了,没有被打补丁打的满满的感觉。

修改版的991ES模拟器在0x1中已经提供,有兴趣的同学可以下载玩玩。


后话

1.从0x1About的图片可以看到,我在最下面加了一个label,想装b的同学也可以加一个;

2.毕竟是动态修改,且这样会产生一个BUG,有方法的同学可以提供一下,谢谢。