AngelScript试用记

AS是什么时候发现的呢,很久很久以前,下VcAsm大侠的VProtector(怎么认识VcAsm的大名的呢,问SD的彩虹岛DynCode去。。),想知道他那内嵌的C编译器是怎么搞的,用Depends打开EXE,咦,怎么有几个导出函数,Google一下,得到AS脚本引擎~

这次是突然想卖挂生活技能软件,但想把程序和数据分立,也就是说不管是生活技能还是刷BUG还是强制组队隐身什么的都用同样的软件,而封包的逻辑不再硬编码到程序中,也就是要借助脚本语言。

出名的脚本就那么几个,Python、LUA、Ruby等。因为WOW的缘故,LUA依旧是目前世界上最流行的嵌入脚本(Python太大,可以[……]

Read more

有关new() T()

在看AngelScript文档的时候,讲到值对象构造函数和析构函数的注册,看到这样的内容:
void Constructor(void *memory)
{
// Initialize the pre-allocated memory by calling the
// object constructor with the placement-new operator
new(memory) Object();
}
这里的new运算符有点怪哈,以前没见过,但只要不是傻子应该都能从上下文猜出含义。不过为了科学的严谨性,还是上网查了一下。这里就是不分配内存,而是直接在m[……]

Read more

放弃破解Rayman2的海盗头。。

整整三天的时间,最后闹个束手无策。。为三天假期表示沉痛哀悼。。

本来破解补丁已经写好了,通过Hook贴图的代码过滤掉海盗头和相关文字,正高兴着呢,结果上去玩两分钟就哭了。。Ubi太坏了,这招绝不是简单的贴个影响游戏的图就完了,游戏元素也会受到影响,本该潜水的鱼缸里没了水,悬崖峭壁的尽头少了紫色抓环。。

至此算是束手无策了,因为整个过程,从判定到检验到耍花招,所有的代码都是游戏地图编译脚本实现的,也就是说我们面对的是一堆无法理解的字节码,和一个不知道原理的脚本虚拟机。众所周知分析一个虚拟机程序意味着什么(VMP,给你做广告呢,别忘了给广告费~~)。更具体地说,Rayman2中脚本系统[……]

Read more

以后多用SAFE_DELETE

前些天羽毛汇报说那天杀的彩虹岛插件服务端又崩了。研究加壳过的程序崩掉后的dmp文件确实是个体力活。从eip来看程序是跑飞了,看了下esp处是个在dll领空内的地址,说明是call飞的,用这个地址减去dll的起始地址,然后用od加载错的dll,把刚才减出的偏移加到这个hmodule上,算是找到了出错的指令了,谢天谢地这段指令没有混淆过。这还没完,要根据这里的汇编码找出对应的源代码位置。。还算比较幸运,这个函数下面一个函数就有了字符串的引用,于是找到代码是OnDisconnect中delete m_session一句出错,从dump来看内存里已经不是SocketSession的内容了,应该是cal[……]

Read more