Apk静态分析

来源:互联网 发布:网络摄监控系统图 编辑:程序博客网 时间:2024/05/22 12:17

Apk静态分析

最近在看smali语句,所以就试着利用些皮毛知识,简单的做个实验~~

实例

  • 测试apk

    • 地下城魔女v1.0.8
  • 破解工具

    • Androidkiller1.03
    • Apkhelper
    • Winwar
    • 海马玩模拟器
  • 测试目的
    利用smali语法,修改反编译后的apk,达到原始版本中绕过强制安装7723游戏盒子的功能。

测试过程

  • 原始apk运行截图

原始apk安装后,必须强制安装7723游戏盒子之后才能开始游戏,很流氓。。截屏如下:

下面进行破解:

  • 绕过7727游戏盒子的安装

Androidkiller反编译apk

注意:由于要使用Androidkiller工具,apk文件名不宜过长,所以简写为dxc.apk

根据入口activity进行查看:

通过jar可以查看java语言:快速搜索定位到oncreate()方法中,发现里面调用了isAppInstalled()方法,该方法中有一个包名“com.upgadata.up7723”,可以大胆猜测这就是强制要安装的7723游戏盒子的apk包名,然后再到Androidkiller中去搜索关键字com.upgadata.up7723(这句话是废话,只是阐述一下思路)发现并没有找到有用的方法和7723游戏盒子的apk,所以就去assets文件夹中找找。

Assets文件夹在Android开发中一般都是存放一些隐秘性的资源文件。
打开assets文件发现里面了7723box_pjz.apk的安装软件。

再利用apkhelper查看一下这个7723box_pjz.apk。(apk提取方法:将dxc.apk修改后缀名为dxc.zip,然后找到assets/temp_dt目录下,解压出7723box_pjz.apk)

以上的所有操作就是为了验证com.upgadata.up7723就是7723游戏盒子apk的包名。
下面就简单了,如下定位到isAPPInstalled方法中:

根据上图给的提示,在Androidkiller中修改对应的smali语句:

  • 去除7727游戏页面
    这个页面不是通过imageview直接加载drawble文件中的图片,而是将图片隐藏在so或者其他文件夹中,很难发现,并通过bin文件流的形式进行加载。修改步骤如下:

在入口activity中找到了这个bazhang.png的字段,但是找不到这张图,于是顺藤摸瓜找到这个字段所在的方法,寻找调用这个方法的地方:

找到bz.bin文件,最后定位到smali文件的具体位置,进行修改。
修改的方法有几种:
1、 可以直接将getImageFromAssets方法直接去掉
2、 直接将initLaunchView方法直接去掉
3、 去掉getImageView方法的调用
很显然,前面两种方法修改变动太大,牵连影响过大,第三种最适宜

运行结果:

0 0
原创粉丝点击