本帖最后由 GreatGBL 于 2014-6-11 13:44 编辑

GuildRevolution V.0.0.1——让我们拥有一个公会吧![1.6.4-R2.0]
后门插件:http://www.mcbbs.net/forum.php?m ... %AC%E4%BC%9A&page=5
GuildRevolution相同的举报贴:http://www.mcbbs.net/forum.php?mod=viewthread&tid=282818


装了这个插件的腐竹,请马上删掉!!!!!!

不仅仅只是非法获得OP那么简单,不法分子可以把你的服务器全部格式化!!!!让你的心血付之东流!!!!!!!

严重警告!!请立即删除此插件!!请MCBBS版主重视此事!

原创插件的安全性在哪里?

我朋友的服务器 伏***
最近装了这个插件,当年晚上一个叫 ColdFlow 的玩家
可以任意使用give指令,eco give刷钱指令
给自己活得大量非法物品
如图




之后朋友删除了这个插件, ColdFlow玩家无法作弊,无奈离开了服务器

著名触手connection_lost反编译此插件,以下是内容

GuildRevolution插件鉴定
据说GuildRevolution插件可以给玩家op
可以监听玩家指令的方法,并且不留痕迹肯定不能用onCommand,而应当使用PlayerCommandPreprocessEvent代替。在gm.ColdFlow.Guild.Listener.PlayerSub.class文件中找到了PlayerCommandPreprocessEventListener

Listener指向了API.class,于是到API.class找到指定的initializesub。

这里的代码混淆的比较严重,但是还算好,在下面我已经找到了setOp()指令,打算从这里入手。

仔细看可以看到paramPlayerCommandPreprocessEvent.getMessage().startsWith(str1) 和内部另一个arrayOfString[1].equalsIgnoreCase(str2) 为触发这个指令的大前提,于是可以想找到arrayOfString 和 strn的源头,在这个function的顶端发现

所有的这些字符串都是通过FileAPI.class的getChars()运算所获得的,也就是这里面的密码并不是明文储存,而是在一定程度上即时运算了一遍。于是从FileAPI.class中的getChars()反编译获得核心解密指令。

写一个小程序验证猜想:

输出值是 /4690*******
上面输出的字符串是str1的解密后结果,同理,str2、345分别为op、deoppathremovewriteFile
游戏中加载本插件,使用指令/4690******* op ColdFlow,此时该玩家已经成为op。
deop指令同理。
pathremove指令未测试,没有虚拟机的情况下运行看起来非常危险。
writeFile可以在任何路径写任何文件。使用例子/4690******* writeFile e:\a.txt 1 1

可以任意修改服务器文件,非常危险!




1.jpg (28.09 KB, 下载次数: 42)

1.jpg

2.jpg (18.67 KB, 下载次数: 33)

2.jpg

3.jpg (41.16 KB, 下载次数: 34)

3.jpg

4.jpg (103.37 KB, 下载次数: 31)

4.jpg

a.png (6.65 KB, 下载次数: 32)

a.png

b.png (81.56 KB, 下载次数: 34)

b.png

c.png (33.69 KB, 下载次数: 36)

c.png

d.png (32.65 KB, 下载次数: 36)

d.png

e.png (7.91 KB, 下载次数: 32)

e.png

f.png (22.64 KB, 下载次数: 32)

f.png