某Wifi万能钥匙,用了一段时间,遗憾的就是不能看到别人的Wifi密码。
虽说小米手机可以扫描二维码看到wifi密码,但每次都这么操作还是比较蛋疼。
于是想能不能让软件自己主动把密码显示出来。
从官网上下载最新版本:4.1.3
第一步:破解签名保护
重新打包,发现它有签名保护,非官方签名的话不会获取到周围的wifi热点密码。
那么就需要先破它的签名保护,这是在libwkcore.so做的验证。
使用16进制修改工具修改下if判断条件,变成了下面这样,非官网的签名才能正常运行,就可以了:
一共有3个地方,具体都是将D0改为D1。
第二步:获取wifi密码
现实抓包,发现他的的wifi密码在从服务器发送到手机端全程是加密的。看来只能从代码入手了。
通过关键字搜索,很快定位到了密码处理相关的地方,在这个文件里面:
具体的处理流程是先从json串中取出加密的字符串,通过JNI解密,再将解密的密码拿去连接wifi。
下面是具体的Smali代码::goto_1
const-string v0, "pwd"
invoke-virtual {v5, v0}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 120
if-eqz p2, :cond_5
invoke-static {}, Lcom/lantern/core/a;->getAppContext()Landroid/content/Context;
move-result-object v7
invoke-static {v0, v7}, Lcom/lantern/core/WkSecretKeyNativeNew;->s5(Ljava/lang/String;Landroid/content/Context;)Ljava/lang/String;
move-result-object v0
:goto_2
invoke-static {v0}, Lcom/wifi/connect/plugin/magickey/d/c;->a(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
iput-object v0, v6, Lcom/wifi/connect/plugin/magickey/b/a;->b:Ljava/lang/String;
.line 121
iget-object v0, v6, Lcom/wifi/connect/plugin/magickey/b/a;->b:Ljava/lang/String;
invoke-static {v0}, Landroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String;
关键的代码:
V0便是解密后的wifi密码。
通过上面的分析,基本就可以做出个显示密码的Wifi万能钥匙了。
最简单的就是弹出个toast,把Vo的值显示出来....
第三步:修改UI
可以这样感觉太生硬,于是再修改下它的UI,layout,string直接往public.xml中插入值就可以了。
新增id时需要注意要在values/ids.xml中进行定义。
比如像这样的:
<item type="id" name="imageView">false</item>
第四步:修改包名
改包名也是很重要的,如果给某个好友使用,总不能每次都让别人把原来的卸载了再安装吧。
唯一要注意的是里面用到了Provider,修改把author也该了,可以参考之前破解微信改包名的脚本。
到现在核心的功能基本搞完了。
图1:获取到wifi密码后,会toast提示,并且保存到本地:
图2:点击wifi图标,显示出的最后一个item会显示出获取到的wifi密码。
图3:点击上图的复制密码,会复制到剪切板,方便发送给好友使用...
破解后的APP下载地址:http://www.meng.ooo/app/wifi.apk
更多推荐
破解某Wifi APP,无需Root也可查看密码
发布评论