存档

‘玩转war3’ 分类的存档

如何bypass某些地图的-MH

2009年1月8日 没有评论

好久没说说话了,转眼就到了2009年,大学生涯也即将完毕,庆幸自己终于可以摆脱学生时代。即使没有进入社会,我也隐约感到前途并不美好。其实,无论你获得活得怎样,最后得到的也不过是衣食,住行,男女。所幸,我胸无大志,应该容易得到满足。

来此blog的人一般都不想看我的什么心情随笔,都是抱着别的目的来的,比如魔兽工具,一些破解。好了,下面就满足你们。

今天的话题是如何过某些地图的-MH。“某些地图”,比如最近的什么真三国无双二(貌似是不争气的VS出品的吧),真三国无双奥运版,等等~~~

地图反MH其实很好破解,知道地图怎么编辑的就可以搞定了。这些地图之所以能够运行一些特殊的功能就在于它使用了jass脚本。我以前对jass api有过研究,当然,我的目的不是编地图。

今天某位朋友在lynn论坛发消息给我说,有个真三奥运版可以反所有现今流行的MH。好久没搞东西了,兴趣也来了点,于是下了那个地图看了看。

刚开始也走了些弯路,现在我只说重点怎么搞了。我不想做什么现成的工具了,我写了这篇文章后,一些指望从魔兽获取收益的人会出相关工具的,什么人我不说了,看谁更新的最快就知道了。另外,今晚还剩些时间,我想看部电影。如今看部电影对我来说比搞什么反汇编好玩多了,主要是很轻松。

我下的是“BT真三专署奥运修改版3.1.w3x”,BT应该是跟蓝宝石一类的图,很没意思,我很久都不玩真三了。

前面说了war3地图会用jass脚本,如何查看地图呢,其实war3自身的目录就有,就是那个worldedit.exe。不过用worldedit.exe打不开上面这个图,于是我直接用MPQMaster查看。

很快就找到脚本了,直接解压出来,是文本文件,打开可以直接搜索-MH提示:is cheating,马上就定位到关键点。呵呵,这个直接是源代码了,比反汇编好懂多了!

仔细看了下代码,心里大概有数了,主要是一些jass api调用,我们的关键点也就是patch这些jass api。于是我用上了google去搜索这些api,没想到一搜索是直接搜索到这段-MH的源码了,呵呵,原来这段-MH是网上都有的东西。有兴趣可以去这里看看:http://www.islga.org/bbs/read.php?tid=19231&page=e&fpage=1

关键地方:

//x,y是一个对玩家而言不可见的一个点的坐标,我们要利用这个坐标来创建一个闪电。
function DetLighning takes nothing returns nothing
local real MFWGx=GetRandomReal(GetRectMinX(DetZoom),GetRectMaxX(DetZoom))
local real MFWGy=GetRandomReal(GetRectMinY(DetZoom),GetRectMaxY(DetZoom))
if IsVisibleToPlayer(MFWGx,MFWGy,GetLocalPlayer())==false then
set ZeustheViews=AddLightning(“CLPB”,true,MFWGx,MFWGy,MFWGx,MFWGy) //创建闪电
if ZeustheViews!=null then //本地玩家闪电H2I值非0,就是说明上面的不可见点变得可见,说明开外挂
call DestroyLightning(ZeustheViews) //删除上面创建的闪电
set ZeustheViews=null
call SelectUnit(Cheatout,true) //让这个玩家选择前面创建的单位,来标记他
endif
endif
endfunction

原理说来很简单,就是在本来不可见的地图区域创建一个“玩家闪电”,根据什么H2I值判断是否开MH,开了MH的直接选中那个创建的那个单位,然后如果当前玩家能够选中那个单位就把当前玩家放到一个势力方Force里。最后有玩家输入-MH就直接这个Force里读取开了MH的玩家。注意并不是输入-MH时才检查MH,而是从游戏开始一直每隔3秒就检测,只要被检查出了就放到一个Force势力方里。

那么如何破解,前面说了直接从jass api入手即可。确实如此,不过我这里的方法还有待改进。

