Android Apk解密工程初探(1)——简单的例子

首先先解密一个最为简单的apk程序,这个apk的界面如下:

clip_image001

这个apk很简单,功能更简单,在输入框中输入内容,然后点击“验证”按钮,如果序列号正确,那么输入框中显示“lisence correct!”

clip_image003

输入的序列号不正确,那么输入框中显示“lisence uncorrect!”

clip_image005

通过点击“清除”按钮,情况输入框内的内容,重新输入。

我们的目的,当然就是要找出这个正确的序列号。

解密过程:
1.1、apktool反编译该apk文件

clip_image007

解压后出现CrackMe_ConstantString.apk同名文件夹:

clip_image009

1.2、理解LisenceCheck$1.smali中的代码含义,得到序列号

代码节选:

//获取EditText中的内容,保存在v0内

iget - object   v0 ,   p0 ,   Lcom / mstar / test / LisenceCheck$ 1 ; - > this$ 0 : Lcom / mstar / test / LisenceCheck ;

iget - object   v0 ,   v0 ,   Lcom / mstar / test / LisenceCheck ; - > medittext : Landroid / widget / EditText ;

invoke - virtual   { v0 } ,   Landroid / widget / EditText ; - > getText ( ) Landroid / text / Editable ;

move - result - object   v0

invoke - interface   { v0 } ,   Landroid / text / Editable ; - > toString ( ) Ljava / lang / String ;
10
11 move - result - object   v0

//把常量字符串youwin保存在v1内,

1 const - string   v1 ,   " youwin "
2
3 invoke - virtual   { v0 ,   v1 } ,   Ljava / lang / String ; - > equals ( Ljava / lang / Object ; ) Z
4
5 move - result   v0

//比较v0和v1,若不相等,则跳转到cond_0处

1 if - eqz   v0 ,   : cond_0

//我们已经估计到youwin就是序列号了,再往下看看cond_0处,验证我们的想法

//cond_0处开始,不等的结果是把“listence uncorrect!” 回写到EditText处

: cond_0

iget - object   v0 ,   p0 ,   Lcom / mstar / test / LisenceCheck$ 1 ; - > this$ 0 : Lcom / mstar / test / LisenceCheck ;

iget - object   v0 ,   v0 ,   Lcom / mstar / test / LisenceCheck ; - > medittext : Landroid / widget / EditText ;

const - string   v1 ,   " lisence   uncorrect! "

invoke - virtual   { v0 ,   v1 } ,   Landroid / widget / EditText ; - > setText ( Ljava / lang / CharSequence ; ) V
10
11 goto   : goto_0

跳到这里,在EditText中显示了lisence uncorrect!,youwin就是我们要寻找的序列号。到这里,我们已经完成了第一个crackme,简单的常量字符串的破解。

apk放于我的共享资源中,就不再粘贴地址了,谢谢。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值