苹果微信多开飞机怎么开无敌模式

转载于:http://www.blogjava.net/zh-weir/archive//402821.html
最近微信出了5.0,新增了游戏中心,并内置了一个经典游戏《飞机大战》。游戏其实很简单,但由于可以和好友一起竞争排名,一时间受到大家的追捧,小伙伴们进入“全民打飞机”时代。
ios 版出来不久就被破解出了无敌模式。Android版出后好像一直风平浪静。周末无事,加之看雪zmworm版主邀请,于是花了一天的工夫研究了下。也出了个Android版的无敌模式增强版。具体来说就是无敌、双排子弹加无限炸弹。当然,这个不是重点,我们的重点当然是技术细节啦!
微信的游戏继承了Android版手机QQ游戏中心的思想,也采用插件动态加载方式。具体来说,就是插件及游戏以jar包形式存在,jar包中有classes.dex及其他资源文件,在运行时动态加载资源及classes.dex代码。这样的好处是灵活管理,易于扩展。以后更多的游戏只要上架到微信的服务器,用户就能在微信应用内部下载、安装、运行。具体原理可以参考我2011年的一篇文章 。
当然,那篇文章讲的只是基本原理,而微信在代码动态加载方面则走得更远。针对插件的管理及安全,它有一套完整的框架,并自称为sandbox。由于代码有做混淆,加之代码量挺大,所以我仅算管中窥豹,看到的也只是冰山一角。与实际情况有所出入,还请见谅!
一、微信游戏插件的安全校验
其实说实话,微信在游戏插件的安全架构方面花了不少功夫。我能破解并不是利用微信在安全方面的漏洞,而是Android系统本身的安全漏洞。这个漏洞也就是我前段时间发的以为是bluebox上报google的漏洞,后来被证实不是。详情请看 。
那微信是如何对游戏插件进行加载及安全校验的呢?
飞机大战的游戏插件以jar包的形式,放在微信apk的assets/preload文件夹下:
jar包中包括classex.dex、so本地库及drawable图片资源或者还有xml资源。微信处理插件加载的代码在com.tencent.mm.compatible.loader包中。加载插件资源的类叫做PluginResourceLoader,它是android.content.res.Resources的子类。
而最核心的加载类应该是PluginClassLoader。上面说的PluginResourceLoader也是它的成员变量。它似乎负责整个插件加载的各个环节调度。
Android动态加载类有一个弊端,就是dex文件必须释放为本地文件。这是dalvik虚拟机机制决定的。一直以为google或者dalvik会改,不过似乎到现在还没见改进。释放到本地缓存的dex是很容易受到攻击的,不过微信在这些细节上处理得还挺好,没有明显漏洞。这个后面再说。
PluginClassLoader会在微信安装后第一次启动时,扫描插件的情况,并将插件拷贝到自己应用data下面的app_dex文件夹下。接下来会对插件进行处理。将so库释放到app_lib文件夹下,将jar包中的classes.dex重命名释放到app_cache文件夹下。
在拷贝插件jar包的过程中,会对插件进行第一次校验——签名校验。关于签名校验的原理,可以参看我2011年的另一篇文章 。微信的签名校验就是微信APK的签名需要和插件jar包的签名一致。这里我考虑过用bluebox上报的ANDROID-8219321漏洞绕过插件jar包的签名检测。经过一段时间的研究发现了它还有第二次校验。。。
由于是在拷贝之前进行签名校验,所以我考虑过拷贝完成后,直接替换app_dex和app_lib下的文件的方法。发现均不可行。继续分析发现了第二次校验——MD5校验。一开始看到jar包命名就很疑惑,文件名后面一串数字是干嘛的。想过是MD5码,没做验证。直到碰壁之后,才发现了这里的奥秘。后面这一串数字就是jar包的MD5值。插件加载的时候会去解析这个MD5值,并存起来。在加载运行的时候会对这个MD5值进行校验,如果缓存中的文件MD5值不同,会用重新释放apk中的插件覆盖。缓存中的dex应该也有类似的机制。这部分代码分析得不是很透彻,大概原理如此,有感兴趣的朋友可以继续深入。
MD5值作文件名+签名校验,以为着利用ANDROID-8219321漏洞的企图落空了。因为ANDROID-8219321漏洞的前提是apk中文件的文件名需要保持不变,这样才能通过重名文件绕过签名校验。然而只要我们改了插件jar包,MD5值就必须得变,从而导致文件名改变。因此此路不通了。(也许可以通过修改MD5校验和签名校验的smali绕过校验,无奈我暂时没找到具体MD5校验的代码,只能作罢)。
MD5值作文件名+插件签名校验,再加上安装APK本身的签名校验。三重校验保证了微信游戏的安全性。
因此我只能采用 一文中所述的安全漏洞。此漏洞针对system/app和vendor/app下的apk只会校验manifest.xml文件签名。因此我可以任意修改插件jar包,在重新生成新包之后计算出新包的MD5值,并对新包进行重命名。对于插件的签名校验,则直接通过修改smali代码,屏蔽掉微信签名校验的函数功能,直接返回true:
这就是我们修改插件之后得以正常运行的理论基础及可行性保证。有了上面的理论,我们就可以开始修改游戏了!
二、飞机大战游戏破解
飞机大战这个游戏据说是腾讯一个程序员一周时间开发完成的作品。其实考虑到这个游戏的规模,除GUI和交互设计外,程序员一周时间应该也差不多了。没有太大出入。
此游戏采用的游戏引擎是libgdx。相信做过Android游戏的朋友对此款引擎不会陌生。如果在Android平台开源游戏引擎里,cocos2d当仁不让地排第一的话,那么libgdx也可以当仁不让地排第二了。cocos2d主要采用C++开发,而libgdx则主要采用java方式开发。学习成本低,开发周期短,是它的优势。当然它也是跨多平台的游戏引擎,运行效率方面稍有欠缺但也不错。因此广大的Android单机小游戏都是采用libgdx作为游戏引擎。
微信飞机大战的代码量不大,有兴趣的朋友可以研究下,移植成为一款独立的单机游戏应该也不难。下面我详细介绍下飞机大战游戏破解的技术细节。
第一步就是将飞机大战游戏的插件包从apk中释放出来。我们可以采用反编译APK的方式反编译这个插件包。修改smali代码之后,再打包回jar包文件。如果还有朋友对APK破解流程不熟悉的话,可以参考我以前的一篇文章 。这里我们主要介绍游戏的架构及破解思路。
解压之后,smali部分其实可以分为两个包:com.badlogic.gdx和com.tencent.mm.plugin.shoot。前面一个是libgdx导入的jar包,这个不是我们关心的内容。我们的重点就在com.tencent.mm.plugin.shoot这个包中。
游戏主要有两个Activity:ShootMainUI和ShootFlashUI。它们都继承自com.badlogic.gdx.backends.android.AndroidApplication,这个类事实上继承自Android系统的Activity。它们一个是主加载界面,一个是我们停留时间最长的游戏界面。当然需要了解,但都不是重点,重点是我们游戏中的各种角色:
这些角色构成了整个游戏的演员,他们都继承自同一个类:GameSprite。相当于游戏引擎中精灵的概念。它们都有生命值、宽高、速度、类型、状态等属性。这些类的定义都在actor子包内。在游戏过程中会对每个精灵做碰撞检测,当你发现你的飞机爆炸时,就是碰撞检测在起作用。顺便说一下,libgdx引擎采用的物理引擎是C++版的box2d,性能非常不错。
好了,我们具体的破解特性,我会以任务的形式一个一个娓娓道来。下面我们接到的第一个任务就是“永久双子弹”!
任务1、永久双子弹!
在玩飞机大战时,双子弹意味着更大的威力。可以消灭更多的敌机,化险为夷。然而在实际游戏中我们只有吃到PROPS_DOUBLE之后才能拥有一段有限时间的双子弹状态。
双子弹属性属于HERO的,对应的类是Player和PlayerActor。Player继承自GameSprite,而PlayerActor则是libgdx中的actor类的概念。两个前者注重状态和属性,后者注重逻辑和动作。
Player在构造函数初始化时就会设置子弹类型:
我们只需要把BulletType从NORMAL改为DOUBLE就可以了。
PlayerActor会对子弹类型进行定时地检测,检测是会将双子弹还原为单子弹。应该是为了处理吃到PROPS_DOUBLE后,一段时间子弹还原的问题。所以我们一并改掉:
OK,双子弹破解任务完成!
任务2、炸弹无限!
炸弹是个好东西,威力无穷。关键时候全靠它清屏,消灭所有敌机!而且它还是刷分利器。当然,只有在它变为无限的时候,我们才能用它来刷分。
这里我试图修改Player的getBombNumber和setBombNumber方法,发现均不行。后来转变思路,只要在使用炸弹后炸弹数量不减少,就能实现无限炸弹的功能。经过代码追踪,最后定位到一处混淆代码处。将-0x1改为了0x0。
修改的结果,在吃到两个炸弹后使用炸弹不会减少炸弹数量。吃一个炸弹时,使用炸弹后炸弹按钮消失,因此无法做到无限。请记住一定要存到两个炸弹之后才能无限炸弹。无限炸弹破解任务完成!
任务3、开启无敌模式!
长生不死一直是我们人类的终极梦想,在游戏中也不例外。iphone版微信也是因为有了飞机大战无敌模式而被各大新闻站点竞相转载。让我们Android版也无敌一下吧~
前面提到了GameSprite是所有角色的父类,在游戏用物理引擎做碰撞检测后,会调用GameSprite类的hit方法。hit方法中将GameSprite的liftCount减一,如果减到0则将状态设置为DEAD。
GameSprite的状态有如下一些:
INVINCIBLE
在飞机正常的死亡过程中,是先HITING,再EXPLODING,再DEAD。FLIGTHING我不清楚干嘛的,INVINCIBLE应该是无敌模式。但是在我的破解里,并没有使用这个模式,而是强制在碰撞检测结果中,把它列在了生死薄之外。至于INVINCIBLE的方式,大家可以试试能不能很好的维护这个状态。
具体来说就是hit方法不管GameSprite是hero也好,enemy也罢,均一视同仁,生命值减一,或者死掉。然而我们可以通过修改smali代码,将hero列在生死薄之外:
其中goto_1标签跳转到return-void。这样我们的hero将永远不会被hit,因此也就无敌啦!
任务4、独孤求败。。。
本以为完成任务3就大功告成了,谁知我们缺遇到了无敌的尴尬——死不了。。。死不了,意味着永远无法结束游戏,永远不会有机会上传自己的得分进入排行榜。哎,现在终于明白为什么独孤求败了。。。
基于此,我们得想个办法触发飞机非自然死亡。想来想去,我还是觉得让飞机自己决定自己的生死最合理。具体就是当飞机飞到屏幕最上方时触发死亡。因为一般情况,我们不会把飞机飞到屏幕最上方,所以误操作概率极低。
通过前面我们知道hero飞机的类就是Player。而Player中有一个函数更新飞机的坐标位置:updatePosition。所以我们可以在这个函数中进行我们想要的操作:
其中0x64就是我指定的y坐标下限100。当飞机坐标y在100以内时,我会把飞机的LiftCount设置为0,然后再将状态设置为EXPLODING。飞机就会爆炸死亡了~
OK,任务完成,打完收工!
三、一些扫尾工作
插件包修改完成后,我们通过apktool,将其打包回jar包。res资源包需要手动添加会jar包中。然后按照第一节所说的,生成jar报的MD5码,重命名jar包。
微信APK也需要按第一节的方法,将插件的签名校验屏蔽掉。编译出classes.dex,替换微信原始包中的classes.dex。
再将APK包中的飞机大战插件换为我们编译出来重命名的这个jar包。
OK,APK准备好了。
由于我利用的是 一文中所述的安全漏洞,所以安装此APK的过程并不是菜鸟能玩的。。。简单来说,你需要root权限,并能将system分区mount为可写。
然后卸载你原本的微信。将这个apk放到/system/app/文件夹下。稍等片刻,你就是打飞机的高手了!
import pygame
from pygame.locals import *
from sys import exit
import time
from Enemy ...
大家好,今天我给大家分享一个仿微信飞机大战的Android游戏源码。话不多说,先来几张图片看看效果。
简单描述下,有4种不同飞机,敌机3种,我方1种,分别为:大,中,小敌机和我方战机,我方战机不停...
本应用使用《Unity3D\2D手机游戏开发》提供的资源,版权归属其作者,在此感谢作者。此应用时基于原作的二次开发。
增强要素:
1.加入2s cd的机身旋转,旋转时保持无敌状态,人挡杀人。。。
1.摄像机的设置需要注意:选择摄像机的投影方式为Orthographic(正交投影)。
2.控制飞船的移动,其实就是控制一个3D的Vector3(x,y,z)的变换,首先需要得到
在x轴方...
项目详情见: https://github.com/VonSdite/Plane_Wars飞机大战 (微信版)
使用python的pygame模块制作
学习游戏中的碰撞检测, 音效等
体会面向对象编程...
上一篇文章教了大家如何让飞机不停地向下移动,通过定时器,对吧!我们的setInaterval(function(){},10);
这一次呢,我会教大家如何让你们的飞机在一个随机的x坐标中产生,这就需...
没有更多推荐了,微信打飞机无限复活无敌模式破解教程_百度经验
&&&&&&&&&小游戏微信打飞机无限复活无敌模式破解教程
百度经验:jingyan.baidu.com&现在你微信和QQ上的小伙伴已经全部惊呆了吧?今天小编再为大家介绍一下微信上另一款游戏——《飞机大战》的无限复活教程,让你的打飞机成绩也遥遥领先!1.确定自己的设备是已越狱设备(能找到下图红框内的软件就说明是已越狱软件了)。2.下载微信飞机大战无敌模式DEB文件【飞机大战无敌模式DEB文件】3.设备连接电脑,打开91、Tools等第三方管理工具(小编用iTools做演示)找到我的设备-&文件系统-&越狱系统-&找到路径“/private/var/root/media/cydia/autoinstall/”,或者直接点击常用目录下的Cydia安装目录,将要安装的DEB文件导入。完整版的详细内容可参阅参考资料!原作者:单游之家经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。投票(0)已投票(0)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验120500热门杂志第1期你不知道的iPad技巧3837次分享第1期win7电脑那些事6677次分享第2期新人玩转百度经验1425次分享第1期Win8.1实用小技巧2670次分享第1期小白装大神1964次分享◆请扫描分享到朋友圈多品类齐全,轻松购物
快多仓直发,极速配送
好正品行货,精致服务
省天天低价,畅选无忧'热门专区'+
您现在的位置: &
微信打飞机攻略全解 打飞机技巧大全
12:08:00 发表 | 来源:
推荐微信5.0打飞机攻略:
微信5.0 更新后,打飞机成了全国最热的游戏。然而,并不是每个人打飞机都能像我这样打到数百万的分数,在这里,我跟大家分享一些打飞机技巧。
推荐阅读&&
1、微信打飞机其实并不是真正意义上的经典打飞机游戏,虽然它原本也可以做成经典打飞机游戏那样,可是因为触摸屏的特性与追求简洁和快的微信产品标准,实际上已经脱离了经典,变成了微信和打飞机的奇怪混合产物。
从这个层面上来说,微信打飞机的正式名字&经典飞机大战&是错的。
2、经典打飞机中,飞机上下左右的移动一般是匀速的,可是在微信里,变成了极快跟随手指&&手指动多快,飞机移动就有多快。这让经典打飞机中以精确的速度、位置控制躲避漫天同样匀速飞舞的子弹的优雅快感消失。但这也使得很多诡异的打飞机技法得以实现,比如:
-- 擦着巨型飞机的边缘打击,发现打不死的瞬间快速侧移;
-- 在&死亡时间&(后面解释),快速寻找到小飞机突破缝隙,摆脱敌方密集火力造成的位置压制。
3、现在我们已经知道了飞机移动是不限速的,但微信打飞机依然有许多遵循经典飞机的地方,比如很重要的一条特性:飞机子弹以一定频率发射,可是在近距离时,子弹打中敌人并消失后马上会发射新子弹。
这导致了一个常见状况,就是距离敌人越近,飞机子弹发射频率越来越快。我们通常看见有人被巨型飞机逼到最底部,可是因为子弹频率变快,最终干爆巨型飞机。
4、 利用移动不限速和子弹频率变快的特性,通过主动贴近敌方,可以实现对大飞机尤其是巨型飞机的快速打击,我称之为&进击&(简称 JJ,洋气点也可以说Death Closing)。在打飞机时,你可以用 JJ 获得更爽快和有效的结果,但它对操作有要求,需要勤加练习。JJ可以在中屏就快速消灭巨型飞机,然后再快速侧后移动来消灭更多飞机,获取更高分数。
5、 关于分数。小飞机、大飞机和巨型飞机的分数分别为
和 3万。不要相信那些&躲避为重、消灭为辅&的不负责任的说法,记住这一点:你多消灭一个小飞机,就有可能成为你的好友无法逾越的高分,在整整一周的时间里, 他都有可能因为你最终比他多打了 1000 分而哭泣。
而且,对消灭的追求虽然冒险,但这才能激励你的人生,在打飞机技巧上获得正向回馈。人总要积极一些的。
6、 可是躲避依然很重要。在冷静判断敌机来速和子弹频率之后,如果确认已经无法消灭对方,当然需要躲。躲避也有技巧,首先就是在一次次打飞机的练习中,培养躲 避的时机意识,很多人都会太早陷入不安全的幻觉,面对巨型飞机选择回避,殊不知这反而可能让你陷入快速到来的大飞机的包围,甚至直接碰到小飞机。
7、其次,永远记住虽然你的飞机是三角形,但只有机身部分碰触敌机才会挂掉,机翼是虚幻的、安全的。
尤其是敌机密集的时候,你第一要做的是迅速观察敌机布局,找到一条只有小飞机或只在远处有一个大飞机的纵轴,然后快速移动到这条轴上(一般容易选择的是左右最边缘的部位)。这种移动方式我称之为&急避&(JB,洋气点也可以说 Death Crossing)。
当打飞机分数已经达到 100 万分而你还没挂时,记得深吸一口气,频繁使用 JB 的时刻已经到来。有时候一个接一个的 JB,直接决定了你最后所到达的高度,高阶玩家甚至能玩出&幻影 JB&。
当然,这一刻永远不要忘记一个最重要的打飞机元素,那就是&双枪&和&雷&。
8、经典打飞机中的必备要素是火力加强和雷,这两点在微信打飞机中都有异化。微信中火力加强只有一种,那就是蓝色的双枪;微信的雷也只有一种,消灭当前全屏敌机,可并不能让玩家进入无敌状态。
双枪和雷,会间隔 30 秒随机出现。其中双枪不用赘述,如同很多低级攻略里说的,拿到双枪,一个干俩!只要没有低级失误,这个超过机身范围的武器会让你进入半无敌的状态,只需要小心两种东西:多个快速前移的大飞机群、自身移动造成的侧撞。
可用雷一定要小心,和双枪一样,雷也是拿分用的,而不是救急用的。你没有雷无敌状态,别犯傻到最后一刻才点雷,一定要预留提前量。注意三点:
-- 巨型飞机被雷爆炸之后片刻,你碰上去仍然会挂,一定要绕开;
-- 微信打飞机支持两点同时触摸,所以新手建议一手打飞机,另外一只手放雷;
-- 雷最多只能储存 3 个,再吃也没有用,所以一定要有效利用。
9、谈完了生存,最后我们谈谈死亡。虽然没有获得微信官方的统计数据,但全凭经验,有个死亡率最高的地方:
双枪的持续时间为 18 秒,可武器是间隔 30 秒才出现的,这意味着你在双枪结束后有 12 秒处于脆弱状态。这 12 秒就是你的死亡时间,也是 JB 展现的时刻。
7K新浪官方微博
7K腾讯官方微博
已有10000人
已有10000人
查看微信打飞机攻略相关新闻
AV女优代言页游 宅男们你们怎么看?
热门专区推荐> &>&&>&&>&正文
  问:微信5.0打飞机怎么取得高分?无敌模式开启方法
  微信5.0中新增了一个游戏中心功能,其中有一个内置游戏《经典飞机大战》,昨天开始小编就在朋友圈中不断的看到有朋友分享排行榜,对于想提高排名成绩的机友们而言很想知道微信5.0打飞机怎么取得高分,所以下面小编就来和大家分享下微信5.0打飞机无敌模式开启方法,教大家如何取得高分。
微信5.0打飞机怎么取得高分
  现在微信5.0打飞机游戏已经被破解了,就在昨天下午就已经出现了打飞机破解补丁只要是越狱过的iPhone手机,下载安装微信打飞机无敌模式补丁后,玩家的飞机就永远不会被击落,只要你有时间就可以无限刷分。在这里小编需要提醒大家的是微信5.0打飞机无敌模式开启的前提是你的手机已经越狱,开启无敌模式后微信5.0打飞机就可以取得高分了,想怎么玩就怎么玩。
&相关文章推荐:
        
(收藏本站)
了解HTC最新资讯了解三星最新资讯
提示:支持键盘“← →”键翻页}

我要回帖

更多关于 ios微信多开不封号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信