吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23394|回复: 60
收起左侧

[Android 原创] unity3d手游破解(一)

  [复制链接]
chinamima 发表于 2018-4-19 14:44
本帖最后由 chinamima 于 2018-4-25 14:41 编辑

最近找乐子破解了点手游玩玩,顺便分享一下,目标APK--X条英雄。
1、大致分析

拿到APK先看看libs和assets,发现有libmono.so以及\assets\bin\Data\Managed\Assembly-CSharp.dll,可以确定是unity3d手游,可以尝试修改 Assembly-CSharp.dll来破解游戏,不过发条英雄的这个dll加密了,所以需要先解密。

592070_9NYHPQ8FRSHUSNT.png

2、解密dll

把 libmono.so扔进IDA,找到mono_image_open_from_data_with_name函数,F5查看发现了解密代码:

592070_7UPTDKMVDA9T5JQ.png

在这个函数先判断加载的dll是否包含ssem字符串,接着判断前两个字节是否等于82(0x52),77(0x4d),因此可以确定下面的for循环是解密代码,比较简单,抄下来自己写一个解密程序(附件有一份),然后对这个 Assembly-CSharp.dll进行解密。

3、修改dll

把 Assembly-CSharp.dll扔进Reflector+reflexil环境进行修改(不会的同学百度学习一下),找到关键函数get_DamageValue,直接改成返回100W,然后攻击就变成了100W。

592070_DC2CM6CCYQ7DPVB.png

不过这个时候怪物攻击也是100W,因此再找到Player的applyDamage函数,修改这个函数直接ret,然后玩家就无敌了。

592070_9FRSR5MQAKB9PJW.png

最后保存为一个新的dll并替换掉之前APK里面的 Assembly-CSharp.dll,解密后的dll头部不等于82(0x52),77(0x4d),因此so可以直接加载。

4、运行

重新签名,打包成新的APK,安装运行,一刀100W。

592070_T8PDJ9X37D9STCW.png

5、结束语

服务器信赖客户端的计算结果就导致这种情况,不过服务器加强数据校验也能检测出来。有兴趣的同学可以去改改dll实现竞技场百战百胜。


decrypt.zip

728 Bytes, 下载次数: 374, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 17威望 +1 吾爱币 +25 热心值 +16 收起 理由
assassin686 + 1 + 1 我很赞同!
ccs101 + 1 + 1 谢谢@Thanks!
1awei1 + 1 + 1 我很赞同!
windtrace + 1 谢谢@Thanks!
牛头人高达 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kilkilo502 + 1 + 1 希望老师多多以后出这样的教程,U3D的程序代码现在加密特别的严重尤其像是.
qtfreet00 + 1 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
1131195092 + 1 + 1 我很赞同!
nbhonghong + 1 + 1 用心讨论,共获提升!
灯火阑珊=zero + 1 + 1 谢谢@Thanks!
CrazyNut + 2 + 1 希望大佬以后多更新关于U3D一类的东西
805141715 + 1 + 1 用心讨论,共获提升!
1900250105 + 1 + 1 用心讨论,共获提升!
dwq308 + 1 + 1 我很赞同!
17620702673 + 1 + 1 谢谢@Thanks!
ikeeki + 1 + 1 感谢楼主分享,补图也速度,赞!
xiky康 + 1 我很赞同!

查看全部评分

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

ao610336999 发表于 2018-4-19 15:33
本帖最后由 ao610336999 于 2018-4-19 15:45 编辑

不错的教程http://pan.apkgm.top/s/jma8g2cw 发条英雄无限技能秒杀  u3d 菜单自带开关

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ww8321213 + 1 + 1 热心回复!

查看全部评分

StarsDowns 发表于 2019-5-27 00:40
本帖最后由 StarsDowns 于 2019-5-27 00:44 编辑

大佬这个怎么看,mono_image_open_from_data_with_name函数里看不懂啊,解密是和s有关吗,这个解密代码怎么看呢
int __cdecl mono_image_open_from_data_with_name(void *src, size_t n, int a3, int a4, int a5, char *s)
{
  int result; // eax
  int v7; // eax
  int v8; // [esp+18h] [ebp-10h]
  int v9; // [esp+18h] [ebp-10h]
  void *dest; // [esp+1Ch] [ebp-Ch]

  if ( !src || !n )
  {
    if ( a4 )
      *(_DWORD *)a4 = 3;
    return 0;
  }
  dest = src;
  if ( !a3 )
    goto LABEL_12;
  dest = (void *)sub_25AE77(n);
  if ( dest )
  {
    memcpy(dest, src, n);
LABEL_12:
    v8 = sub_25AEAC(872);
    *(_DWORD *)(v8 + 8) = dest;
    *(_DWORD *)(v8 + 12) = n;
    *(_BYTE *)(v8 + 16) = 2 * (a3 & 1) | *(_BYTE *)(v8 + 16) & 0xFD;
    if ( s )
      v7 = sub_25AF40(s);
    else
      v7 = sub_25B51B("data-%p", (char)dest);
    *(_DWORD *)(v8 + 20) = v7;
    *(_DWORD *)(v8 + 44) = sub_25AEAC(396);
    *(_BYTE *)(v8 + 16) = 8 * (a5 & 1) | *(_BYTE *)(v8 + 16) & 0xF7;
    *(_DWORD *)v8 = 1;
    v9 = sub_17C8C3(v8, a4, 1, 1);
    if ( v9 )
      result = sub_17CF62(v9);
    else
      result = 0;
    return result;
  }
  if ( a4 )
    *(_DWORD *)a4 = 1;
  return 0;
}
jomo 发表于 2018-4-19 14:50
痞孑 发表于 2018-4-19 14:55
图被和谐了 补一下吧
云在天 发表于 2018-4-19 14:57
你是转的看雪的还是同一个作者?
金戈铁马 发表于 2018-4-19 14:57
补个图呗!!!
ikeeki 发表于 2018-4-19 15:01
该资源仅供内部交流·············
 楼主| chinamima 发表于 2018-4-19 15:08
云在天 发表于 2018-4-19 14:57
你是转的看雪的还是同一个作者?

同一个,可以去求证,这么短时间抄袭不会的吧
 楼主| chinamima 发表于 2018-4-19 15:13
@ikeeki  @金戈铁马  @云在天   @痞孑  @jomo
图已补
JJZD9527 发表于 2018-4-19 15:40
厉害了啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-19 05:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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