突破用户名和口令的验证

突破用户名和口令的验证#

2021/4/27

实验内容

1、编写一个验证app给下一位同学。app功能如下:如果用户名和口令输入正确则显示“恭喜你通过验证!”,否则显示“验证失败!”

以下是我的代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

首先我对帐号输入是什么,没有做出要求,但是在密码口令上做出了很多限制,要求如下:
1.长度在8位数以上
2.第1、3、4、6位为数字
3.第2、5位需要时小写字母
4.最后一位必须是!(叹号)
5.除了以上提到的位数,其他位数不做要求
如果后一位同学成功破解,那么将显示一个Toast“密码输入正确!即将进入新的页面”,随后跳转到Main2Activity,在此activity中,显示一个textview “恭喜你输入密码正确!!!”

在这里插入图片描述

2、在获得上一位同学编写的app后,争取能够突破用户和口令的验证,让app显示“恭喜你通过验证!”

收到上一位同学葛雪颖发来的文件,打开后是这样的页面,随意输入,显示验证失败

在这里插入图片描述

所以我们对它进行代码分析
1.使用apktool
命令:apktool d app-debug.apk -o ./decode -f
2.查看smail文件,获取有用信息
const-string v1, “gexueying”
const-string v1, “\u9a8c\u8bc1\u5931\u8d25\uff01” unicode转中文:验证失败
\u606d\u559c\u4f60\u901a\u8fc7\u9a8c\u8bc1\uff01 恭喜你通过验证
const/4 v2, 0x0
const-string v3, “1812190325”
以上是字符串信息
接下来是跳转语句
if-eqz v0, :cond_1
我们的关注点应该放在这里:if-eqz v0, :cond_0
\u606d\u559c\u4f60\u901a\u8fc7\u9a8c\u8bc1\uff01 恭喜你通过验证
这一段就是显示破解成功Toast的代码
3.缩小判断的范围
const-string v1, "gexueying"

invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

const-string v1, "\u9a8c\u8bc1\u5931\u8d25\uff01"

const/4 v2, 0x0

if-eqz v0, :cond_1

.line 28
iget-object v0, p0, Lcom/example/test4/MainActivity$1;->val$password:Landroid/widget/EditText;

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

move-result-object v0

invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;

move-result-object v0

const-string v3, "1812190325"

invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v0

if-eqz v0, :cond_0
跳转语句分析

"if-eq vA, vB, :cond_" 如果vA等于vB则跳转到:cond_
“if-ne vA, vB, :cond_" vA不等于
"if-lt vA, vB, :cond_
” vA小于vB
“if-ge vA, vB, :cond_" vA大于等于vB
"if-gt vA, vB, :cond_
” vA大于vB

这边有两个if判断条件
1. if-eqz v0, :cond_1 将输入的字符串和V0比较,相等的话则跳转运行cond_1,这里的V0就是V1
因为在这边已经转化了

const-string v1, “gexueying”
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

2. if-eqz v0, :cond_0 将输入的字符串和V0比较,相等的话则跳转运行cond_0,这里的V0就是V3
因为在这边已经转化了

const-string v3, “1812190325”
invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

运行程序,看看我们的判断是否正确

在这里插入图片描述

可以看到已经通过验证
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值