通过LocalServerSocket限制

前段时间发现一个应用被双开后,不能同时在一个手机上登陆两个账号,登陆A之后,B会被踢下线。
刚开始还以为有什么黑科技,或者有名管道,本地socket之类的,或者是向sd卡写了什么文件,这几种方案都检查了,没有效果。
没办法只能分析它的逻辑了,应用是加固了的,脱壳之后分析其原理。偶然通过netstat命令发现了这个应用监听了一个端口,发现原来用了这么简单的一种方法防止双开,既没有读取IMEI,IMSI,也没有黑科技。就下面几行代码

        /* renamed from: b */public boolean mo4479b(String str, VirtualCheckCallback virtualCheckCallback) {if (this.f1320d != null) {return false;}try {this.f1320d = new LocalServerSocket(str);return false;} catch (IOException unused) {if (virtualCheckCallback != null) {virtualCheckCallback.mo4480a();}return true;}}

原理是创建了一个 LocalServerSocket,传入了同一个 str,LocalServerSocket在native还是通过linux的套接字实现的,这个str是不能重复的,只要重复了就是bind失败,就这么简单,检测到创建LocalServerSocket失败就退出登陆,防止被双开。

检测service代理

还有另外一种方法是检测service是否被代理,PMS在双开里面是必然要被代理的,恰好ActivityThread里面也存了一份缓存。

try {Class v0_2 = Class.forName("android.app.ActivityThread");Object v13 = v0_2.getDeclaredMethod("currentActivityThread").invoke(null);Field v0_3 = v0_2.getDeclaredField("sPackageManager");v0_3.setAccessible(true);if(!Proxy.isProxyClass(v0_3.get(v13).getClass())) {goto label_35;}arg17.finish();Process.killProcess(Process.myPid());
label_35:...
}

回溯栈检查有没有可疑的class

简单的禁止应用被双开的方法相关推荐

  1. 禁止 Python 子类覆盖父类方法

    当实现我们自己的父类Animal的时候,由于meta.has_base为 False,所以不会触发检查逻辑.但当我们基于Animal实现Dog子类的时候,由于meta.has_base是True,所以 ...

  2. 计算机系统如何禁止删除文件,电脑禁止安装删除文件 禁止复制电脑文件的方法...

    在企业局域网中,员工上班都会用到电脑,工作中形成的一些重要文件也都直接存储在单位的电脑或服务器上,如何保护这些文件的安全就显得至关重要.尤其是,当员工不小心或故意删除文件的情况下,或者他人恶意删除文件 ...

  3. windows Server 2003使用ip安全策略禁止某ip访问服务器的方法

    windows Server 2003使用ip安全策略禁止某ip访问服务器的方法 2010年12月13日 星期一 11:41 windows Server 2003使用ip安全策略禁止某ip访问服务器 ...

  4. C# 禁止用户关掉对话框的方法

    禁止用户关掉对话框的方法 1.应用场景 2. 不显示最大最小和关闭按钮 3. 重载窗口关闭按钮方法 4. 代码下载地址 1.应用场景 在实际项目中可能会遇到这样的情况,我们不希望使用者关掉某个对话框, ...

  5. 限制访问网站、过滤特定网址、禁止访问指定网站的方法

    限制访问网站.过滤特定网址.禁止访问指定网站的方法 此博文包含图片 (2017-12-19 16:36:25)转载▼ 许多公司出于管理员工上网行为的需要,经常限制电脑访问一些网站例如游戏网站.购物网站 ...

  6. windows 系统禁止使用 U 盘的方法

    windows 系统禁止使用 U 盘的方法 最简单的办法: 注册表 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentCntrolSet\Services\USBSTOR] 将名为 ...

  7. ICCV2021 Oral SimROD:简单高效的数据增强!华为提出了一种简单的鲁棒目标检测自适应方法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小马 来源丨我爱计算机视觉 ▊ 写在前面 本文提出了一种简单有效的鲁棒目标检测无监督自适应方法( ...

  8. 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    文章目录 一.禁止 / 开启内核抢占 与 方法保护临界区 二.编译器优化屏障 三.preempt_disable 禁止内核抢占 源码 四.preempt_enable 开启内核抢占 源码 一.禁止 / ...

  9. Python简单遍历字典及删除元素的方法

    Python简单遍历字典及删除元素的方法 这篇文章主要介绍了Python简单遍历字典及删除元素的方法,结合实例形式分析了Python遍历字典删除元素的操作方法与相关注意事项,需要的朋友可以参考下 具体 ...

最新文章

  1. GEF常见问题8:导出到图片
  2. 浅析网站建设与设计有哪些需要引起重视的行业规范
  3. 【JavaScript脚本】——T2事件操作
  4. python数据导入hive_Python操作HIve,将数据插入到Mysql
  5. 计算机真正管理的文件名是什么,计算机题,请大家多多帮忙,谢谢
  6. selenium webdriver模拟鼠标键盘操作
  7. hikari数据源配置类_SpringBoot多数据源配置详解
  8. Jupyter Notebook入门攻略
  9. 路由器三种口令的设置
  10. windows+cygwin+ns2的安装过程及相关问题
  11. dockerfile 创建Jenkins镜像
  12. 如何高度自适应_精准放疗:TOMO如何做到自适应放疗?
  13. 用FileZilla创建的Ftp如何使用匿名登录
  14. PHP静态方法中调用非静态方法
  15. 诊断(UDS)协议栈设计-系列讲解
  16. Netty 基本原理
  17. TT 的旅行日记 Week7作业B题
  18. 武汉服务器眼中的黄鹤楼
  19. android自定义UI模板图文详解
  20. QT使用MSVC编译时报错C2001: 常量中有换行符

热门文章

  1. [No00004E]千万不要“拼命”工作——写在滴滴总裁柳青患癌症之后
  2. 小程序配置服务器域名
  3. javascript中十进制转十六进制代码
  4. python之selenium模拟登录QQ空间
  5. 阿里云服务器java项目踩坑日记
  6. 人工智能轨道交通行业周刊-第5期(2022.7.4-7.17)
  7. 如何使用swing创建一个BeatBox
  8. 动力学(dynamics)与动理学(kinetics)概念辨析
  9. MTK 平台获取IMSI号码 以及如何截获系统中的各种消息
  10. 谷歌网页自动翻译,赞一个