仔细看了上面的jass脚本,最关键的api是AddLightning和SelectUnit。注意,虽然你已经看到源码了,但是却不能修改它的执行流程,至少我暂时没办法。因为脚本不是汇编,脚本是解释执行的。不过有一种可能就是在内存中找到那段jass代码然后直接文本修改,我没试过,你可以试试。

我一开始是直接搞弄AddLightning,我以为它是一个BOOL或者int返回类型,所以直接改那个call返回后的eax值就可以了。

哦,忘记说了,jass api是对应魔兽game里的一个call段的。找这个call段不难,先搜索game.dll段的字符串,然后在结果中查找jass api的字符串,找到的地方的汇编代码处就有对应call的地址。比如:

6F2AC93A    BA 644B816F     mov     edx, 6F814B64                    ; addlightning
6F2AC93F    B9 50C02D6F     mov     ecx, 6F2DC050                    ; 6F2DC050就是addlightning对应的call
6F2AC944    E8 271C3F00     call    6F69E570

在6F2DC050我先是直接改了call最后处的返回值,把eax赋值成0,结果不行。有尝试了其他方法,结果也不行。不过我相信有办法对付这个addlightning的,也许只是需要点时间和耐心。

好了,换SelectUnit。这个我看了下,jass脚本里只有几处调用了SelectUnit,所以你可以直接让这个call返回。我试了下,确实可行。变换代码如下:

6F2C59A0    C3              retn

呵呵,就这么简单,只改了一个字节。注意,SelectUnit非jass脚本魔兽自己是不会去调用它的,所以你可以放心修改,只要它不出问题。这个call类似一个接口。

鉴于只修改了一个字节,我直接用小鸡bug的程序改了个现成的。修改方法已经写得很清楚了,稍微懂点编程和汇编的都可以自己写程序搞定了。

现成的可以到论坛下:http://bbs.pleee.com

分类: 专业技术, 作品集, 玩转war3 标签:

lynnMH 1.4 【11.26更新】

2008年11月26日 没有评论

=============lynnMH================
版本:1.4
功能:全面支持1.20e和1.22,全面支持浩方积分房(不修改平台任何数据),去除lpk方式以支持vista。lynnMH的主要特色在于并不修改游戏平台的任何内存数据来开全图。
说明:运行时需放war3目录。开了lynnMH,其他修改war3内存的外挂均不能正常使用!
过平台情况:VS,HF,GG,其他未测试平台应该能轻易通过!

任何问题请到lynn论坛:http://bbs.pleee.com反馈

下载请到http://bbs.pleee.com冰封王座板块

2008.11.25更新:
1.修复1.22掉线问题,全面支持1.22
2.全面支持浩方积分房,没有修改平台任何内存数据
3.原来的三种方式都删了,更易操作,轻松还原,支持vista系统
4.增加过dota-ah,交易助手
5.1.22退出时war3.exe不能自行关闭,请任务管理器手动关闭,这个bug也许无法修复!

2008.9.9更新:
1.针对vs更新了lpk方式,注意使用前先删除上个版本在war3目录里生成的lpk.dll。
2.增加版本检测,有新版本的时候会提示。
3.修正程序bug,欢迎到www.pleee.com提交bug

2008.7.30更新:
1.版本1.2
2.更新不大,主要是lpk方式有所改变,使用前请先删除上个版本在war3目录里生成的lpk.dll。

2008.7.23更新:
1.版本1.1
2.增加对魔兽1.22(剑心补丁版)的支持
3.提供三种MH方式可供选择,推荐lpk方式

分类: 专业技术, 作品集, 玩转war3 标签:

ring0试下身手,干掉gg驱动SSDT HOOK

2008年11月19日 没有评论

别看题目挺抢眼的,其实一点不难,估计gg平台也是初试驱动,几乎没有保护驱动,所以可以很轻易地被干掉。

原理上篇文章已经说了,是SSDT的NtOpenProcess被Hook了,还原之即可。不知道gg会不会再次hook,总之在开挂前开一次我放的这个干掉gg就可以开挂了——此程序只负责干掉gg驱动下的hook,至于gg平台本身的检测war3内存等概不管之,请自行解决! 

