UwAmp——我用过最好用的WAMP Server[修改版放出] » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

UwAmp——我用过最好用的WAMP Server[修改版放出]

2014-04-07 修改版公开放出 给作者发邮件、发twitter @他,不过作者鸟都不鸟我啊。 算了,直接将我的修改版放出来给大家下载。 链接:http://pan.baidu.com/s/1oy4bk#提取密码=385a

WAMP,注意前面有个W,自然是在windows下使用。ArchLinux下面直接pacman几下就装完了,不用windows下这么麻烦。因此,在使用windows的时候,WAMP就是必不可少的了。 虽然自己手动去下载php , apache ,mysql 安装配置下也很容易,不过重复的事情做多了就会觉得麻烦了。因此,WAMP存在的必要性就有了。平常在公司开发主要是在Linux下面。不过我偶尔下在windows下面调试东西,比如玩完游戏之后发现有个东西要修改下,此时再重启进入Linux当然是不太方便的。

试用过wamp , xampp 诸多 Xamp软件之后,找到一个很好用的工具:UwAmp,不过这货不是开源的。 最初我用的是Apache的好朋友:xampp,开源,也算不错了,这个工具用了两年多吧,最少。 WAMP server也用了好久,还针对它做了一些修改( http://git.ihacklog.com/repo/WampServer.git/log/ ),不过WAMP 这货也不是开源的。wampmanager.exe这货不是wampserver作者写的,而是直接没有修改源代码的情况下使用了Aestan Tray Menu(Delphi写的),这个万能托盘程序,通过修改同名exe的ini文件的读取来配置这个托盘程序的行为。 (要了解详情请见:http://tunps.com/wampserver-aestan-tray-menu ,这位兄弟的文章说得很清楚), WAMP server就是以delphi写的万能托盘程序+一堆PHP脚本(以cli方式执行)来实现的。而且,从用户体验来看,那些个配置项的切换什么的,都非常不方便,经常容易点错。特别是PHP配置,那里拉出来比iphone 10的长度还要长……

某年某月某日,我在google上游荡,找到一个叫UwAmp的WAMP. 试用之后发现非常喜欢(也不是说非常优秀,只是说相对之绝大部分同类程序来说,它确实很不错)。无论是UI体验设计还是功能设计上,都很不错。如php版本切换方便,可以直接点击一下鼠标从php.net官网下载新的php版本,无需手动下载解压什么的。php主要配置的修改,apache配置和虚拟机的添加,都可以在这个小小的程序上完成。

官方的介绍: UwAmp is a Wamp Server with Apache MySQL PHP and SQLite 优点官方也说了: Without installation : UwAmp is available as a Zip archive, just unpack it and you can run the wamp server. UwAmp doesn't install files in the system to keep it clean.

Easy interface : UwAmp is provided with a management interface that lets you start or stop the server with one click.

Multi PHP Version : Change PHP version in one click to test compatibility and download new PHP version directly from php.net repository.

CPU Monitoring : Real time Apache and MySQL process CPU monitoring.

U3 Mode : Can be run from a USB stick.

貌似是完美的东西了? 我在试用后发现它不支持apache 2.4 + php 5.5.x以上的版本。 可是——它不是开源的! 我试图联系作者,看作者能不能把源码给我,我好修改下,让它支持apache 2.4. 不过邮件都发送过去几天了,作者一直没有回复。

好吧,软的不行,只能来硬的了。直接拿二进制代码开刀——对UwAmp.exe进行修改。 apache 2.4的最主要变化和对此WAMP程序最主要的影响是: 1.访问控制指令的变化 2.php的apache模块文件名的变化。 3.基于名称的虚拟主机,在2.4以上版本中不需要再添加NameVirtualHost "*:80"指令了

对于第1点,举例说明吧: 2.2 configuration: Order deny,allow Deny from all

2.4 configuration: Require all denied ---------------- 2.2 configuration:

Order allow,deny Allow from all

2.4 configuration: Require all granted ---------------- 2.2 configuration: Order Deny,Allow Deny from all Allow from example.org

2.4 configuration: Require host example.org

这是官方文档中的例子。 第2点主要是php5.5 的apache模块文件对应的名称是 php5apache2_4.dll 第3点的话,修改相关代码,使之不再自作聪明地在httpd.conf中写入NameVirtualHost "*:80" 这行配置。

其实这前面两点也可以通过曲线救国的方式实现: 对于第1点,启用access_compat_module就行了: LoadModule access_compat_module modules/mod_access_compat.so 对于第2点,委屈一下apache , 将 php5apache2_4.dll 重命名为 php5apache2_2.dll 这样按理来说应该是行的,不过我并未测试。 用兼容2.2的方式的访问控制命令,还有就是修改2.4的模块名为2.2的,这不是我喜欢做的事。 因此,我还是以直接修改UwAmp更加彻底的方式来实现。

拖入IDA pro, 在.rdata段看到了相关的配置指令: Order deny,allow,0Ah, 0,9,Deny from all,0Ah, 0 我只需要修改为 Require all denied,0Ah,0 就OK了。

Order deny,allow,0Ah, 0,9,Deny from all,0Ah, 0 修改为 Require all denied,0Ah,0

Allow from 127.0.0.1 localhost,0Ah,0 修改为 Require ip 127.0.0.1,0A,0 这里0Ah 即是\n 换行的ASCII码, 09 是\t, 00 是字符串的结束标志. 前面这几处只是数据的修改,实际上与这几个字符串相关的代码也是需要调整一下的。 大概看了下写配置的那个函数,接收两-三个参数,一个是字符串指针,还有一个是字符串的长度。因此,这里我们字符串的长度给它改变了,自然要按照实际的长度给它修改回去。 以Order deny,allow,0Ah, 0为例,原本是 push 11h的(字符串的长度是16+1,这个1是\n), 我们修改为Require all denied,0Ah,0后,要修正为push 13h,其它的依此类推……

然后把 a2_2_1 a_Apache2_2_dll aChe2_2_dll 几个全局字符串变量对应的值中的2_2修改为2_4即可。此其二。 最后一项修改:通过搜索文本: meVirtualHost " 定位到aMevirtualhost这个变量.再通过交叉引用找到关键跳转,修改跳转达到目的完事。

aMevirtualhost_string.png aMevirtualhost_jmp.png

经测试,程序不会再自行写入apache 2.4中已经deprecated的配置指令: NameVirtualHost "*:80"

最后,还有一项需要修正: localhost 修正为: 127.0.0.1 因为在win7以后,localhost默认都是不指向本地环回地址的。因此,直接用环回地址更安全。

还有就是session.save_path的位置 aSession_save_0 , 我给它从 N;{APACHEPATH}/sessions 修改到了 N;{TEMPPATH}/sessions 放在temp目录下,比放在apache目录下要好。

其实我还想加几个按钮的,不过貌似比较麻烦,这货是C开发的,用wxWidgets做的界面,不是VC默认的东西南北。看了下代码,窗口和按钮控制都是直接绘制的。窗口资源文件都没得。

另外:版本号从2.2.1修改为了8.8.4 ,以示与官方版的区别。 好了,改造完毕。完美支持apache 2.4 + php 5.5.x。

修改版先不放出来,我又发了一封邮件给作者了,希望能得到答复。 还有,要尊重作者的劳动,没有经过作者的允许,修改的东西还是先不放出来吧。如果对方回复了表示不给源码(这个可以理解),然后也不让我发布暴力修改版(这个……)咋办?呃呃,这个嘛,既然你不给面子,我也就不必了……

放两张图吧,没图没真相:

Tagged in : UwAmp,WAMP

All Comments (0)
Gravatar image
No Comments