魔兽地图编辑器吧 关注:51,364贴子:3,623,475
  • 45回复贴,共1

【关于Return Bug】来说下我这几天学到的东西... ...

只看楼主收藏回复

首先我对魔兽了解的不多, 研究内容纯属兴趣使然, 对做图什么的是一无所知, 所以下面所讲的有不对的欢迎大家指正.
(想看ReturnBug可以直接跳过这段, 大神们就不用浪费时间了, 下面没什么能看的, 让我多水一点~~~)
正题, 起初我只是琢磨着看看能不能把一张魔兽地图加密一下, 代码混淆, 变量名修改, 使用16进制, 256进制ID什么的就不提了. 一开始想到的当然是验证J文件md5值什么的, 这个好像已经有大佬做出来了, 据说修改了就会调用系统关机命令.
我自己想到的是把验证方法封装到一个dll文件里, 碰巧又看到贴吧有人在讨论ydwe使用Lua做图的问题. 我寻思着有Lua引擎这不是简单多了, 利用Lua引擎调用dll里面的函数还不是轻轻松松. 于是又把ydwe演示实例里面的几个Lua图反复看了几遍, 终于明白了该怎么使用.


上图的例子好像出了bug, 貌似没起效果.


另外说下, windows使用cmd是可以直接获取一个文件的md5值的, 具体如下:


Lua有个方法io.popen可以调用系统cmd命令并把输出结果保存到一个文件里, 不过这个方法ydwe自带的Lua引擎里是没有的, 就算有也没什么卵用.
然后我去官网下载了个Lua, 编写了几个程序, 熟悉流程以后就开始用C语言写dll了, 主要函数也是利用C语言的popen命令调用cmd查询md5值, 别问为什么又是popen, Lua自己就是个C语言程序.
dll写出来以后, 用Lua调用了一下完美运行. 导入地图中直接报错, 找不到指定的dll模块. 心想不应该啊, 明明官网下载的Lua都没问题, 贴吧里问了下大佬才知道, 原来魔兽地图根本就不给用dll, 估计也是为了防病毒图什么的.


顺便说下, 吧里的大佬是真大神, 很多参与开发ydwe的, 真的吓到了. 根据大佬的指示, 我去查了下return bug的相关资料, 不过是真的少之又少, Google也没查出什么来. 后来在贴吧逛了一圈, 发现大佬们提到了利用RB进行内存读写什么的, 然后去HIVE搜了一下关键字, 总算让我找到了关键的一篇文章Memory Hack.


网址图片中有, 有兴趣可以自己去看一下, 下面我会直接放上相关的实现代码, 源码那篇文章中也有.
在此先感谢几位大佬的指点: @w4454962 @rahxephon1461 @怠惰的騎士 @静看花开花落


365编辑器,多平台一键同步功能,图文秒刷,365编辑器

365编辑器是一款拥有海量素材,动图图库,提供高效图文排版的内容编辑器. 支持实时预览,一键秒刷,多平台一键同步功能,极大提高小编工作效率的必备编辑工具编辑器

2018-06-25 14:36 广告
我先提件事, 貌似大家对利用return bug进行内存读写的问题争议挺大的, 一方面return bug确实很强大, 可以帮助我们做到很多jass本身做不到的东西, 另一方面一些别有居心的人也有可能利用这个来传播病毒, 日后广泛流传开来后官方有可能直接把return bug修复什么的. 其实写内存的bug魔兽已经在1.27的版本中修复了, 据说读内存还保留着. 至少我测试的时候在官方平台上地图是无法运行的, 不过本地运行还是可以的. 我还是再次强调一下大家不用想着拿来搞小动作什么的, 且不提现在杀毒软件有多强大, 就是windows自带的defender都足够应付了. 现在写病毒真的没什么前途, 我分享这个是希望大家可以利用Return Bug来研究下使用ByteCode做图什么的.


好了, 直接上代码
链接:https://pan.baidu.com/s/1dFrUAFR 密码:i5qm


演示是使用的"DotA v6.83d.w3x"这个地图, 效果是在加载的时候弹出一个dos窗口打印出"Hello World", 因为我不是大佬, 目前能做的只有这么点, 可能有大神已经做出更酷炫的东西了. 我只是分享一下自己的学习过程.





下面简单讲下代码, 为什么是简单讲, 因为我真的看不懂啊233.


