吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 32718|回复: 65
收起左侧

[Android 分享] 新手对一款安卓游戏破解(一次小尝试)手机上直接破解

  [复制链接]
鬼炙 发表于 2014-1-12 21:57
本帖最后由 鬼炙 于 2014-1-13 17:31 编辑

游戏是 雷霆战机2完美版 百度那里下的
游戏破解非常简单 对新手来说是一个可以成功的尝试~~
之前看了很多大大的帖子心动了 于是对自己的这个游戏也进行了破解的尝试 大神勿喷

使用到的是手机端的工具  dalvik字节码编辑器  简称工具吧~

用工具打开APK包 里的 dex文件 然后搜索 购买失败 (支付失败就会提示这个关键字)
S40112-204313.jpg 这么多。。。好吧。。我就是想买点水晶。。。这些英文只会一点点啊。。不过根据我多年的经验以及完美的第六感(省略N字)表示一定是这个啦 cystal(其实就是百度了一下)
点进去然后选择METHODS继续搜索  购买失败  这样可以快一点~~ 不过缺点是好像显示不准确  我使用搜索后显示是ISCLOSED 实际上应该是 smsProcess
S40112-211417[1].jpg
打开这个文件
[AppleScript] 纯文本查看 复制代码
if-eqz v4 :label_105
sget v1 La5game/leidian2/gamestate/UserData;->gameGold:I
add-int/lit16 v1 v1 10000
sput v1 La5game/leidian2/gamestate/UserData;->gameGold:I
sget v1 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
add-int/lit16 v1 v1 10000
sput v1 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
sget v1 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const v2 0x186a0
if-lt v1 v2 :label_80
const/16 v1 0xf
invoke-static {v1} La5game/leidian2/Utilities;->showAchPop(I)V
label_26:
invoke-static {} La5game/common/Common;->getGame()La5game/leidian2/Leidian2Game;
move-result-object v1
new-instance v2 La5game/leidian2/gamestate/GS_Update;
invoke-direct {v2} La5game/leidian2/gamestate/GS_Update;-><init>()V
invoke-virtual {v1,v2} La5game/leidian2/Leidian2Game;->setGameState(La5game/client/A5GameState;)V
invoke-virtual {v3} La5game/leidian2/gamestate/BuyCrystalMessageBox;->close()V
invoke-static {} La5game/lib/userrecord/A5UserRecord;->createRecordFee()La5game/lib/userrecord/UserRecordFee;
move-result-object v0
iget v1 v3 La5game/leidian2/gamestate/BuyCrystalMessageBox;->smsSendType:I
iput v1 v0 La5game/lib/userrecord/UserRecordFee;->feeID:I
sget-object v1 La5game/leidian2/gamestate/BuyCrystalMessageBox;->FEE_NAMES:[Ljava/lang/String;
iget v2 v3 La5game/leidian2/gamestate/BuyCrystalMessageBox;->smsSendType:I
aget-object v1 v1 v2
iput-object v1 v0 La5game/lib/userrecord/UserRecordFee;->feeName:Ljava/lang/String;
sget-object v1 La5game/leidian2/gamestate/BuyCrystalMessageBox;->FEE_PRICES:[I
iget v2 v3 La5game/leidian2/gamestate/BuyCrystalMessageBox;->smsSendType:I
aget v1 v1 v2
iput v1 v0 La5game/lib/userrecord/UserRecordFee;->price:I
const/4 v1 1
iput-boolean v1 v0 La5game/lib/userrecord/UserRecordFee;->bSuccess:Z
invoke-static {v0} La5game/lib/userrecord/A5UserRecord;->report(La5game/lib/userrecord/UserRecord;)V
const-string v1 "购买成功"
invoke-static {v1} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
invoke-static {} La5game/leidian2/gamestate/UserData;->saveSmsData()V
label_79:
return-void
label_80:
sget v1 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const v2 0xc350
if-lt v1 v2 :label_93
const/16 v1 0xe
invoke-static {v1} La5game/leidian2/Utilities;->showAchPop(I)V
goto :label_26
label_93:
sget v1 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const/16 v2 0x2710
if-lt v1 v2 :label_26
const/16 v1 0xd
invoke-static {v1} La5game/leidian2/Utilities;->showAchPop(I)V
goto :label_26
label_105:
invoke-virtual {v3} La5game/leidian2/gamestate/BuyCrystalMessageBox;->smsCancel()V
const-string v1 "购买失败"
invoke-static {v1} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto :label_79




就是上面这些啦
====大部分语句我看不懂 不过 GOTO这种还是能理解。。
比如 goto :label_77  就是跳到label_77  下面执行啦~====

本来我是想寻找发短信的地方 修改成发送成功什么的。。后来发现我没这么高的技术。。。所以嘿嘿
从以上代码的第一句可以看出  if-eqz v4 :label_105   如果什么什么就到label_105   
我看看label_105 是什么

label_105:
invoke-virtual {v3} La5game/leidian2/gamestate/BuyCrystalMessageBox;->smsCancel()V
const-string v1 "购买失败"
invoke-static {v1} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto :label_79


{:1_903:}失败 第一句就失败 !!! 好 就这样如何改呢?
删掉 就这样   是不是感觉很美技术含量~~HOHO我就会这点
OVER
同理。。。游戏在通了第一关后就回提示激活  GS-game 就是这个啦 再次在里面搜索 购买失败 定位  然后乃们懂得。。
运行后我们点购买水晶然后拒绝发送短信 返回就是购买成功啦。。。

激活也一样 不过游戏激活需要你通完关 然后重新进下游戏激活 第一次激活会失败

最后 。。有木有人知道那个大礼包怎么改~~~~求指导~~

各位客官看着可以的话能否支持点热心a~~
  游戏和工具我就不上传了 大家百度
dalvik字节码编辑器
雷霆战机2完美版 安卓
可以下到

====================
楼下新增对礼包码的修改

























免费评分

参与人数 2热心值 +2 收起 理由
B6B6B6 + 1 我很赞同!
低调(d-iao) + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 鬼炙 发表于 2014-1-13 17:28
本帖最后由 小试锋芒 于 2014-9-9 18:55 编辑

雷霆战机2完美版的 礼包码的获取。。
礼包码的关键字有 礼包
用dalvik打开dex 搜索 礼包 搜到两个
S40113-171304.jpg
如果对游戏简单分析过可以知道我们要的东西在第二个 点进去在methods里继续定位 礼包
S40113-171424.jpg
S40113-171536.jpg 选择第二个
以下是里面的代码
[AppleScript] 纯文本查看 复制代码
const v11 0x9c40
const/16 v10 0x2710
const/16 v9 0xf
const/16 v8 0xe
const/16 v7 0xd
sget-object v3 La5game/leidian2/MyInputConnection;->inputString:Ljava/lang/String;
invoke-virtual {v3} Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v3
const-string v4 ""
if-eqz v3 :label_29
const/4 v2 0
const/4 v1 0
label_23:
invoke-virtual {v3} Ljava/lang/String;->length()I
move-result v5
if-lt v1 v5 :label_39
label_29:
const-string v5 ""
if-ne v4 v5 :label_85
const-string v5 "输入有误1,请重新输入!"
invoke-static {v5} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
label_38:
return-void
label_39:
invoke-virtual {v3,v1} Ljava/lang/String;->charAt(I)C
move-result v5
invoke-static {v5} Ljava/lang/Character;->isDigit(C)Z
move-result v5
if-eqz v5 :label_82
add-int/lit8 v2 v2 1
const/16 v5 0x9
if-le v2 v5 :label_61
const-string v5 "2输入的礼包码不正确,请重新输入!"
invoke-static {v5} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto :label_29
label_61:
new-instance v5 Ljava/lang/StringBuilder;
invoke-static {v4} Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v6
invoke-direct {v5,v6} Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3,v1} Ljava/lang/String;->charAt(I)C
move-result v6
invoke-virtual {v5,v6} Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
move-result-object v5
invoke-virtual {v5} Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
label_82:
add-int/lit8 v1 v1 1
goto :label_23
label_85:
invoke-static {v4} Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
if-nez v0 :label_97
const-string v5 "输入有误3,请重新输入!"
invoke-static {v5} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto :label_38
label_97:
rem-int/lit16 v5 v0 337
if-nez v5 :label_212
sget v5 La5game/leidian2/gamestate/UserData;->gameGold:I
add-int/lit16 v5 v5 20000
sput v5 La5game/leidian2/gamestate/UserData;->gameGold:I
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
add-int/lit16 v5 v5 20000
sput v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const v6 0x186a0
if-lt v5 v6 :label_174
invoke-static {v9} La5game/leidian2/Utilities;->showAchPop(I)V
label_123:
sget v5 La5game/leidian2/gamestate/UserData;->gameGold:I
add-int/2addr v5 v11
sput v5 La5game/leidian2/gamestate/UserData;->gameGold:I
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
add-int/2addr v5 v11
sput v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const v6 0x186a0
if-lt v5 v6 :label_193
invoke-static {v9} La5game/leidian2/Utilities;->showAchPop(I)V
label_143:
const-string v5 "恭喜获得6万水晶,5个必杀,5个护盾!"
invoke-static {v5} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
const/4 v5 1
sput-boolean v5 La5game/leidian2/gamestate/UserData;->bhuodong:Z
sget v5 La5game/leidian2/gamestate/UserData;->bombNum:I
add-int/lit8 v5 v5 5
sput v5 La5game/leidian2/gamestate/UserData;->bombNum:I
sget v5 La5game/leidian2/gamestate/UserData;->transNum:I
add-int/lit8 v5 v5 5
sput v5 La5game/leidian2/gamestate/UserData;->transNum:I
invoke-static {} La5game/leidian2/gamestate/UserData;->saveGameData()V
invoke-static {} La5game/leidian2/gamestate/UserData;->saveSmsData()V
const/4 v5 2
sput v5 La5game/leidian2/gamestate/GS_Cover;->state:I
goto/16 :label_38
label_174:
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const v6 0xc350
if-lt v5 v6 :label_185
invoke-static {v8} La5game/leidian2/Utilities;->showAchPop(I)V
goto :label_123
label_185:
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
if-lt v5 v10 :label_123
invoke-static {v7} La5game/leidian2/Utilities;->showAchPop(I)V
goto :label_123
label_193:
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
const v6 0xc350
if-lt v5 v6 :label_204
invoke-static {v8} La5game/leidian2/Utilities;->showAchPop(I)V
goto :label_143
label_204:
sget v5 La5game/leidian2/gamestate/UserData;->gameGoldTotal:I
if-lt v5 v10 :label_143
invoke-static {v7} La5game/leidian2/Utilities;->showAchPop(I)V
goto :label_143
label_212:
const-string v5 "输入的礼包码不正确4,请重新输入!"
invoke-static {v5} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto/16 :label_38

上面的代码我对这些错误提示都添加了一个数字 1234 这是为了知道在输入11位礼包码错误后到底会提示哪个(跳转太多我有的也看不懂,干脆就编号然后打包运行下,这样就可以知道了)
保存然后安装运行下

注意礼包码我是用了11位数字
然后游戏提示
"输入的礼包码不正确4,请重新输入!“


很明显是
[AppleScript] 纯文本查看 复制代码
label_212:
const-string v5 "输入的礼包码不正确4,请重新输入!"
invoke-static {v5} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto/16 :label_38

往上找是哪里跳到了212

[AppleScript] 纯文本查看 复制代码
label_97:
rem-int/lit16 v5 v0 337
if-nez v5 :label_212


rem-int/lit16 v5 v0 337 大概意思是说 337%V0  结果放到V5里(%是取余 别告诉我不知道“取余”是什么意思啊。。)
if-nez v5 :label_212  如果V5里的值不为0就跳到212

看到这里我果断 直接把337改成1不就哦了么。。呵呵呵呵
当然我们也可以不修改 只要这个激活码是337的倍数就哦了~~记住礼包是11位 比如33700000000






 楼主| 鬼炙 发表于 2014-1-13 17:53 来自手机
本帖最后由 鬼炙 于 2014-1-14 21:28 编辑

礼包只能激活一次 那么我们再来解除他的一次限制吧    关键字 已经领过
label_714:
const-string v2 "您已经领过礼包,祝您游戏愉快,谢谢!"
invoke-static {v2} La5game/leidian2/Utilities;->showMessage(Ljava/lang/String;)V
goto/16 :label_316   


代码太长我就贴出部分吧
找到是哪里来到了714

if-ne v1 v2 :label_316
sget-boolean v2 La5game/leidian2/gamestate/UserData;->bhuodong:Z
if-nez v2 :label_714
invoke-virtual {v10} La5game/leidian2/gamestate/GS_Cover;->gotohuodong()V
label_316:
iget-object v2 v10 La5game/leidian2/gamestate/GS_Cover;->set1Btn:La5game/common/XButton;

if-nez v2 :label_714   如果不为0就跳 我们可以改成为0跳 或者删除他 houhou
另外从上一句sget-boolean v2 La5game/leidian2/gamestate/UserData;->bhuodong:Z
可以看出读取了一个值到v2里  而这个值很明显就是判断是否领过礼包的
=================
既然有读出,那一定有写入
sget       对应            sput
=================
我上面的帖子代码可以找找然后改掉他

比如写入0
const/4 VX 0
或者删除,,,,@ω@


有和我一样的新手有兴趣自己改改吗?
yyn116yyn116 发表于 2014-3-27 10:19 来自手机
需要学习c语言吗?

点评

至少得能看懂些吧  发表于 2014-4-9 19:14
吾爱-路人甲 发表于 2014-1-12 22:06
我现在还没有研究apk了。先看看
☆茗记★ 发表于 2014-1-12 22:27
膜拜大大会破解移动游戏

点评

=-=我去。。。我也是新手  发表于 2014-1-12 22:38
晗丶 发表于 2014-1-12 22:48
这东西找了好久勒,谢谢!!
歪啵猪 发表于 2014-1-12 23:02
先回复了好东西收下了!!
Enet 发表于 2014-1-13 04:16 来自手机
额。。。。。
网名够不够虐心 发表于 2014-1-13 07:15 来自手机
表示看不懂
许nl一世柔情 发表于 2014-1-13 22:27
很好的教程
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 07:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表