阿里第一题挺简单的,和之前的第一题差不多,就是在check函数中对输入的字符进行check。
把apk拖到apk killer 反编译看看
所以我们跟到check函数看看主要逻辑
从getkey中获取将要处理的字符,这也是密码的来源
上面的字符经过一系列的处理,进行比对
但是代码的逻辑貌似有点乱,所以还是得读smali,看看真真的代码逻辑
很不幸,看到这段我就放弃了去跟代码逻辑了。。
所以尝试别的方式,在比对之前把比对的寄存器的值打印出来看看
在cond_1处计数器加一,跳转到goto_2继续刚才对比
所以在if-eq v3,v4,:cond_1前打印出v3,v4的值
记得在函数开头添加寄存器数量
然后......大概就是人工输入字符去比对了。。。
其实这里可以不用人工去对比,写个小的爆破程序就ok大概要比人工快很多
最后密码自己试去吧。。。
附段代码:
const-string v9, "-----v3-------"
invoke-static {v3}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
move-result-object v10
invoke-static {v9, v10}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
const-string v9, "-----v4-------"
invoke-static {v4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
move-result-object v10
invoke-static {v9, v10}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I