0x0 定位dex脱壳

反编译之后,可以很明显的发现源码的Dex已经壳文件代替,主代码被加密隐藏了起来。分析壳的代码,DexClassLoader加载的形式:

那应该说明Dex是被整体加密或者隐藏了。通过分析本地文件,压缩格式打开Assets文件夹下的he.jar包含了原来的Dex文件:

那么,只需将he.jar中的classes.dex拖出来,替换到原来的apk中,再反编译即可得到全部的源码。
可能有些童靴比较草率,拿到Dex反编译得到全部Smail以后,就直接删除掉了清单文件中Application的android:name属性,以至于回编、安装测试的时候,程序闪退报错:

额,致命错误,无法查找原因..其实,一般情况下会报Unable加载某个类的错误。原因是没有考虑到源代码中会有Application类的情况。修复方法是在Smali代码中搜索“.super Landroid/app/Application;”,将其所在的类名替换掉原来的壳的类名。<开心消消乐>修改之后也就变成了:
<application android:debuggable="false"… android:name="com.happyelements.AndroidAnimal.MainApplication">

所谓的脱壳至此完成..

0x1 去签名校验

其实有一段时间,<开心消消乐>免费的破解版本都是比较少的,一方面它的签名校验放在加密的lua脚本里,破解技术要求比较高;更大一方面,很多会lua脚本解密的大牛都不动国内游戏的,就Z大出手了一次。我这次磨出来的去验证方法就对技术的要求低了哈哈~~高的我也不会o(╯□╰)o~~去校验主要用了两个关键点:

1.Hook本身的签名信息

这个就很简单啊,使用的是飘云阁大神空道的Hook本身签名的现成手法。不过需要注意的是添加的类要足够多,我用这个方法的时候就是在尽量多的类里面添加引用Hook的so,比较重要的有:Application、主Acitivity、主Activity继承的所有类、getActivity方法所在的类、getContext方法所在类等等。<开心消消乐>需要添加的类有:
Lcom/happyelements/AndroidAnimal/MainApplication;、Lcom/happyelements/hellolua/MainActivity;
Lcom/happyelements/android/BaseActivity;
Lorg/cocos2dx/lib/Cocos2dxActivity;等等,

宜多不宜少啊..当然这是比较笨、无脑、怕出错的做法咯..

2.验证包路径转向

通过测试发现,只单纯的使用空道的手段,游戏仍然会提示“不是合法版本”。其实我也纠结了很久,最后才蒙出来绕过的方法。
见:http://blog.csdn.net/zihao2012/article/details/39891547
在Smali代码中搜索sourceDir 和 getPackageCode,在可能会影响校验结果的地方,将路径指向正版包的SD卡路径即可。

0x2 破除QQ和新浪的登录接口限制

一般来说,一个程序要想支持QQ和新浪微博的接口登录,都必须事先将自己签名的MD5放到接口的后台官网来申请登录SDK,如果签名不一致则拒接登录,所以要解除它们的登录限制就在反编译的SDK的Smali文件中,让它读取正版包的签名信息。具体的怎么做用一张图片来简单的说明一下吧:

0x3 内购破解

我实现的方式是将IMSI转向电信接口,然后就无支付窗口直接成功了。详见:

http://blog.csdn.net/zihao2012/article/details/39693333

0x4 消费限额的去除

当时我记得好像是通过LogCat信息看出来每日消费的限额是在加密的lua脚本中写的,一开始还觉得无能为力,当我看了它的本地储存文件时,看到了希望:

6050860..什么的,很明显是我随机过的咯 没随机之前貌似是IMSI之类的东西。所以出现“每日限额“的提示时,重新打开游戏就好了。

0x5 验证包的处理

验证包就是路径指向的正版包,上面在sourceDir 和 破除接口登录限制的时候,都提到了将路径指向SD卡中的正版包。对于追求完美的人来说,破解还要再附带一个脓肿的正版包一定是很不爽的。有一个参考的方案就是:

1.删减文件,优化验证包大小。

比如如果验证包的作用只是获取正版的签名信息,那就只保留META-INF和

AndroidMainfest.xml文件,其他的删除;如果验证包的作用是验证classes.dex的有效性,那就只保留其中的classes.dex和AndroidMainfest.xml文件等等。

2.将验证包放到Assets。

将已经删减的验证包放在Assets文件下,在程序主Activity的onCreate()方法中添加一段将其复制到指定的目录下,验证时直接指向该目录即可。

开心消消乐简单的逆向破解过程相关推荐

  1. 用Python3和Pygame实现简单的开心消消乐游戏

    用Python3和Pygame实现简单的开心消消乐游戏 项目简介 项目思路 现存Bug 项目截图 项目简介 项目Git:https://github.com/Accright/py-icehappy. ...

  2. 开心消消乐简单消除检测

    最近在b站上看一个Unity教学视频,制作开心消消乐.个人感觉视频中的消除方法写得很随意,有点不爽,于是自己新写了个方法. 基本规则:三个或三个以上元素,横着连一起算消除,竖着连一起算消除. L形和T ...

  3. [Android] 开心消消乐代码(写的比较简单)

    突然想要在android上写一个消消乐的代码,在此之前没有系统地学过java的面向对象,也没有任何android相关知识,不过还是会一点C++.8月初开始搭建环境,在这上面花了相当多的时间,然后看了一 ...

  4. python编程游戏手机版_利用Python开发手机同款游戏:开心消消乐

    手机上面的开心消消乐,我想大部分人都是玩过的吧,今天小编就教大家如何用python开发这款游戏 不过只有十个关卡,不像手机里面那么多的关卡!不过游戏的画面和bgm都是同款的哦~ 效果图 基本配置 wi ...

  5. android飞翔的小鸟游戏素材包_开心消消乐×愤怒的小鸟:为开心而战

    手机里总有那么一些游戏,是你一旦不小心打开,就完全停不下来的.在这份"一直玩一直爽游戏清单"里,绝对少不了开心消消乐和愤怒的小鸟的身影. 神奇的是,在2020的夏天,它们合体了!在 ...

  6. java开心消消乐代码_Vue实现开心消消乐游戏算法

    摘要:这篇Vue栏目下的"Vue实现开心消消乐游戏算法",介绍的技术点是"开心消消乐.Vue.开心.游戏.算法.实现",希望对大家开发技术学习和问题解决有帮助. ...

  7. 用Python写个开心消消乐小游戏!自己写的游戏就是好玩!

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...

  8. Android开发入门 - 简易开心消消乐界面设计

    Android开发入门 - 简易开心消消乐界面设计 第一步,点击File->NEW->new module,进入以下界面,选择第一个,即运行在手机和平板电脑上.点击next. 第二步,在第 ...

  9. 开心消消乐java下载_开心消消乐下载_开心消消乐下载最新iPhone版-太平洋下载中心...

    <开心消消乐>,以三消游戏的方式,让国民连接在一起!2021年,8亿玩家的共同选择! [App Store下载量榜首,多次精选推荐] 全民级三消游戏<开心消消乐>不仅是中国区A ...

  10. java开心消消乐代码_Java小项目之:教你做开心消消乐!

    Java小项目之:教你做个开心消消乐! 今天给大家带来的小项目是开心消消乐(连连看),还是一样的惯例.操作简单,适合java初学者练手.想看其他java小项目的朋友可以关注我,我会持续更新,也可以私信 ...

最新文章

  1. 在linux 下怎么查看服务器的cpu和内存的硬件信息
  2. 我是如何用机器学习技术帮助 HR 省时间的
  3. SpringMVC之访问静态文件
  4. MySQL DELETE 语句的一个简单介绍
  5. python 矩阵除法_Python线性代数学习笔记——矩阵的基本运算和基本性质,实现矩阵的基本运算...
  6. oracle数据库系统介绍,Oracle数据库(Oracle Database)体系结构及基本组成介绍
  7. 转载:【Oracle 集群】RAC知识图文详细教程(四)--缓存融合技术和主要后台进程
  8. android开发用什么字体,移动端web app和页面开发使用什么字体?微软雅黑?
  9. 京瓷1020手动双面打印提示_自动双面打印时纸张是如何被翻转的?
  10. 装完nvme固态经常蓝屏_NVMe固态硬盘安装Win7蓝屏0x0000007B快速解决方法
  11. 【成神之路】Nuxt入门
  12. DVWA靶机-存储型XSS漏洞(Stored)
  13. android蓝牙开启后会尝试自动连接,Android 自动连接蓝牙
  14. [mit6.1810] Lab system calls
  15. DCM+BUFG的使用
  16. 定时任务-动态定时任务(springboot+org.quartz)
  17. npm login e401问题(npm ERR! Unable to authenticate, need: BASIC realm=“Sonatype Nexus Repository Mana)
  18. Godot游戏开发实践之一:使用High Level Multiplayer API制作多人游戏(上)
  19. c语言 [Error] expected declaration or statement at end of input的解决方法
  20. 2019 蓝桥杯省赛 A 组模拟赛(一)C. 结果填空:马的管辖 (暴力搜索)

热门文章

  1. jsonrpc java_jsonrpc环境搭建和简单实例
  2. plc原理及应用_PLC编程与应用 适合初学者
  3. Center OS和Linux的区别
  4. 好书推荐|《CSS新世界》,前端人员必备宝书!
  5. 海思SVP简介(sample)
  6. QCC,让在学校的我们感受公司的温暖
  7. Windows下本地安装SVN客户端
  8. 【推荐算法】协同过滤推荐算法综述 传统推荐算法综述
  9. 使用PHP控制MODBUS-RTU设备
  10. BarTender对单个二维码/文本添加多个域(数据库字段)/嵌入的数据,并对数据添加后缀等处理;扩展更多域