在驱动面前,本人也是菜鸟。此程序只在xp sp2下测试通过,其他平台可能会有问题,使用此程序可能导致蓝屏,请在使用之前保存相关工作或文档,切记!如果首次运行成功,以后就不会有问题了。

下载地址:http://www.qiannao.com/space/show/lynnux/上传分享/2008/11/19/干掉GG.rar/.page

分类: 专业技术, 作品集, 玩转war3 标签:

CoolMH 1.0发布

2008年11月3日 没有评论

==============CoolMH 1.0================

说明:此MH需按键才能显示全图,而且可能掉线,具体请参考程序运行界面里的说明。
此MH实际上可以算是半成品,因为可能会掉线,不过如果是主机会将把对方T出去,所以又可以算是主机必胜。
暂时只支持1.20e,1.22实际上可以随时出来,不过我想先解决掉线问题。

热键修改:
打开KEY.txt, VK_后面的就是按键的提示说明,比如VK_LBUTTON代表鼠标左键,后面的0×01就是我们要的数值,在CoolMH的那个热键里填写01就是了。
那个不懂的话自己研究下,别来问我,我很忙的。

申明:
CoolMH属lynn原创作品,版权仅归lynn所有,非任何论坛原创,转载时请注明出处:www.pleee.com

下载

========================================
很多人要CoolMH,今天心情好就送出来了。其实也没更新啥,就是去掉了退出时的广告以及使隐藏进程有效。

分类: 作品集, 玩转war3 标签:

关于MH的一个思路~~~

2008年10月6日 没有评论

最近在看rookit,看到了这本比较短的科普资料:Inside Windows Rootkits.pdf。让我见识了一种很新奇——当然对我来说——的隐藏rootkit的方法或者说是思路,叫Shadow walker ,下面是简介,不过是英文的,:P

Shadow walker

While kernel-level rootkits have generally focused on hiding processes, files, and registry keys,
there is one resource that rootkits have not traditionally aimed to hide: memory.              For rootkits, this
is a serious flaw, because it opens up the opportunity to detect them by scanning memory.                   At
BlackHat USA 2005, Jamie Butler and Sherri Sparks presented Shadow Walker, a rootkit that
aims to control the view that the operating system has on certain memory regions in a manner
that allows a rootkit to hide itself in memory [22].       The goal of Shadow Walker is to give a benign
view of memory regions that contain the rootkit whenever a request is made to read the memory,
but to give the true view of the rootkit whenever a request is made to execute code in the
memory.     In this way, when a scanner reads the memory to compare it to signatures, the scanner
does not see the rootkit’s code.

To accomplish this, Shadow Walker marks all of the rootkit’s memory as being paged out to disk,
causing a page fault to occur whenever the memory is accessed.                It then hooks the page fault
handler with code that determines whether the request was made to read the memory or execute
it. Depending on the nature of the request, Shadow Walker can either point to physical memory
holding the rootkit code, or physical memory holding benign data.

There are a number of ways to detect the presence of Shadow Walker.                  For example, its page
fault handler hook is implemented as an IDT hook, which, as discussed earlier,  can be detected.
Also, rootkit code is almost always in non paged memory, which cannot be paged out.                    Shadow
Walker marks this non paged memory as being paged out, which is a sign of its presence.                     Still,
Shadow Walker is a clever concept, and it adds yet another place to focus when attempting to
detect rootkits on a compromised system.

大概的意思就是无论rootkit怎么隐藏,它总会在内存里留下痕迹,那么我们就从内存入手来隐藏。把rootkit的执行代码放入分页内存中,这样当要读取、写入或者运行这段代码的时候就会引起分页故障,于是要转入相应的程序来处理,我们就可以hook这个处理程序,只有当由运行这段代码的时候才是rootkit真正的原本的面目,其余特别是读取代码页的时候就指向假的内存页,这样就不会发现rootkit了(假设是根据特征码检测rootkit)。上面最后那段文字可以不管,说的要检测这样的rootkit还是由很多种办法的,因为它要hook,但是它的思路是很好的!

所以如果MH做到驱动去了,HOHO,那办法就是相当地多了~~~

分类: 专业技术, 玩转war3 标签: