zoukankan      html  css  js  c++  java
  • 热门游戏<开心消消乐>的“加壳”诡计!!

    好久没搞游戏了,前几天看了又又一次看了看<开心消消乐>的1.29最新版..于是故事開始了:

    1.反编译分析

    首先使用Androidkiller进行反编译,得到两个Smali代码目录:mali和smali_classes2。到这认为挺奇怪的,由于一个游戏client。基本都是引擎编写的,如主流的Cocos2dx、Unity3D等。主要代码是C/C++/C#或者一些脚本、图片。不管apk本身有多大,Java逻辑都不会非常多。极少编译出现2个dex。就像一些大型的应用client2个dex才是普遍的现象。


    其次,清单文件AndroidManifest.xml中的多个Activity都能在smali_classes2文件定位到.smali文件,真正是因为方法过多正常分离出2个dex的apk。Application和主Activity的Smali文件会在第一个dex中。


    所以可能是伪装成“加壳”的诡计!。

    2.验证測试

    既然所有的源代码都在smali_classes2中。那我们就把smali_classes2->smali,将原来貌似壳文件的smali删除。然后搜索“.super Landroid/app/Application;”,修复下application入口,回编安装,游戏并不奔溃。而是弹出了签名验证的正常提示。说明程序没问题。

    确实为“加壳”诡计!!


    3.移花接木·化为己用

    Android最大的特点就是可偷。既然它把技术诚心诚意的放出来了,我们就移花接木到自己的APP上啊。

    通过改动、測试,仅仅需三步就能够将随意大小的apk改造成含有2个dex的伪装加壳的apk:

    第一步:将须要改动的apk反编译,重命名smali->smali_classes2,将我提供的smali拷贝到反编译根目录;

    第二步:改动清单文件AndroidManifest.xml的application入口改动为:android:name="com.happyelements.security.shellguard.ShellApplication"

    第三步:回编配置的最后一行“DexMaps: {}”改动为:

    DexMaps:
      classes2.dex: smali_classes2
    例如以下图,将一个大小为72K的apk改造成两个dex:


    相关下载

    链接: http://download.csdn.net/detail/zihao2012/9375835  能够对照..





  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6978452.html
Copyright © 2011-2022 走看看