Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)

EX05_01_.apk

 

         通过查看java源码我们可以发现,要想让程序弹出“right++”,无论输入什么,都无法满足if判断条件(即与输入无关)。于是我们修改smali代码中的跳转条件,然后在AndroidKiller中重打包应用程序,生成的新apk就是破解成功的apk。我们在模拟器上安装运行,就会发现此时无论输入什么,应用程序都会弹出“right++”的提示信息,破解成功。

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第1张图片

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第2张图片

这里不止这一种修改方式,我们还可以直接将“gogo”字符串变量修改为“11”,以满足if判断条件。

 

Crackme02.apk

             在jeb中分析java源码“MainActivity”,定位到关键函数“checkSN”,通过分析该函数得到程序对于用户输入的用户名和16位注册码的处理流程如下:生成用户输入的用户名的32位MD5值,然后依次取MD5值的第i、i+2…(i从0开始取值,小于32)位处的字符,拼接成正确的注册码。

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第3张图片

根据分析,我们写出对应的java程序,实现输入用户名,输出对应正确的注册码的功能。

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第4张图片

随便输入一个用户名,输入上图中程序生成的注册码,点击“注册”,程序就会成功注册如下图,破解成功。

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第5张图片

CrackMe-F1F2.apk

在jeb中分析java源码“LisenceCheck”,定位到关键函数如下图,分析该函数可得到以下信息——

  • 输入的用户名是由大写字母组成的。
  • 正确的序列号应该是由0-9这几个数字组成的一个字符串。
  • 程序的关键操作是一些异或计算。

 

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第6张图片

根据分析,我们写出对应的java程序,实现输入用户名,输出对应正确的序列号的功能。

 

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第7张图片

输入一个用户名及上图中程序生成的序列号,点击“验证”,程序就会弹出“Lisence Correct!”的提示信息,破解成功。

 

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)_第8张图片

你可能感兴趣的:(c++相关)