用as开发flash游戏的外挂
前阵子突然没什么事干了..
老板不找东西给我做,主程不找东西给我做..慢慢我就会觉得自己是个伟大的艺术家,在活着的时候是不会受到别人重视的.
当然我比那些伟大的艺术家更伟大,为什么?的区别就是,我知道我死后也不会受到别人的重视..所以我们要怎么做?我们要自己找事做..
无聊去反编译了TheMiner的代码去看了下..收获到个不错的事件..那就是allComplete..
想着TheMiner既然可以读取到所有游戏的信息,分析并处理..那我为什么不可以用它来处理个别的游戏呢..例如是我们自己的游戏..
参考资料除了上面提到的TheMiner,还有下面这个网站..
http://philippe.elsass.me/2010/09/as3-hacking-preloadswf-for-fun-and-profit/
其实我也是跟大部分人一样..懂得26个英文字母而已..然后啃了很多,才勉强看到那句重点:
All you need is “allComplete”
下面是要认识到的两个基本的东西:
1.怎么使用allComplete:
package { import flash.display.LoaderInfo; import flash.display.Sprite; import flash.display.Stage; import flash.events.Event; public class PreloadSwf extends Sprite { public function PreloadSwf():void { addEventListener("allComplete", allComplete); } private function allComplete(e:Event):void { removeEventListener("allComplete", allComplete); var info:LoaderInfo = e.target as LoaderInfo; trace(info.url, "is being monitored"); // now let the fun begin! try: // info.content // info.content.stage // info.parameters // info.applicationDomain // info.bytes } } }
ps:很简单的. 做监听..然后接收到事件的时候把监听断掉, 避免有更多的事件触发做了重复多余的东西..
在这里有个很好用的东西..每个allComplete传过来的data都是完整无加密的..说是这些数据是可以存起来的.
如果说我们想破解某个已经加密的swf文件..可以通过这种方法把它取出来...
当allComplete触发完成之后,就可以通过LoaderInfo的信息去取我们所要的类了...既然取到我们要的类,那我们还有什么事做不了的呢..
2.配置mm.cfg
这个文件里面存了我的破解swf文件路径..不太了解的话可以搜索一下TheMiner的配置..
PreloadSwf=swf文件路径
然后把这个配置文件存放在用户目录下,例如我的系统是win7,装个C盘.用户名是yans.那目录应该是C:\Users\Yans..
其它的系统可以参考这个
*Macintosh OS X /Library/Application Support/Macromedia *Windows 95/98/ME %HOMEDRIVE%\%HOMEPATH% *Windows 2000/XP C:\Documents and Settings\username *Windows Vista C:\Users\username *Linux /home/username
大概写了些基本的方法.下次再写一些具体的实例..还有现在用的简单的一个框架..