支付宝钱包如何设置支付宝手势密码没有了

支付宝钱包手势密码隐藏 怎么让手势密码的轨迹隐藏_余额宝教程_购物指南网
您身边最实用的购物信息网站!
最新公告:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&
您现在的位置:&&>>&&>>&&>>&正文
购物常识专题
?&&&?&?&&&?&?&&&?&?&&&?&?&&&?&
&&&&&&&&&&
购物常识栏目
【】【】 |
| 【】【】【】【】【】 |
| 【】【】【】 |
[][][][][][][][][][]
支付宝钱包手势密码隐藏&怎么让手势密码的轨迹隐藏
&&&热&&&&&★★★
来源: 互联网 标签:
支付宝钱包手势密码隐藏 怎么让手势密码的轨迹隐藏
先点开支付宝是肯定的了。
输入密码或手势密码后进到主页面,点右下角的财富。
上面是自己的头像和姓名and帐号,点击。
进入后我们发现原来刚才那一栏叫“账户与安全”哈,其实这不重要。
去点密码管理。
点手机密码。
然后我们就看到了显示手势密码轨迹的开关,把它点成灰色你就胜利了。
我们退出,再进去时就发现画的手势不再显示了哦。
购物指南网推荐:
更多关注:
本文链接:/gwcs/gwzf/62.html
【】【】【】
上一篇文章: 下一篇文章:
&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]
&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]
&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]&[]
Email:网站备案号:粤ICP备号网站站长:本文章由 莫灰灰 编写,转载请注明出处。 &
作者:莫灰灰 & &邮箱:&
&&&&&&&& 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物、消费已是人们不可或缺的一个生活习惯了。随着这股浪潮的兴起,安全、便捷的移动支付需求也越来越大。因此,各大互联网公司纷纷推出了其移动支付平台。其中,用的比较多的要数腾讯的微信和阿里的支付宝钱包了。就我而言,平时和同事一起出去AA吃饭,下班回家打车等日常生活都已经离不开这两个支付平台了。
&&&&&&&& 正所谓树大招风,移动支付平台的兴起,也给众多一直徘徊在网络阴暗地带的黑客们又一次重生的机会。因为移动平台刚刚兴起,人们对移动平台的安全认识度还不够。就拿我身边的很多朋友来说,他们一买来手机就开始root,之后卸载预装软件,下载游戏外挂等等。今天,我们就以破解支付宝钱包的手势密码为例,来深入了解下android系统上的一些安全知识,希望能引起人们对移动平台安全的重视。
在此申明:以下文章涉及的代码与分析内容仅供android系统安全知识的学习和交流使用,任何个人或组织不得使用文中提到的技术和代码做违法犯罪活动,否则由此引发的任何后果与法律责任本人概不负责。
MIUI-JHACNBA13.0(已越狱)
支付宝钱包8.1.0.043001版
SQLite Expert
安装完支付宝钱包之后,运行软件,我这里选择淘宝帐号登录,界面如图1所示。
登录之后,设置手势密码,如图2所示。
完成上述两步之后,退出支付宝进程。用腾讯应用宝定位到支付宝的安装目录\data\data\com.eg.android.AlipayGphone,查看目录结构如图3所示。
实战开始 - 破解手势密码错误次数限制
看到图3所示的目录结构,猜测databases目录下的*.dB数据库文件就是用来保存上述我们设置的密码的。因此,我们使用应用宝的导出功能将databases目录导出到本地。用SQLite Expert工具打开所有的dB文件,分析发现alipayclient.db数据库中的userinfo表中保存了用户名、输入错误次数、手势密码等详细信息,如图4所示。其中的gestureErrorNum字段应该就是保存了手势密码输入错误的次数了,很明显这里已经被加密了。
使用APK IDE对支付宝的安装包进行解包分析。解包完成之后,搜索setgestureErrorNum字样,结果如图5所示。
经过大致分析,UserInfoDao.smali文件中的addUserInfo函数比较可疑,截取其中一段设置手势密码错误次数的代码如下:
invoke-virtual {v0},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getGestureErrorNum()Ljava/lang/S
move-result-object v1 &&
#调用getGestureErrorNum函数获得未加密的错误次数,并保存到v1寄存器
invoke-virtual {v0},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getUserId()Ljava/lang/S
move-result-object v2&&&&&
#调用getUserId函数获得user id,并保存到v2寄存器
invoke-static {v2},Lcom/alipay/mobile/security/gesture/util/GesutreContainU-&get8BytesStr(Ljava/lang/S)Ljava/lang/S
move-result-object v2&&&&&
#获取user id的前8个字节,保存到v2寄存器
invoke-static {v1, v2}, Lcom/alipay/mobile/common/security/D-&encrypt(Ljava/lang/SLjava/lang/S)Ljava/lang/S
move-result-object v1&&&&&
#以user id的前8字节作为key,调用des加密错误次数字符串,并保存到v1寄存器
invoke-virtual {v0, v1},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&setGestureErrorNum(Ljava/lang/S)V
#调用setGestureErrorNum函数,将加密的字符串保存
通过对上述代码的分析得知,第一次getGestureErrorNum的调用取出的错误次数应该是未加密的字符串,添加log代码验证,代码如图6所示。
保存修改的smali文件,重新编译打包,安装完成之后,输入错误的手势密码,log输出数字依次递增。最后一次输入正确的手势密码,错误次数重新归0。LogCat捕捉到的日志如图7所示。
程序分析到这里,我不禁猜测,在错误次数未加密前,把v1寄存器的值设置为字符串&0&是不是就可以骗过支付宝而可以无限次的输入手势密码了呢?于是乎,我又开始了下面的验证,代码如图8所示。
编译打包,重新安装支付宝,输入错误的手势密码,发现5次错误之后程序还是让我们重新登录。看来我们这里设置错误次数已经晚了,于是乎,继续搜索调用addUserInfo函数来加密gestureErrorNum的地方。其中,AlipayPattern.smali文件的settingGestureError函数引起了我的注意。函数代码如下:
.method publicsettingGestureError(Lcom/alipay/mobile/framework/app/ui/BaseALcom/alipay/mobile/framework/service/ext/security/bean/UserII)V
new-instance v0, Ljava/lang/StringB #初始化StringBuilder实例
invoke-direct {v0}, Ljava/lang/StringB-&&init&()V
invoke-virtual {v0, p3}, Ljava/lang/StringB-&append(I)Ljava/lang/StringB
#p3是一个I类型的整型变量,调用StringBuilder. append赋值
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringB-&toString()Ljava/lang/S
move-result-object v0&&&&& #调用toString函数转换成字符串类型,赋给v0
invoke-virtual {p2, v0},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&setGestureErrorNum(Ljava/lang/S)V#调用setGestureErrorNum设置未加密的错误次数字符串
invoke-static {},Lcom/alipay/mobile/framework/AlipayA-&getInstance()Lcom/alipay/mobile/framework/AlipayA
move-result-object v0
invoke-static {v0},Lcom/alipay/mobile/framework/service/ext/dbhelper/SecurityDbH-&getInstance(Landroid/content/C)Lcom/alipay/mobile/framework/service/ext/dbhelper/SecurityDbH
move-result-object v0
invoke-virtual {v0, p2},Lcom/alipay/mobile/framework/service/ext/dbhelper/SecurityDbH-&addUserInfo(Lcom/alipay/mobile/framework/service/ext/security/bean/UserI)Z
#调用SecurityDbHelper.addUserInfo函数加密、更新数据库
return-void
.end method
分析到这里,想必这里才是最原始的设置手势输入错误次数的地方吧,修改p3的值为0,测试代码如图9所示。
继续打包、编译、测试。随意输入错误的手势密码,支付宝始终显示&密码错误,还可以输入5次&字样,如图10。
至此,手势密码中的错误次数限制已经被我们解除了。理论上来说,我们可以使用穷举法来获取支付宝的手势密码。但是,作为一名分分钟几百万上下的大黑阔来说,使用穷举法来获得密码这种方式,显然是在浪费生命和金钱呀。
越战越勇 & 查找关键跳转
对于大黑阔们来说,只破解手势输入错误次数限制显然是不够的。下面我们以手势密码的存储展开来说起。查看alipayclient.db数据库的userinfo表可知,手势密码的存储字段为gesturePwd,搜索getGesturePwd函数得到如图11的结果。
搜索到的结果比较多,根据前面对手势密码错误次数限制的分析,这里可以排除几个文件,例如UserInfoDao.smali文件,它主要用来保存一些用户态的信息,可暂时跳过。剩下的smali文件,我们一个个分析过来。在这里我想说的一点是,逆向分析确实是很考验一个人耐心和细心的一件事情,一个恍惚就会迷失在浩瀚的汇编代码中,但是等到你找到关键的调用点,分析出核心的算法时,那么心境会豁然开朗,真是有种踏破铁鞋无觅处,得来全不费工夫的感脚。好了,扯远了,下面我们继续。
经过我的仔细分析,e.smali文件最有可能是比较输入密码的地方,双击上面e.smali文件的LINE 47行,跳转到的是a函数。由于函数比较长,只贴关键部分,代码如下:
.method public final a(Ljava/lang/S)V
invoke-virtual {p1},Ljava/lang/S-&length()I #取输入字符串的长度
move-result v0&
sget v1,Lcom/alipay/mobile/security/gesture/component/LockV-&MINSELECTED:I
&&&&&&& if-ltv0, v1, :cond_1& #比较字符串长度
:try_start_0
iget-object v0, p0,Lcom/alipay/mobile/security/gesture/component/e;-&a:Lcom/alipay/mobile/framework/service/ext/security/bean/UserI#获取UserInfo对象
invoke-virtual {v0}, Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getGesturePwd()Ljava/lang/S#调用UserInfo的getGesturePwd函数获得加密过的正确的手势密码
move-result-object v0
invoke-virtual {v0}, Ljava/lang/S-&length()I #取加密过的正确密码的长度
move-result v0
const/16 v1, 0x20
if-le v0, v1, :cond_0 #长度是否小于32
new-instance v0, Ljava/lang/StringB
invoke-direct {v0}, Ljava/lang/StringB-&&init&()V #初始化StringBuilder对象
invoke-virtual {v0, p1}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
#将输入的明文手势密码赋值给StringBuilder对象
move-result-object v0&&&&&
iget-object v1, p0,Lcom/alipay/mobile/security/gesture/component/e;-&a:Lcom/alipay/mobile/framework/service/ext/security/bean/UserI
invoke-virtual {v1},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getUserId()Ljava/lang/S#调用UserInfo的getUserId函数获取user id
move-result-object v1
const-string/jumbo v2, "userInfo"
invoke-static {v1, v2}, Lcom/alipay/mobile/common/security/D-&encrypt(Ljava/lang/SLjava/lang/S)Ljava/lang/S#调用des加密函数,以&userInfo&为key,加密user id字符串
move-result-object v1
invoke-virtual {v0, v1},Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
#将加密好的user id字符串附加到StringBuilder对象上
move-result-object v0
invoke-virtual {v0},Ljava/lang/StringB-&toString()Ljava/lang/S
move-result-object v0
#StringBuilder对象(输入明文手势的密码 + 加密后的user id)转字符串,并赋值给v0寄存器
invoke-static {v0}, Lcom/alipay/mobile/security/gesture/util/SHA1;-&sha1(Ljava/lang/S)Ljava/lang/S
#调用静态的sha1函数,计算出一个hash值
move-result-object v0
iget-object v1, p0,Lcom/alipay/mobile/security/gesture/component/e;-&a:Lcom/alipay/mobile/framework/service/ext/security/bean/UserI
invoke-virtual {v1},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getGesturePwd()Ljava/lang/S#调用UserInfo的getGesturePwd函数获得加密过的正确的手势密码
move-result-object v1
invoke-virtual {v0, v1},Ljava/lang/S-&equals(Ljava/lang/O)Z
#比较输入的密码和正确的密码
move-result v0
if-eqz v0, :cond_1
很显然,上面这个if-eqz是关键,如果比较函数equals返回false,那么跳转到cond_1标签处。cond_1标签处的主要任务就是取当前输入错误的次数,在这个基础上加上1,然后调用settingGestureError函数重新设置错误次数。如果两个字符串相等,那么调用settingGestureError函数把错误次数重新置为0。
下面为了验证我们的猜测,进行如下两步操作:
1、在a函数中加入类似如图12的打印日志代码,这里未全部截图下来,其他地方留给读者自行添加。
2、在if-eqz v0前patch v0,代码如图13所示。
&&&&&&&& 完成上述两步操作之后,保存修改过的smali文件,编译打包,重新安装支付宝钱包客户端,随意输入手势密码。这里引用大魔术师刘谦的一句话,&接下来就是见证奇迹的时刻&。在我们随意输入密码之后,熟悉的支付宝主界面出现在我们眼前,同时LogCat输出日志如图14所示。
日志的组成大致如下:
第一行:用户输入的,还未加密的手势代码;
第二行:保存在数据库中正确的加密后的手势密码;
第三行:未加密的user id;
第四行:采用des加密后的user id;
第五行:拼接用户输入和加密后的user id;
第六行:采用sha1算法计算出来的加密之后的用户输入的手势密码。
&&&&&&&& 通过仔细的分析日志,我们从中可以得出两个结论:
1、真实的手势密码和我们输入的密码是不一样的,但是我们还是进入了支付宝的主界面,证明我们上面第2步中修改的地方非常关键,从而也印证了e.smali文件的a函数确实是比较用户输入和真实密码的关键函数。
2、支付宝是将用户的手势操作转化成对应的数字,然后再做一定的加密处理之后保存到数据库中。比较用户输入的时候,是用相同的加密步骤对用户输入进行加密,再与数据库中保存的密码做比较。数字代码对应如图15所示。
&&&&&&&& 程序分析到这里,我们已经清楚的明白了支付宝手势密码的加密过程和算法,并且通过修改关键跳转的方法,使得我们随意输入手势密码都可以进入支付宝主界面。
仔细思考 & 还原手势密码?
&&&&&&&& 回过头来仔细想想,手势密码的加密流程是这样的,用户输入+user id组成一个字符串,将该字符串经过sha1算法哈希之后得到另一个加密字符串即为手势密码。其中,user id字符串在alipayclient.db数据库的userinfo表中的userId字段已经表明了,正确的手势密码gesturePwd字段也已经有了。虽然sha1算法不可逆,但是在我们的这个实例中,最长输入是9位,最短为4位,我们完全可以通过已知的信息,采用有限的穷举,就能得出正确的手势代码了。相信对于现在的4核乃至8核cpu手机来说,这点计算应该是很轻松的。
&&&&&& 但是,我们难道只能通过穷举来实现暴力破解吗?答案是否定的。其实我们完全可以自己构造一个输入,例如0123,采用和支付宝完全相同的加密流程得到手势密码。然后,通过修改userinfo表的gesturePwd字段内容为上面我们计算出来的手势密码,这样,就能实现随意修改手势密码的目的了。想法有了,下面我们编写代码来验证该方法是否可行。
&&&&&&&& 查看支付宝使用的sha1算法可知,该算法与支付宝的整体功能业务耦合度基本为0,于是我将sha1算法所在的smali文件转换成jar包,然后导入到我的工程中,这样,就可以直接调用和支付宝完全相同的sha1算法了。程序代码如下所示:
protected void onCreate(Bundle savedInstanceState) {
&&&&&&&&&&&&&&&&&& super.onCreate(savedInstanceState);
&&&&&&&&&&&&&&&&&& setContentView(R.layout.activity_main);
&&&&&&&&&&&&&&&&&& setTitle("支付宝手势密码修改器");
&&&&&&&& &&&&&&&&
&&&&&&&&&&&&&&&&&& szUerIdString = "";
&&&&&&&&&&&&&&&&&& tvStatus = (TextView)findViewById(R.id.textStatus);
&&&&&&&&&&&&&&&&&& etEncryptUserid = (EditText)findViewById(R.id.editEncryptUserId);
&&&&&&&&&&&&&&&&&& etDecryptUserid = (EditText)findViewById(R.id.editDecrypUserId);
&&&&&&&&&&&&&&&&&& etMyPwd = (EditText) findViewById(R.id.editMyselfPwd);
&&&&&&&&&&&&&&&&&& btnOK = (Button)findViewById(R.id.btnSetting);
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& if(!RootUtils.hasRootPermission()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText("本程序只能在ROOT过的手机上运行!");
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& &if(!RootUtils.hasInstalledApp(MainActivity.this, "com.eg.android.AlipayGphone")){
&&&&&&&&&&&&&&&&&&&&&&&&&&& &tvStatus.setText("请确认您已经安装了支付宝钱包!");
&&&&&&&& &&&&&&&&
&&&&&&&& &&&&}
&&&&&&&&&&&&&&&&&& &
&&&&&&&&&&&&&&&&&& String szUserId =getUserId();
&&&&&&&&&&&&&&&&&& if (!szUserId.isEmpty()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& szUerIdString =szUserId;
&&&&&&&&&&&&&&&&&&&&&&&&&&& etEncryptUserid.setText(szUserId);
&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText("读取user id成功,请输入自定义手势密码!");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& StringszDecryptUserid = decryptUserid(szUserId, "userInfo");
&&&&&&&&&&&&&&&&&&&&&&&&&&& if(!szDecryptUserid.isEmpty()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& etDecryptUserid.setText(szDecryptUserid);
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&& else {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText("解密user id失败!");
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& btnOK.setOnClickListener(newOnClickListener() {
&&&&&&&& &&&&&&&&&&& @Override
&&&&&&&& &&&&&&&&&&& public void onClick(View view) {
&&&&&&&& &&&&&&&&&&& &&&&&&&& StringszPwd = etMyPwd.getText().toString();
&&&&&&&& &&&&&&&&&&& &&&&&&&& if(szPwd.isEmpty()) {
&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&& &Toast.makeText(MainActivity.this, "设置的自定义密码不能为空,请重新输入!", Toast.LENGTH_LONG).show();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&& &&&&&&&& else{
&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&& StringBuildersBuilder = new StringBuilder();
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& sBuilder.append(szPwd);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& sBuilder.append(szUerIdString);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Stringtmp = sBuilder.toString();
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Stringsha1 = com.alipay.mobile.security.gesture.util.SHA1.sha1(tmp);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Log.v(TAG,sha1);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(!sha1.isEmpty()) {
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(updateDatabaseGesturePwd(szUerIdString, sha1)) {
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText("设置自定义密码成功!");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else{
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText("设置自定义密码失败!");
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&& }
&&&&&&&& &&&&&&&});
&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&& else {
&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText("获取user id失败!");
&&&&&&&&&&&&&&&&&& }
&&&&&&&& }
&&&&&&&& 获取user id和修改手势密码的代码如下:
// 获取加密的user id
&&&&&&&& private String getUserId()
&&&&&&&& {
&&&&&&&&&&&&&&&&&& String szRet = "";
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& // 修改数据库文件的读写权限
&&&&&&&&&&&&&&&&&& RootUtils.RootCommand("chmod666 /data/data/com.eg.android.AlipayGphone/databases/alipayclient.db");
&&&&&&&&&&&&&&&&&& RootUtils.RootCommand("chmod666/data/data/com.eg.android.AlipayGphone/databases/alipayclient.db-journal");
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&&&&&& Context context =createPackageContext("com.eg.android.AlipayGphone",& Context.CONTEXT_IGNORE_SECURITY);
&&&&&&&&&&&&&&&&&&&&&&&&&&& SQLiteDatabase dB=context.openOrCreateDatabase("alipayclient.db", 0, null);
&&&&&&&&&&& Cursor cursor =db.rawQuery("select * from userinfo", null);
&&&&&&&&&&& if (cursor.moveToFirst()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& szRet =cursor.getString(USER_ID_INDEX) ;
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& db.close();
&&&&&&&&&&&&&&&&&& } catch(NameNotFoundException e1) {
&&&&&&&&&&& e1.printStackTrace();
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& return szR
&&&&&&&& }
&&&&&&&& // 修改手势密码
&&&&&&&& private booleanupdateDatabaseGesturePwd(String szUerId, String szPwd) {
&&&&&&&&&&&&&&&&&& boolean bRet =
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& if (szPwd.isEmpty() ||szUerId.isEmpty()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&& return bR
&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&&&&&& Context context =createPackageContext("com.eg.android.AlipayGphone",& Context.CONTEXT_IGNORE_SECURITY);
&&&&&&&&&&&&&&&&&&&&&&&&&&& SQLiteDatabase dB=context.openOrCreateDatabase("alipayclient.db", 0, null);
&&&&&&&&&&&&&&&&&&&&&&&&&&& ContentValues cv =new ContentValues();
&&&&&&&&&&&&&&&&&&&&&&&&&&& cv.put("gesturePwd",szPwd);
&&&&&&&&&&&&&&&&&&&&&&&&&&& String[] args ={String.valueOf(szUerId)};
&&&&&&&&&&&&&&&&&&&&&&&&&&& int n =db.update("userinfo", cv, "userId=?", args);
&&&&&&&&&&&&&&&&&&&&&&&&&&& if (n& 0) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bRet =
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&& db.close();
&&&&&&&&&&&&&&&&&& } catch(NameNotFoundException e1) {
&&&&&&&&&&& e1.printStackTrace();
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& return bR
&&&&&&&& }
&&&&&&&& 最后,程序运行效果如图16所示。
&&&&&&&& 输入自定义密码,点击确认,程序提示设置成功。此时,打开支付宝,输入我们的自定义手势代码即可解锁支付宝进入熟悉的主界面了。
如上所述,通过修改支付宝钱包数据库来达到破解目的的方法是需要在已经root过的手机上才能使用的。设想一下这种情况,我的手机已经root,并且手机被盗。那么,除了手机上的艳照有可能泄露之外,小偷还可以通过修改支付宝的手势密码来登录我的支付宝,因此,造成直接的金钱损失也不是没有可能。
&&&&&&&& 一般来说,普通用户日常使用的手机尽量不要去root,也不要随便去下载来历不明的软件和外挂。
阅读(...) 评论()支付宝取消手势密码
  7月8日,手机版支付宝应用发布了9.0新版,新上线的版本增加了&商家&和&朋友&两个功能,替代了原先的&服务窗&和&探索&,此外,新版取消了手势密码,并且重置支付密码机制也发生了变更。  新版支付宝停止了手势密码功能,对于没有指纹解锁的手机用户来说,普遍对于安全性产生了担心。如果用户设置一个简单的锁屏密码,也有被破解的可能,设置带字母的复杂密码,手机使用体验大为下降。不设置锁屏密码,别人拿到手机后有可能在短时间内操纵支付宝帐号。  对此,支付宝相关负责人回应称,目前支付宝已经形成以账户、设备、位置、行为、关系、偏好等6个维度构成的大数据风控来判别用户行为,&举个例子,在行为这个维度,每个人触控手机屏幕的方式不同,而手机上是有很多传感器的,所以可以通过指压、接触面积、重力变化、连续间隔时间等,帮助判断是否是主人操作。而一旦判别是异常操作,系统将立刻拦截这笔交易。&随着新版本的上线,支付宝不再只是一个支付工具,而成为一个场景服务平台,&如果每次登录都需要输入手势密码就成了累赘&。  支付宝9.0不仅强制关闭了手势密码,就连更改支付密码都变的无比简单。只要系统检测到你是在常用的设备上登陆的,就能通过身份证号码来直接修改支付密码,而无需原有的支付密码。通过新版支付宝钱包、电脑或者人工审核找回支付密码,新的密码只能为六位纯数字密码。  在我看来,支付宝的新版升级在安全上的确存在问题,例如用户手机被偷的场景,以及工作时用户将手机放在桌上临时出去,同事打开手机的场景,只要用户没设置锁屏密码,都会存在用户支付宝资金被盗的可能性,而手势密码的取消,让大多数安卓手机和低版本iPhone手机变得不再安全,看来,这是要强制用户升级有指纹解锁手机的节奏啊。
  除非注明,文章均为原创,转载请以链接形式标明本文地址
  本文地址:
.王汪汪汪汪汪汪汪汪汪汪
支付宝9.0四个问题:1.登陆无屏障,超市无限扫码,无需输入密码。2.强制取消手势密码+默认开启小额免密,未主动关闭免密的情况下钱包安全形同虚设。3.支付密码=一层纸,身份证号成为最高权限,是密码更隐秘还是身份证号更隐秘?熟人作案毫无障碍。4.隐私,算了,作为天朝人,从来就没有。
.sunbin-孙彬彬
好吧,我停止的时候,还让我选择了一下。
.马里昂杜兰特
我看是强制卖保险David 于
10:45:15 回复而且保险条例不赔同事,熟人
.马马马马马马马马马马马马马
都说了是常用设备!!!
.马里昂杜兰特
手势密码就算没用也有心理作用
这背后是和某保险公司勾结设下的陷阱,投保页面下面有一行小字,到期自动续保,默认是勾选上的,虽然第一年免费,虽然每年才0.88元,但是几亿用户,每人0.88,呵呵
.马里昂杜兰特
好好地支付宝 做什么社交 猴子学样 还不安全了
.小小魚_waifry
刚刚又更新了一个版本,已经需要验证原密码了…
万一手机被盗了怎么办?
.MarvinGPP
不知道这些猪头怎么想的,现在支付宝一点就打开了
.丶你是我的小啊小沫莉
不然支付宝保险怎么卖的出去,我不管我是神回复
.南看台的光头
强行6位支付密码 禁用手势解锁 不知道支付宝想干嘛
.村后野草地里过人如麻
为了社交需求呀,不然每次都输手势,谁乐意在支付宝上聊天
.哈威斯特弗莱
首先你的手机要丢
还要广而告之么?当年淘宝密码忘记,用别人的绑定手机强行踢掉换成邮箱绑定的bug不值一提。
.独特无敌锅
操作不方便头像在右上角且不能和QQ一样快速向左滑动,不方便单手操作。。而且你对保险很有信心我没有。。就算手机里没有身份证照片。身份证号不是特别容易推断出来么?省份年龄性别等等
应该是为了推那个保险吧?
.蝴蝶恋花fd
政府奸商们,越来越无耻到及点。
越来越简单了,以后手机不要给别人用
.從前有個阿明
你用的是什么手机吗,界面不错
那么检测机制是?
.王汪汪汪汪汪汪汪汪汪汪
用户账户安全不值8毛8
.__Ritchie__
手机丢了怎么办?什么破想法!
安全很重要...身份证号码都是半公开的东西了,,
一个支付软件为毛要有社交功能,如果有一天它真成社交软件了,那也是我离开支付宝的那一天
我也不理解为什么要取消这个
支付宝改行卖保险了
还好我用的是iPhone
.Sida可爱多
可惜的是。安卓指纹并不支持锁应用只支持付款扫指纹。只有iPhone可以。
你这就是用自家钥匙测试自家门牢不牢
.坚持向日的葵
呵呵,人家有大数据保护你的安全,怕毛
已经果断的关闭手机支付业务了,手机支付宝钱包也卸载了,坐看支付宝作死
.幸运的乐陶桃
新版太渣,就是为了推保险,我只要账户私密安全,谁稀罕赔啊
.Mr_叫少爷如何
说的像你用支付宝不要支付密码一样
呵呵 你以为身份证密码只有自己知道???
.诙谐夜晚X
还好保险便宜,已经买了。
手机和身份证放在同一个包包里
马云先生,真的牛叉!
.Bombready
他是为了要推广那个保险业务
.浪迹天涯月影
手势密码没什么吊用,早不用了
.烟花不暖糖衣不甜
咦?我还能用手势密码啊?
.tide_and_wave
8.6版本的支付宝钱包还可以用手势解锁
昨天什么都不用就能改
.司令-silingo
大数据风控。。
哪个傻逼想出来的,我手机里有身份证照片啊
.红叶映满山
一但手机失控支付宝帐户的被盗风险加大.
不用原密码,也太冒险了
支付宝和微信是两个不同的应用,做好自己的特色就好。
.婲千岁卟知归
手机被别人拿走换了密码怎么办
.倦体走天涯
我的支付宝早就被强制6位数字了。
.独特无敌锅
还不如原来的呢。你能保证我不丢?我还不能在相册里当身份证照片不成
其实这个无所谓啊,原来你国网银用操作复杂程度当安全性是有群众基础的啊。
.支付宝取消手势密码
人无远虑,必有近忧!
.一只香菜君
手机钱包一起丢就完了
如果手指脱皮了,貌似连手机也不能用了?
为了增加体验 迅速进行登录 就和微信一样。
.角落里的monster
他们用数据分析算出了用户的使用习惯,一旦有反常的行为,哪怕是自己干的,也会需要更加深层次的一些验证
所以在查看余额那里好歹该有个密码吧
这是改了吗, 早上还说什么都不用呢
说手机不能丢, 这还不算什么。 手机访问的APP那么多,其中获取到手机设备信息,再拿到支付宝去修改密码,岂不是很成功?
.Stuka_Ju87
淘宝为了自己的商业利益,从不考虑用户安全,所谓大数据风控一直有漏洞!
.S_in_colorful
为了卖保险也是蛮无耻的
.MarvinGPP
今天登陆还让我关闭手势,给我保100w
.南看台的光头
早就是必须六位数字了 这辈子是没有换密码的欲望了
.要成大女人的奎因小姐
赞。。但要是别人知道我身份证号码。怎么办
.123vhbggfkjh
我他妈真的一直都没有设置过手势密码。
好狗屁不通。。
钱包被偷,手机被盗怎么办
我也更新了最新版本,但是并没有出现这个问题。。。发生了什么?!只有苹果才会出现吗?
.宝宝很可爱哦
不会吧,身份证号码,那不是很容易被盗吗
.lhwang1989
smartisan可以加密板块,贼噶好用了
斯认为支付宝在想办法提高安全性和便捷性,他们真的是努力为用户提供服务,而比某银行就在推卸责任,无担当。
是强制买那个支付宝100万保障,阿里开始从产品策略来扭转用户习惯,算是继续为阿里金融铺路~
.HuangChen_cn
支付宝官微已经解释了吧?博主没看?它也送了你100万保险啊,人家有这自信你怕个啥?
.灞水之源乐悠悠
电信 移动 联通 银行 别把客户身份证号给买了
.影子想要成为莉莉安
保险公司的营销吧
.妈妈嫌我太妖娆
我的支付宝自动更新后,余额宝少了200多块钱!打电话问客服,客服让我对账单!很想说,对你妹的账单!老子钱对不上!果断不在使用支付宝!太没安全性质了
.星期天的下午茶
今天验证了确实是很简单就改了
信息泄露太容易了这时代
.jiamanyou
取消手势密码 很不安全啊 这是升级的越来越不安全了
难道不是为了卖保险么
支付宝太傲骄了, 你的理由再充分, 在用户看来只不过是利用自身的垄断地位 强制裹胁用户而已, 希望腾迅的财富通雄起tb 于
11:04:54 回复财付通就是个逗逼
.宁静之雨殿下
所谓大数据风控更好保障数据安全,目前还是呵呵的,昨天还看到一片帖子教你怎么在别人手机上偷支付宝的钱。漏洞不仅仅是小额免密支付,还有直接改支付密码,支付宝客户端会提示检测到是常用手机不需要输入旧支付密码就直接改成功!建议装个程序锁:安卓有很多的,苹果越狱后有个BioProtect,不越狱呵呵jackie111314 于
10:38:19 回复有指纹的可以用指纹解锁——破了指纹等于破了支付宝;越狱的连指纹都不让用——丢了不陪哦,谁让你越狱了;什么?越狱可以装插件来指纹解锁?——安全模式下什么插件都是笑话。
.自己注册账号去
总有人牛b哄哄的“不是有了什么什么脑!”又或者“大数据你不懂!”然而这和你多加个手势密码并没有什么鸟冲突。
这不是很大风险?
.范特西先生_WeboChen
所以这一点很容易将盗款,几分钟转走银行卡里的钱
要做社交嘛,没办法,不然使用起来很麻烦
.土家族的气势
幸亏换了手机,可以指纹识别!有本事来剁手指呀!
.小生有礼_
如果手机丢了点办?
.西瓜最近贱卖了
苹果用户惹不起,安卓用户你们都换魅族吧
.深圳市全品医疗
有指纹我也买了份保险。
.喜欢卡农的骑士
所以我把我的每一个理财应用都加了密码。都是被逼的。
它们还没完没了秀它们的保险。
我不知道是不是!
.墨墨大学士
手机丢了就郁闷了
.被白雪覆盖那些青翠
在微信的压力下支付宝钱包失了方寸。
我的不是强制,让我选择的
.谁的都不是诶巴扎黑
早已养成了不升级的良好习惯
.一个小蚪蝌
丟了直接陪100萬
果断卸载支付宝
.春暖的花开去冒险
还没有更新的我真开心,
其它骂支付宝的人都是帐号没多少钱的,包括绑定的卡也是,帐号余额多的人大多认为支付宝是安全的,支付宝一天被用几千万次,有几个被盗的?
很久之前开新账号设置密码时就提示只能使用6位数,瞬间感觉有点坑了。现在又取消了手势。。。。
感觉新版强制取消手势密码没有做到以人为本,就是为了多推送信息,得以迅速浏览商家内容,让O2O走起,把支付宝开放成“商业版微信”。那个印象笔记为什么收费版才有密码功能,就是为了保护个人隐私和知识产权。虽说印象做法坑爹,但至少知道利害关系。支付宝就来个百万赔付合约,显得店大欺客。
不看这篇文章,我还真不知道!前几天支付宝图标突然变成蓝色,然后看优酷广告看到蓝色支付宝的广告。。。。不知什么时候被替换了!!!
.范特西先生_WeboChen
这样是有问题的 网上已经有新版破解的方法
指纹也没有用,也可以破解,最好不用支付宝最安全。什么也不用。
手机掉了就四大皆空
手机里别没事放身份证照片
.用户名不存在无法显示
支付密码一只都只能纯数字,提款机和刷卡机都不方便复杂密码.
.hui庚随sj
这么说,我都不敢升级了
.景VioletStar
还好我手机可以软件加锁
.茜茜-1122
这不安全啊,手机和钱包(内有身份证)被盗怎么办?
.Me伤了你的心的我的心真的好伤心
交友不慎肿么破,,,,知道你身份证号,,,,然后偷你爪机,,,,!赞我赞我
为啥子我设置可以设置为6-20个字符,还不能纯数字。
指纹支付将来是一大趋势
是啊,好奇怪,为什么要这样做啊?
还好看到了,不升级了
.笑点不着调_93
不是说了嘛!大数据会记录你各种使用习惯嘛!次数按屏幕的压力,支付的时间!等。。。支付宝官方这么说的!!!!
.sunbin-孙彬彬
这根本不是“强制”。充其量是 诱导。
android上的支付宝app烂得像坨翔 早删早超生了 以后手机端支付一律微信
.W还是你最爱我
我的支付宝从来没掉一分钱 你们谁掉过 一群装逼的
这么多人黑支付宝啊
.咖啡杯7-26
手机丢了被人改密码怎么办?????
支付宝是通过你的用户习惯判断户主的。手的大小,触摸频率,转账习惯,这些东西比手势密码更难破解。zhuyuchen 于
8:17:13 回复似乎不管用啊,我刚刚让朋友用我的支付宝钱包转钱,只要知道密码能转啊,怎么安全了
我一直用指纹。
主要是我的余额宝有72万块钱,别人拿到手机一看就看到了,真的好不爽
跟输入密码有JB毛,区别???
哎,无知真可怕。了解下什么叫‘云’吧
.莓有最美蜂蜜哥
我只想问手机丢了导致支付宝空了,买的保险管不管?
.你我的科技
那文案写得是真长
.此处应该有昵称丶
算了不用了,以后只用微信支付!
看了下我是9.0的,我还是能手势进入支付宝
是要做类似微信钱包的敞开式支付吧?增加使用频率,减少输入密码或手势的次数。微信也是一直处于登陆状态的。
.伊纤纤女装
也许大数据真的可以保安全,随便让不放心的买一份保险!
赞助商广告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.}

我要回帖

更多关于 支付宝设置手势密码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信