返回信息流前两天在Android Market上下载了一个射击类游戏——ArmySniper,游戏中玩家扮演某国的一名狙击手为维护世界和平与正义与恐怖分子展开殊死搏斗。游戏规则简单粗暴,在限定的时间内干掉藏在各个角落的恐怖分子即可。但是恐怖分子同时也会向“你”射击,而且如果“你”不幸身负枪伤5次,那就Game Over了。
我玩儿了几关之后觉得游戏已经做的不错了,但有些地方还应该稍微改进一下。比如受伤次数限制为最多5次有点不合理(某国的狙击手不可能这么不经打吧?!);还有如果狙击枪可以像冲锋枪那样不断的射击会更好(因为游戏中有些恐怖分子总是不安分的跑来跑去)
于是用一款名为DoAPK的工具,对APK文件做了反编译,并对反编译后的smali文件做了以下修改:
1.打开反编译后的目录
C:\Documents and Settings\XXXXXXX\桌面\armysn~1.apk.decode\smali\com\sniper\board中的文件GameBord.smali,可以看到GameBord类中有一个私有成员变量
.field private Health:I
在构造函数中对其赋值为5
.line 143
const/4 v0, 0x5
iput v0, p0, Lcom/sniper/board/GameBoard;->Health:I
我希望狙击手的生命力可以更旺盛一些,于是将0x5改为0x63,也就是99。
在成员函数checkIsBeenShot中可以看到每中一枪,Heath就减1
const/4 v7, 0x1
.line 313
iget v3, p0, Lcom/sniper/board/GameBoard;->Health:I
sub-int/2addr v3, v7
iput v3, p0, Lcom/sniper/board/GameBoard;->Health:I
又觉得99似乎也不靠谱,于是就改为
.line 313
iget v3, p0, Lcom/sniper/board/GameBoard;->Health:I
sub-int/2addr v3, v7
nop
checkIsBeenShot中还有一处也对Health做减一操作,同理将iput ×××改为nop
这样就可以保证狙击手能够“刀枪不入”了
2、同样是在GameBord.smali文件中,在成员函数drawButton中有以下代码
.line 678
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 679
.local v0, now:J
iget-boolean v2, p0, Lcom/sniper/board/GameBoard;->FLAG_iSLoaded:Z
if-nez v2, :cond_0
.line 680
iget-wide v2, p0, Lcom/sniper/board/GameBoard;->lastShootTime:J
sub-long v2, v0, v2
const-wide/16 v4, 0x3e8
cmp-long v2, v2, v4
在每次点击“射击”按钮后,程序会用当前时间减去上一次射击时间,如果差值小于1000毫秒,则不会继续射击,为了将狙击枪改为造冲锋枪,把0x3e8改为0x0即可。
3.完成上述两处修改之后,再次使用DoAPK将armysn~1.apk.decode目录下的各种文件打包编译为apk文件。(DoAPK会自动为新编译好的apk文件签名),然后在模拟器或真实设备中安装即可
附件内容是APK安装文件,进入游戏后选择“continue”。由于没有对"Story Mode"的相关文件进行修改,所以上述内容在"Story Mode"下无效。
参考
1、http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
2、http://forum.byr.edu.cn/article/MobileTerminalAT/3592
[upload=1][/upload]
附件(4.5MB) armysniper_NEW.apk[upload=1][/upload][upload=2][/upload]
这是一条镜像帖。来源:北邮人论坛 / security / #32500同步于 2011/6/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Security机器人发帖
分享一个Android下的射击类游戏——ArmySniper
MJ1112
2011/6/11镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
你玩的不叫游戏……
【 在 MJ1112 (MJ1112) 的大作中提到: 】
: 前两天在Android Market上下载了一个射击类游戏——ArmySniper,游戏中玩家扮演某国的一名狙击手为维护世界和平与正义与恐怖分子展开殊死搏斗。游戏规则简单粗暴,在限定的时间内干掉藏在各个角落的恐怖分子即可。但是恐怖分子同时也会向“你”射击,而且如果“你”不幸�
: 我玩儿了几关之后觉得游戏已经做的不错了,但有些地方还应该稍微改进一下。比如受伤次数限制为最多5次有点不合理(某国的狙击手不可能这么不经打吧?!);还有如果狙击枪可以像冲锋枪那样不断的射击会更好(因为游戏中有些恐怖分子总是不安分的跑来跑去)
: 于是用一款名为DoAPK的工具,对APK文件做了反编译,并对反编译后的smali文件做了以下修改:
: ...................
不去北戴河在这研究这个。。。
【 在 MJ1112 (MJ1112) 的大作中提到: 】
: 前两天在Android Market上下载了一个射击类游戏——ArmySniper,游戏中玩家扮演某国的一名狙击手为维护世界和平与正义与恐怖分子展开殊死搏斗。游戏规则简单粗暴,在限定的时间内干掉藏在各个角落的恐怖分子即可。但是恐怖分子同时也会向“你”射击,而且如果“你”不幸�
: 我玩儿了几关之后觉得游戏已经做的不错了,但有些地方还应该稍微改进一下。比如受伤次数限制为最多5次有点不合理(某国的狙击手不可能这么不经打吧?!);还有如果狙击枪可以像冲锋枪那样不断的射击会更好(因为游戏中有些恐怖分子总是不安分的跑来跑去)
: 于是用一款名为DoAPK的工具,对APK文件做了反编译,并对反编译后的smali文件做了以下修改:
: ...................