作者yoco315 (眠月)
看板Python
标题[闲聊] 用 Python 写外挂..
时间Sun Jan 20 11:51:02 2008
讲一下我当初为什麽会接触 Python 的原因 XD
之前我在玩一个线上游戏,那个游戏外挂抓很紧,都没有外挂,
我想说我来写一个当作练功顺便自己用 XD 然後我就真的动手开始写了。
用 Win32 API 的 ReadMemory 跟 SendMessage 等方法去取得游戏的资料跟送出讯息。
(期间我也试过抓封包等方法想要做好一点,不过实在解密解不开 XD)
但是日子久了就发现要改外挂的行为好麻烦,每次都要重新编译,
但是脚本这种东西测试跟修改其实很吃重,真正核心的功能都是不动了,
这个时候明白那些支援脚本能力的外挂为什麽会红了,因为就是修改很方便,
所以我就想说自己设计一个 script language 来用,也真的动手下去作了。
但是实做到一半就发现这是个很吃重的工作,
单纯跑脚本其实还好,如果我想要顾到执行效能跟语法弹性的话,实在很困难。
过没多久我就放弃这个蠢主意。
後来突然明白我应该是去找一个现成的 script language 来用,
然後自己扩充这个 script language 的底层功能,
我第一个选的是语言是 Forth,因为这是我唯一会的 script 语言,
而且 Forth 的特色之一就是实做容易,所以我就真的去实做了。
(这个人讲到跟打电动有关的东西,执行力真是特强悍 -_-)
很认真的看了 Forth 的实做经典文章,然後动手,发现其实事情也不是这麽简单,
果然该文章的第一段很中肯:
「大家都听说过 Forth 的实做很简单,但是细节上到底怎麽作?
却不是这麽清楚,这篇文章就是讲清楚这些东西。」
当然这个我是实做的出来,但是还是想要找个更简单的方法,
我去 survey 了一下 script language 的相关资讯,
Perl,Lua,Python 都看过了,最後选了 Python,
因为:
1. Perl 我看不懂 XD
2. Lua 好像 C
3. Python 看起来简单明了,主要是那个中文的 tutorial 实在很好上手
然後就选了 Python,也开始实做了。
一边看 Extension/Embeded 的文件,一边实做,简单也不太简单,
但是一想到一旦完成以後,我可以用 Python 简单的语法来写脚本就觉得很爽,
结果等我 Extension 摸的差不多以後,我游戏也没玩了 -_-
之後 Python 就放了一年 XD
日前因为非本科系的同学在程式需要帮助,我又突然想到 Python 超简单,
应该是非常适合不是资讯背景的人来学习,我就推荐他来学(效果是非常好),
然後自己也重新开始学习真的用 Python 来写东西,唉呀真好用,
然後突然想到 Boost.Python 这个 C++ - Python cross language lib,
先前摸的时候没有摸懂,那现在再来一次好了。
既然要写,那我就拿当初要对付的游戏来试看看 XD
那个游戏现在也有私服了,我找了一个私服开了帐号,一边玩一边写一边测一边改,
这次果真是非常快速的,
不到一个礼拜我就利用 Boost.Python 把一个外挂的核心功能包好,
然後把大部分的程式码都用 Python 架好,
用 C++ 的部份都是 OS dependent 或是对效率非常要求的地方,
剩下的几乎都是 Python 来完成。
到现在总共三个礼拜多了,
除了第一个礼拜有用到 C++,之後都是 Python,完全没有碰到 C++ 的部份,
脚本的进度也非常快速,一下就做到我以前作不到的复杂度,
再经过一个礼拜的校调,稳定度已经非常不错,连续 24 小时都很 OK,
吸哩呼噜的也挂了一堆虚拟货币,现在已经是大财主了 -____-
这个私服外挂抓的跟官服一样紧,
不过因为是自己写的外挂,然後用 Python 也能轻松做到自由度很高,
就可以写的很像是真人在玩,到现在都没有被封帐号。
我在想我拿去官服应该也可以打一些虚拟货币来卖钱吧 XD
不过志不在此,算了,单纯享受写程式的乐趣 ^O^
--
To iterate is human, to recurse is divine.
递回只应天上有, 凡人该当用回圈. L. Peter Deutsch
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.78.40
1F:推 revivalworld:学以致用 推 01/20 12:28
2F:推 rs6000:不开放下载试用吗XD 01/20 13:19
3F:推 rexrainbow:推 01/20 21:35
4F:→ yoco315:没什麽人在玩的游戏 XD 01/20 22:29
5F:推 wayn12342000:好遥远的封包截取阿~~可以教教吗?我也是在写私服外挂 01/22 08:33
6F:→ wayn12342000:不过写到最後还是选择用按键精灵编脚本(泣...) 01/22 08:34
7F:→ yoco315:我用现成工具的 没什麽好教的 01/22 22:49
8F:推 darkmore:哈哈~~真猛 01/27 11:01