不知道从什么时候起,我们小区就装上了新的门禁,这个门禁系统是由一家叫亲邻科技的公司提供的,他们的门禁系统实际上就是个活动的广告牌,门禁开关上有广告,门上也有广告,到处都是广告。
其实这些都能忍了,但是忍不了的是他们的 App 开个门都要看广告,是真的烦人,而且这个破 App 又慢又卡,每次启动光是等那个加载界面都要等个几秒钟,进去之后有时候还要登录,登录完了加载数据又要几秒钟,有这功夫我都能喊保安给我开个门了。
但是老是麻烦保安大哥也不好,于是我就想着找个办法给它破解了。一开始我想的是通过抓包来破解,但是后来发现暂时行不通了,因为已经有 其他大佬破解过了,而他们现在为了防破解,加入了 nonce、sign 这两个参数对请求进行校验,同时还通过 SSL Pining 来阻止抓包,极大地提升了破解难度。
那么这就是个无解的问题了吗?并不是,其实如果你稍微搜索一下,就会发现有人通过 Frida 和 blutter 等软件,通过 Hook 掉 App 的签名接口来破解,但是这终归不是个稳定的办法,因为只要他们一修改签名方式,Hook 就没用了,又要重新逆向,非常麻烦。于是我想到了一个简单粗暴的办法,那就是:模拟点击。
简单粗暴,就是单纯通过模拟屏幕点击。配合软件在后台挂机实现自动开门。但是这个软件每次开门之后都会弹个广告出来,而且关闭广告必须要点那个小到不能再小的 X 按钮,并且这个按钮每次出现的位置都不同,有时候在左上角,有时候在右上角,如果要通过识图来获取按钮位置的话就太麻烦了,干脆每次开完门就重启一次 App,这样就没有广告了。
private void CloseAd() {
Thread thread = new Thread(() =>
{
Thread.Sleep(closeWait);
deviceClient.StopApp("com.qinlin.edoor");
Thread.Sleep(1000);
deviceClient.StartApp("com.qinlin.edoor");
});
thread.Start();
}
然后让程序监听在 HTTP 端口上,当收到请求的时候就发送 Adb 请求模拟屏幕点击,实现远程自动开门,配合 HTTP Shortcuts 这个非常好用的软件,就可以在手机主屏幕上一键开门了,再也不需要每次开门等个几十秒了。
最后附上项目地址:https://github.com/kasuganosoras/FuckQL
需要可以自取。
读者评论