上图代码是插入到war3map.j文件的main函数尾部的, 主要功能看函数名大概也能懂, 在地图加载到最后的时候就会调用他们. 一个一个来讲.


HexNumber__onInit函数初始化了许多16进制的数字以string的形式保存起来, 用string数组还有个好处是顺便还能将16进制数字转为10进制数, 缺点是有限且需要全部罗列出来. 好吧, 其实这个"顺便"的好处是我瞎编的, 我不知道实际上有没有用到QAQ.




Init函数主要初始化了一些跟内存相关操作, UnlockMemory这是什么? 我也不知道233. Init27之类的就是根据魔兽不同版本初始化基址内存. AllocateExecutableMemory是分配可用内存空间, 给后面写内存用. 1000bit应该就是250byte吧.




ExportFileFromMpq顾名思义这个函数就是将放在MPQ里面的东西解压到电脑磁盘上, 这个能做什么大家大胆想象~~




ShellExecute是调用的系统Shell32.dll里面的ShellExecuteA函数, 主要是用来执行类似cmd的shell命令, 具体大家可以百度一下这个函数, 你还可以做到隐藏弹出的dos窗口.
顺便提下上图的GetModuleProcAddress这个函数, 这是获取dll里面的函数的一个东西, 很多跟dll相关操作都要用它来完成.




LoadLibrary就是利用系统的Kernel32.dll里面的LoadLibraryA函数加载你自己写的dll, 将其注入到内存里.




上面是我添加到"DotA v6.83d.w3x"地图里面的东西


以上就是全部内容, 因为官方已经把这个方法封了, 我也不想再琢磨dll这些东西了233.


回复
举报|2楼2017-12-26 18:59
    火钳


    收起回复
    举报|3楼2017-12-26 19:00
      前排花生啤酒🍺空调开放


      回复
      举报|来自Android客户端4楼2017-12-26 19:10
        你看的都是老点的东西了,而且1.27以后得版本并没有真正封掉写内存,暴雪自己被人耍了而已,现在大家都还在用,只是代码要改改,所以dll在平台还是随便用的,要不关机加密不支持平台还有什么用


        收起回复
        举报|来自手机贴吧5楼2017-12-26 19:50


          收起回复
          举报|来自手机贴吧6楼2017-12-26 19:52


            回复
            举报|7楼2017-12-26 20:19
              **暴雪


              回复
              举报|来自iPhone客户端8楼2017-12-26 20:27
                我也想学rb,不过是想用来加密和反全图,不知道有没有大神




                回复
                举报|来自Android客户端10楼2017-12-26 22:44

                  PayPal,全球主流的第三方支付平台,0费用注册

                  拥有PayPal账户,与全球2亿用户共享超便捷的收付款解决方案,助力您的每一笔交易;PayPal每天24小时每笔交易的安全,个人信息安全不外泄,点此进入官网了解更多;

                  2018-06-25 14:36 广告
                  关于加密, 今天想了一个新思路, 想试试能不能将jass里面的代码转成bytecode, 就是jass虚拟机可以直接执行的代码, 跳过编译过程.
                  然后我查了下资料, 发现已经有大神在开发这个套路了.


                  下面是我找到的代码: https://pan.baidu.com/s/1sldsXg5
                  运行如下:


                  不过里面有段代码不是很懂, 大佬能不能帮忙看一下是什么意思QAQ
                  @w4454962 @rahxephon1461



                  收起回复
                  举报|11楼2017-12-26 23:23
                    虽然不知道哪里帮了楼主,不过诞生的结果很棒,好文


                    回复
                    举报|12楼2017-12-27 13:04


                      为什么我这么咸压根看不懂


                      回复
                      举报|13楼2017-12-27 16:19
                        吧里的大佬是真大神, 很多参与开发ydwe的?


                        我就想知道哪些大佬参与了ydwe开发


                        收起回复
                        举报|14楼2017-12-27 17:40
                          泼你一盆冷水, 你研究的这些真的只是研究而已,没有实际意义


                          收起回复
                          举报|15楼2017-12-28 17:33
                            你的这个图编译器打不开呀老哥


                            收起回复
                            举报|16楼2017-12-30 18:38
                              系统也无法限制住你们了,放手去干吧。。


                              回复
                              举报|17楼2017-12-30 20:25

                                扫二维码下载贴吧客户端

                                下载贴吧APP
                                看高清直播、视频!