Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

2015移动安全挑战赛(阿里&看雪主办)全程回顾(1)

0x1 分析

APK界面

题目下载

本次比赛的第一个题目是一个APK文件,安装后,需要用户输入特定的密码,输入正确会显示破解成功。该题目的APK文件没有太多的保护,可以直接使用各种分析工具(如jeb等)反编译得到Java代码。

获得正确注册码的代码逻辑为: 1. 从logo.png这张图片的偏移89473处,读取一个映射表,768字节编码成UTF-8,即256个中文表 2. 从偏移91265处读取18个字节编码的UTF-8(即6个中文字符)为最终比较的密码。然后通过输入的字符的转换,转换规则就是ASCII字符编码,去比较是否和最终密码相等。

0x2 巧妙的解法

我们在这里提供一种非常愉快的解法,不需要复杂的工具和分析,大家可以参见视频

打开app后,我们使用adb logcat并加上这个app独有的 lil 标签过滤日志输出,发现app输出日志中有table,pw以及enPassword。随意输入字符串如123456789,发现enPassword中有对应的中文输出,根据输出反馈,可以知道有如下对应关系

  • 1 – 么
  • 2 – 广
  • 3 – 亡
  • 4 – 门
  • 5 – 义
  • 6 – 之
  • 7 – 尸
  • 8 – 弓
  • 9 – 己

通过观察Logcat输出可知,最终目标pw应为义弓么丸广之,根据上述table中的对应关系,我们可以得到最终密码为:

581026