某LuaJIT游戏的Anti-Cheat分析
前言
这个游戏防修改的方法很平常,但因为是用LuaJIT写的引擎,所以不是太直观。所以与其说文章是关于游戏修改,倒不如说是在介绍LuaJIT。另外,由于这游戏有充值系统,所以省略了游戏有关的具体信息。
第一次尝试
打开游戏,随便找一个比较大的数值,打开CE,搜索数值,发现能够搜索到。
然后修改之,然后游戏就喜闻乐见的闪退了。
分析
重新打开游戏,搜索数值,在数据上按F5(或右键单击->Find out what acess this address),能看到有好几条指令在持续不断的访问。
点击Show disassembler,能看到这几条指令都是属于一个名为LScript.dll的DLL文件的。而通过DLL导出的符号可以猜到其是LuaJIT库。
Dump ...
易语言支持库内加密数据的DES算法的分析
介绍
易语言支持库里有个这样的命令:
〈字节集〉 加密数据 (字节集 字节集数据,文本型 密码文本,[整数型 加密算法]) - 数据操作支持库一->数据加解密
其中加密算法可以选DES以及RC4,使用RC4的话其他软件也可以解密,但是如果使用DES算法,结果却和其他标准算法产生的结果不同。本文详细分析了该不同的原因,以及解决方式。
易语言基础
易语言静态编译出的代码在调用库函数时都遵循一个标准:
push xxxxx ; 一些标识类型的magic value
push arg ; 参数
mov ebx, LibFunction ; 支持库的函数指针
call CallLibFunc ; 一个编译器优化后的__cdecl,第一个参数是由ebx传递的函数指针
add ...