破解某Wifi APP,无需Root也可查看密码

来源:互联网 发布:淘宝奖牌定做 编辑:程序博客网 时间:2024/04/30 02:44

某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

3 0
原创粉丝点击