吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 29627|回复: 72
收起左侧

[Android 原创] 《乐活兔》详细教程

  [复制链接]
lzc090 发表于 2019-1-6 01:07
本帖最后由 lzc090 于 2019-5-1 08:40 编辑

准备:
本游戏为coscos2dx引擎,将libMyGame.so直接丢进IDA进行分析,和IL2少了一部dump

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.金币修改

1.直接搜索coin你会发现或者搜索DataManager所有需要的都可以找到

11.PNG

红线部分的DataManager::getCoin其实就是我们要修改的地方

看到DataManager也就知道数据管理,所有修改也是修改这里面的。

伪代码:

int __fastcall DataManager::getCoin(DataManager *this)
{
  return *((_DWORD *)this + 10);
}

ARM:
[Asm] 纯文本查看 复制代码
DataManager::getCoin(void)
.text:0024E19A 80 6A                         LDR             R0, [R0,#0x28]
.text:0024E19C 70 47                          BX  LR


以前正常人看到会修改成这样

LDR       R0, [R0,#0x28] ; 正常看到马上会给他修改成  MOV    R0,#fffffff

但请看下图
33.PNG 22.PNG
[Asm] 纯文本查看 复制代码
.text:0024E19A 80 6A                       LDR             R0, [R0,#0x28] 
.text:0024E19C 70 47                       BX              LR


会将 80 6A 70 47   修改成了   6F F0 70 41

你修改成MOV  R0,#fffffff,是SIZE 4,你会吧BX    LR也修改掉    最终造成游戏闪退而已

2.再说说我的修改出现的问题,怎么有负数或者正数

其实我一开始是将
[Asm] 纯文本查看 复制代码
.text:0024E19A 80 6A                       LDR             R0, [R0,#0x28]

修改成了   
[Asm] 纯文本查看 复制代码
.text:0024E19A 00 A0                       ADR             R0, 0x24E19C


这方法也是是从别人那里看来的。

上面的两个是意思是:

LDR-将地址,RO #0x28的值放入R0

ADR-将0x24E19C地址放入R0

一个是具体数字,另一个是一个地址,是什么值就不知道了,就造成了部分正数,部分负数的问题(我模拟器测试是正数,手机就负数了)

我个人的修改方法:

[Asm] 纯文本查看 复制代码
.text:0024E19A 80 6A                       LDR             R0, [R0,#0x28]

修改成了

[Asm] 纯文本查看 复制代码
 .text:0024E19A FF 20                       MOVS            R0, #0xFF


也是SIZE 2  ,不过最大的数值也就255根本就不够花,因此我修改了另一个地方。

44.PNG

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二.金币修改2

修改方法1:


在上面coin的搜索中其实我们还搜索到了一个就是addcoin

ARM:
[Asm] 纯文本查看 复制代码
1.text:0024E1A0 82 6A                       LDR             R2, [R0,#0x28]     将R0,#0x28地址的值给R2
2.text:0024E1A0 11 44                       ADD             R1, R2                 R1+R2
3.text:0024E1A2 81 62                       STR             R1, [R0,#0x28]      将R1的值存入R0,#0x28的地址
4.text:0024E1A4 70 47                       BX              LR


伪代码:      *(_DWORD *)(result + 40) += a2;

看到R0=R2=(_DWORD *)(result + 40)=当前总金币,R1=a2=增加的金币

那么我修改是这样的:

[Asm] 纯文本查看 复制代码
1.text:0024E19E 6F F0 70 41                 MOV             R1, #0xFFFFFFF              给R1给#0xFFFFFFF  值
2.text:0024E1A2 81 62                       STR             R1, [R0,#0x28]             将R1的值存入R0,#0x28地址    R0就是总金币
3.text:0024E1A4 70 47                       BX              LR


解释下:

MOV        R1, #0xFFFFFFF    的进制---  6F F0 70 41      SIZE 4

我直接将上面的代码的1=82 6A 、2=11 44替换成了MOV=6F F0 70 41 而已

就是将

[Asm] 纯文本查看 复制代码
1.text:0024E1A0 82 6A                       LDR             R2, [R0,#0x28]     将R0,#0x28地址的值给R2
2.text:0024E1A0 11 44                       ADD             R1, R2                 R1+R2


替换成了:

[Asm] 纯文本查看 复制代码
1.text:0024E19E 6F F0 70 41                 MOV             R1, #0xFFFFFFF       


替换后其实就是每次增加金币,将存入总金币不过不相加,是替换,因为+号删掉了。

修改方法2:

ARM:
[Asm] 纯文本查看 复制代码
1.text:0024E1A0 82 6A                       LDR             R2, [R0,#0x28]     将R0,#0x28地址的值给R2
2.text:0024E1A0 11 44                       ADD             R1, R2                 R1+R2
3.text:0024E1A2 81 62                       STR             R1, [R0,#0x28]      将R1的值存入R0,#0x28地址
4.text:0024E1A4 70 47                       BX              LR


伪代码:      *(_DWORD *)(result + 40) += a2;

修改后:

ARM:
[Asm] 纯文本查看 复制代码
1.text:0024E1A0 82 6A                       LDR             R2, [R0,#0x28]     将R0,#0x28地址的值给R2
2.text:0024E1A0 51 43                       MULS             R1, R2                 R1*R2
3.text:0024E1A2 81 62                       STR             R1, [R0,#0x28]      将R1的值存入R0,#0x28的地址
4.text:0024E1A4 70 47                       BX              LR


伪代码:      *(_DWORD *)(result + 40) *= a2;

获得的金币和本金相乘也是一个巨大的数值,也等于无限金币
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三.星星修改

[Asm] 纯文本查看 复制代码
DataManager::addStar(int)
.text:0024E18A                                                     ; DATA XREF: LOAD:000046B0↑o ...
.text:0024E18A 42 6A                       LDR             R2, [R0,#0x24]
.text:0024E18C 11 44                       ADD             R1, R2
.text:0024E18E 41 62                       STR             R1, [R0,#0x24]
.text:0024E190 70 47                       BX              LR


int __fastcall DataManager::addStar(int result, int a2)
{
  *(_DWORD *)(result + 36) += a2;
  return result;
}

方法和金币的修改方式也是一样的

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

四:体力修改

1.修改方式一

DataManager::decLife   体力扣除
66.PNG 222.PNG
[Asm] 纯文本查看 复制代码
.text:0024E11E A0 F1 01 00                 SUB.W           R0, R0, #1     

   
改后:

[Asm] 纯文本查看 复制代码
text:0024E11E A0 F1 00 00                 SUB.W           R0, R0, #0


这样体力就不会扣除,等于无限体力

2.修改方式二

在修改体力扣除的同时,我们知道了总体力的位置,那么我们直接给总体力赋值5,不就也无限体力了

77.PNG 88.PNG

修改处1:

需要NOP几个比较麻烦                              

[Asm] 纯文本查看 复制代码
.text:0024E0A2 81 12                       ASRS            R1, R0, #0xA
.text:0024E0A4 01 EB D0 70          ADD.W           R0, R1, R0,LSR#31
.text:0024E0A8 10 44                       ADD             R0, R2
.text:0024E0AA 05 28                       CMP             R0, #5
.text:0024E0AC B8 BF                       IT LT
.text:0024E0AE 05 46                       MOVLT           R5, R0


修改后:

[Asm] 纯文本查看 复制代码
.text:0024E0A2  00 BF                      NOP
.text:0024E0A4 00 F0 20 E3             NOP
.text:0024E0A8 10 44                       MOVS            R0, 4
.text:0024E0AA 05 28                       CMP             R0, #5
.text:0024E0AC B8 BF                       IT LT
.text:0024E0AE 05 46                       MOVLT           R5, R0


当体力不满时,赋予体力V8=R0=4  直接给予到结果,修改够就是无限体力4

修改处2:修改跳转指令

1处:体力不满的判断          2处:体力满的判断              3处:结果


意思是当R1和R0的对比,当R1≥R0时直接跳到3处结果,当R1≤R0时,跳转到1处,判断体力是不是满

[Asm] 纯文本查看 复制代码
.text:0024E086 81 42                       CMP             R1, R0                                
.text:0024E088 12 DC                       BGT             loc_24E0B0  
   

修改成了:

[Asm] 纯文本查看 复制代码
.text:0024E086 81 42                       CMP             R1, R0
.text:0024E088 12 E0                       B               loc_24E0B0 


意思是直接执行2处的体力是满的,将体力满数字5直接跳转到3处的结果


99.PNG

修改处3:也是最简单的方法


[Asm] 纯文本查看 复制代码
.text:0024E0B0 28 46                       MOV             R0, R5


修改后:

[Asm] 纯文本查看 复制代码
.text:0024E0B0 05 20                       MOVS            R0, #5    
        

直接修改结果,不管上面的代码怎么运行,最后的结果直接给5  

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
五:无限时间修改
游戏一开始有给予30分钟的时间,在这段时间中,使用的体力是不会减少的,现在告诉大家的就是修改无限时间

111.PNG

v1 = *((_DWORD *)this + 12);      这是总时间

return v1 - time(0);    这是总时间-当前时间=30分钟

那么我们就只需要将time(0)删除或者变成0就是无限时间了

[Asm] 纯文本查看 复制代码
.text:0024E308 00 20                       MOVS            R0, #0  ; timer          ---------这是(0)
.text:0024E30A BB F7 3C ED           BLX             time----------------------这是time(只要把这句NOP就可以了)


修改之后就是return v1 - 0   其实就是return v1

BB F7 3C ED   修改成  00  BF   00  BF

MuMu20190106003605.png

六.无限签到

不过好像没什么意义

11.PNG
看伪代码就知道这函数其实就是bool

只要将
[Asm] 纯文本查看 复制代码
.text:0024E1DA 00 21                       MOVS            R1, #0                   v3 = 0;


的0修改成1,那么意思都是可签到状态

[Asm] 纯文本查看 复制代码
.text:0024E1DA 01 21                       MOVS            R1, #1                 v3 = 1;


MuMu20190106022041.png

七.无限道具

121.PNG

[Asm] 纯文本查看 复制代码
.text:0024E17E 9A 1A                       SUBS            R2, R3, R2


*(result + 4 * a2) -= a3;        现有道具数-使用数=剩下数

那么只需要将a3直接改成0,就是不消耗道具,等于无限道具了

修改后:

[Asm] 纯文本查看 复制代码
.text:0024E17E 1A 1E                       SUBS            R2, R3, #0 



破解加整理教程花费了点时间,希望对大家有帮助,有错的地方也请大家指教。

免费评分

参与人数 26吾爱币 +30 热心值 +25 收起 理由
hellozhanghe + 1 + 1 热心回复!
a3860135 + 1 + 1 谢谢@Thanks!
Rnling + 1 + 1 热心回复!
Nicklobin + 1 + 1 谢谢@Thanks!
hedy16 + 1 + 1 用心讨论,共获提升!
不懂破解 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
花魔 + 1 + 1 热心回复!
xiaoxi2011 + 1 + 1 谢谢@Thanks!
葡萄demo + 1 + 1 谢谢@Thanks!
qq244321232 + 1 + 1 谢谢@Thanks!
foxdog + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
spirtime + 1 谢谢@Thanks!
纸鸢King + 1 + 1 顶你,继续加油出好东西
谎言i + 1 + 1 谢谢@Thanks!
特百惠 + 1 + 1 这么好的教程,不评分,算是白在论坛呆着了。。。。
chenjingyes + 1 + 1 很适合逆向初学者 谢谢楼主分享
peter_king + 1 谢谢@Thanks!
stars-one + 1 + 1 很强,有点难学,可以当教程
凹TOO曼 + 1 + 1 谢谢@Thanks!
oranges + 1 + 1 我很赞同!
dongmie + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
平凡的飞鸟 + 1 + 1 我很赞同!
cxfzaysb + 1 + 1 我很赞同!
qaz003 + 1 + 1 谢谢@Thanks!
赖哥 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
CrazyNut + 3 + 1 膜拜大佬深夜发教程贴,明天再来学习一下!

查看全部评分

本帖被以下淘专辑推荐:

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

kenorizon 发表于 2019-1-6 03:01
本帖最后由 kenorizon 于 2019-1-6 03:03 编辑

这个游戏不是使用 Unity3D 引擎制作的游戏,而是使用 cocos2d-x 引擎制作的游戏(特征是 lib 里面有一个 libMyGame.so 文件,脚本就在这个文件里面)
自然是找不到 Mono / il2cpp 的相关文件的。

点评

感谢指正,这游戏我把他丢进Android killer 反编译完,它提醒的是U3D游戏,所以我就认为了。  详情 回复 发表于 2019-1-6 08:49

免费评分

参与人数 1热心值 +1 收起 理由
CrazyNut + 1 热心回复!

查看全部评分

cxfzaysb 发表于 2019-1-6 08:41
这个游戏不是使用 Unity3D 引擎制作的游戏,而是使用 cocos2d-x 引擎制作的游戏(特征是 lib 里面有一个 libMyGame.so 文件,脚本就在这个文件里面)
自然是找不到 Mono / il2cpp 的相关文件的。
CrazyNut 发表于 2019-1-6 01:13
trombe108 发表于 2019-1-6 01:17
膜拜一下
1676TKMS 发表于 2019-1-6 08:01 来自手机
和大佬学习
 楼主| lzc090 发表于 2019-1-6 08:49
kenorizon 发表于 2019-1-6 03:01
这个游戏不是使用 Unity3D 引擎制作的游戏,而是使用 cocos2d-x 引擎制作的游戏(特征是 lib 里面有一个 li ...

感谢指正,这游戏我把他丢进Android killer 反编译完,它提醒的是U3D游戏,所以我就认为了。
ci4y0nWF 发表于 2019-1-6 09:13
感谢几个小时的付出,学习大佬的知识
罗茂松 发表于 2019-1-6 09:27
这个太牛了,看看去
头像被屏蔽
chen1234 发表于 2019-1-6 09:39 来自手机
谢谢分享,大佬分析给力
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 16:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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