企业微信定位打卡
废话少说:定位修改软件链接奉上
一、定位打卡原理
GPS定位:企业微信可以利用手机的GPS功能进行定位,这是一种基于卫星的定位技术,能够提供相对精确的位置信息,通常精确度在20米以内。这种方式耗电较大,且在室内可能无法使用。
LBS定位技术:LBS(Location Based Services)定位技术是目前手机使用最普遍的定位方式。它通过手机信号塔或Wi-Fi网络来确定手机的位置,适用于大多数日常场景。
虚拟定位打卡的防止:企业微信提供了防止虚拟定位打卡的功能,可以识别虚拟定位软件等方式来篡改打卡定位的行为,并可选择“允许打卡,记录为地点异常”或者“禁止打卡”。目前此功能仅支持iOS平台,安卓平台暂不支持定位作弊检测。
拍照打卡和Wi-Fi打卡:企业微信还可以通过拍照打卡和配置Wi-Fi打卡来防止地点作弊打卡。这两种方式可以增加打卡的真实性,确保员工在指定地点打卡。
二、虚拟定位的漏洞
企业微信在定位打卡方面确实存在一些漏洞,这些漏洞被一些虚拟定位软件如Fake Location所利用,从而实现虚拟定位打卡。
企业微信允许设置固定的打卡时间,但如果没有正确设置,员工可能在非工作时间通过虚拟定位软件打卡,隐瞒迟到早退行为。对于外勤工作人员,由于不在公司,企业微信难以及时监管其工作情况,这为虚拟打卡提供了机会。而且企业微信目前只支持iOS平台的虚拟定位检测,安卓平台暂不支持定位作弊检测,这为安卓用户使用虚拟定位软件提供了便利。
三、Fake Location讲解
Fake Location可以在Root环境下对手机所处的位置进行模拟,并支持模拟时位置的快速切换,从而达到修改定位的目的。同时Fake Location也提供了无需Root的虚拟定位功能,用户可以通过选择模拟位置信息应用,设置Fake Location为模拟位置应用,从而实现虚拟定位。Fake Location可以随意篡改系统地理位置信息,被广泛应用于营销活动薅羊毛、虚拟站街等业务场景,同样适用于企业微信的虚拟打卡。用户可以在模拟器中安装企业微信和Fake Location,通过模拟器的Root权限进行虚拟定位,从而在企业微信上完成异地定位打卡。
Fake Location的下载链接在此。
附录:定位原理
本部分供技术工作者进行相关分析讨论。
1.工作原理
劫持LocationManagerService服务: Fake Location的核心技术在于通过“Hook”手段劫持Android系统中的LocationManagerService服务中的相关函数。LocationManagerService是Android系统中负责处理位置信息的服务,运行在system_server进程中。
返回预设地理位置信息: 当应用程序请求地理位置信息时,被劫持的LocationManagerService会返回Fake Location预先设置的地理位置信息,从而实现地理位置的篡改。
隐蔽性和难以检测性: Fake Location与传统的改定位工具不同,它直接劫持系统位置服务,而不是在目标应用进程空间内操作,因此更加隐蔽且难以被检测。Fake Location实施攻击的步骤
以下是Android中实现GPS定位功能的基本代码示例,Fake Location可能通过修改或劫持这些部分来实现其功能:
// 获取LocationManager实例
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// 创建并绑定LocationListener,监听定位信息的变化
LocationListener locationListener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {double latitude = location.getLatitude();double longitude = location.getLongitude();Log.d("Location", "Latitude: " + latitude + ", Longitude: " + longitude);}// 其他方法省略...
};// 请求定位更新
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener);
2.攻击步骤
释放恶意模块payload: Fake Location在启动时会释放一些恶意样本到特定的目录,如/data/data/com.lerist.fakelocation/files。
向system_server进程注入恶意模块payload: 通过动态分析手段,Fake Location将payload注入到system_server进程中,实现对LocationManagerService服务的劫持。
加载hook模块: libfakeloc_init.so被注入到system_server进程中,并加载hook模块libfakeloc.so,这是一个apk文件。libfakeloc.so加载后会执行类com.lerist.inject.fakelocation.InjectDex的init方法,在这个方法里,Fake Location添加了一些“系统服务”,用于跨进程通信。
3.分解分析
Fake Location通过劫持Android系统中的LocationManagerService
服务来实现地理位置的模拟。LocationManagerService
是Android系统中负责处理位置信息的服务,运行在system_server
进程中。以下是相关代码示例:
// 创建LocationManager实例
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// 请求位置更新
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0.0f, mLocationListener);
Fake Location通过劫持LocationManagerService
中的requestLocationUpdates
方法,使得当应用调用此方法时,返回的是Fake Location预设的地理位置信息,而不是真实的GPS位置信息。
// 定位实现
private LocationListener mLocationListener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {if(callback!=null){callback.onDataChange(location);}}
};
Fake Location与传统的改定位工具不同,它直接劫持系统位置服务,而不是在目标应用进程空间内操作,因此更加隐蔽且难以被检测。Fake Location在启动时会释放一些恶意样本到特定的目录,如/data/data/com.lerist.fakelocation/files
。
通过动态分析手段,Fake Location将payload注入到system_server
进程中,实现对LocationManagerService
服务的劫持。
Java.perform(function () {let C4921 = Java.use("u0D5F.u0560");C4921["u052A"].implementation = function () {console.log(`C4921.m18343 is called`);let result = this["u052A"]();console.log(`C4921.m18343 result=${result}`);return true;};
});
libfakeloc_init.so
被注入到system_server
进程中,并加载hook模块libfakeloc.so
,这是一个apk文件。libfakeloc.so
加载后会执行类com.lerist.inject.fakelocation.InjectDex
的init
方法,在这个方法里,Fake Location添加了一些“系统服务”,用于跨进程通信。
Fake Location通过设置回调机制,当地理位置信息发生变化时,回调相应的方法,从而实现地理位置的模拟。
public static interface Callback {void onDataChange(Location location);
}
4.攻击防御
对于应用程序来说,应该仅在必要时请求位置权限,并且在不需要时释放这些权限。以下是Android中请求和释放位置权限的代码示例:
// 请求位置权限
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}// 释放位置更新
locationManager.removeUpdates(locationListener);
同时也可以通过检测设备是否被root以及是否有模拟位置的应用安装来增加安全性。以下是检测设备是否被root的代码示例:
public static boolean isDeviceRooted() {String[] paths = {"/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/", "/data/local/bin/", "/system/sbin/", "/usr/sbin/", "/usr/bin/"};for (String path : paths) {if (new File(path + "su").exists() || new File(path + "busybox").exists()) {return true;}}return false;
}
安装和定期更新安全软件和防病毒程序,确保设备免受恶意软件的侵害。虽然这不是代码,但是它是防范Fake Location等恶意软件的重要措施。
在设备设置中禁用不必要的位置服务或定位功能,仅在需要时打开。以下是Android中禁用位置服务的代码示例
// 禁用位置服务
locationManager.removeUpdates(locationListener);
通过上述措施和代码示例,可以有效地防范Fake Location等定位修改软件的攻击,保护用户的位置信息安全。
相关文章:
企业微信定位打卡
废话少说:定位修改软件链接奉上 一、定位打卡原理 GPS定位:企业微信可以利用手机的GPS功能进行定位,这是一种基于卫星的定位技术,能够提供相对精确的位置信息,通常精确度在20米以内。这种方式耗电较大,且在…...
libaom 源码分析:码率控制介绍
码率控制 命令行码率控制选项:可以看到码率控制包括丢帧、resize、超分、码控模式、目标码率、目标上限下限(类似 x264、x265 中的 VBV)、码控偏置、GOP 码率等。Rate Control Options:--drop-frame=<arg> Temporal resampling threshold (buf %)--resize-mo…...
RK3568平台开发系列讲解(DMA篇)DMA engine使用
🚀返回专栏总目录 文章目录 一、申请DMA channel二、配置DMA channel的参数三、获取传输描述(tx descriptor)四、启动传输沉淀、分享、成长,让自己和他人都能有所收获!😄 📢DMA子系统下有一个帮助测试的测试驱动(drivers/dma/dmatest.c), 从这个测试驱动入手我们了解…...
C++中的函数对象
C 中函数对象的定义和特点 定义:函数对象(Function Object)也叫仿函数(Functor),是一个类,这个类重载了函数调用运算符()。当创建这个类的对象后,可以像使用函数一样使用这个对象&am…...
Linux指标之平均负载(The Average load of Linux Metrics)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...
盛最多水的容器
本节将数组与坐标轴共同组成一个容器,通过改变容器的两个端点使容器装的水最多,容器两个端点不断移动可以通过左右指针算法解决. 问题描述: 给定两个非负整数k1,k2...km每个数代表坐标中的一个点(i,ki).在坐标内绘制m条垂线,垂直线i的两个端点分别为(i,k1)和(i,0)找出其中的两…...
光伏功率预测!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型时序预测
目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量时序光伏功率预测 (Matlab2023b 多输入单输出) 1.程序已经调试好,替换数据集后,仅运行一个main即可运行,数据格式…...
java全栈day10--后端Web基础(基础知识)
引言:只要能通过浏览器访问的网站全是B/S架构,其中最常用的服务器就是Tomcat 在浏览器与服务器交互的时候采用的协议是HTTP协议 一、Tomcat服务器 1.1介绍 官网地址:Apache Tomcat - Welcome! 1.2基本使用(网上有安装教程,建议…...
使用爬虫时,如何确保数据的准确性?
在数字化时代,数据的准确性对于决策和分析至关重要。本文将探讨如何在使用Python爬虫时确保数据的准确性,并提供代码示例。 1. 数据清洗 数据清洗是确保数据准确性的首要步骤。在爬取数据后,需要对数据进行清洗,去除重复、无效和…...
Burp入门(4)-扫描功能介绍
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:burp功能介绍(1)_哔哩哔哩_bilibili 本文介绍burp的主动扫描和被动扫描功能。 一、主动扫描 工作原理: 主动…...
Tourtally:颠覆传统的AI智能旅行规划革命
# Tourtally:颠覆传统的AI智能旅行规划革命 在快速变化的旅行科技世界里,一个划时代的平台正在重新定义我们探索世界的方式。让我们一起认识 Tourtally,这个由人工智能驱动的旅行规划助手,正在彻底改变旅行体验。 ## 旅行规划的…...
chrome允许http网站打开摄像头和麦克风
第一步 chrome://flags/#unsafely-treat-insecure-origin-as-secure 第二步 填入网址,点击启用 第三步 重启 Chrome:设置完成后,点击页面底部的 “Relaunch” 按钮,重新启动 Chrome 浏览器,使更改生效。...
视觉经典神经网络与复现:深入解析与实践指南
目录 引言 经典视觉神经网络模型详解 1. LeNet-5:卷积神经网络的先驱 LeNet-5的关键特点: 2. AlexNet:深度学习的突破 AlexNet的关键特点: 3. VGGNet:深度与简洁的平衡 VGGNet的关键特点: 4. ResNe…...
ByConity ELT 测试体验
在实际业务中,用户会基于不同的产品分别构建实时数仓和离线数仓。其中,实时数仓强调数据能够快速入库,且在入库的第一时间就可以进行分析,低时延的返回分析结果。而离线数仓强调复杂任务能够稳定的执行完,需要更好的内…...
对象键值对内容映射
对象映射: 数据字段的英文名映射为更易理解的中文标签进行展示。即数据字段英文名 -> 中文描述。 作用: 提高代码的可读性。支持数据字段与展示内容的解耦,方便修改展示语言或样式,而无需改动数据源。 映射特点:…...
《生成式 AI》课程 第7講:大型語言模型修練史 — 第二階段: 名師指點,發揮潛力 (兼談對 ChatGPT 做逆向工程與 LLaMA 時代的開始)
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Springhttps://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php 摘要 这一系列的作业是为 2024 年春季的《生成式 AI》课程设计的,共包含十个作业。…...
学习C#中的反射
在C#编程中,反射(Reflection)是一项强大且灵活的技术,它允许程序在运行时动态地获取类型信息、创建对象实例、调用方法、访问字段和属性等。这种机制极大地增强了程序的动态性和可扩展性,使得开发者能够在编译时未知的…...
学习使用jquery实现在指定div前面增加内容
学习使用jquery实现在指定div前面增加内容 设计思路代码示例 设计思路 选择要添加内容的指定元素: 使用jQuery选择器来选择你希望在其前添加内容的元素。例如,如果你有一个 元素,其ID为qipa250,你可以使用$(‘#qipa250’)来选择…...
react项目初始化配置步骤
1.npx create-react-app 项目名称 vue项目同理 2.去编辑器市场安装所需插件,例如ESlint以及Prettier-Code formatter formatiing-toggle 3.在项目中安装 ESLint 和 Prettier 及相关插件: 3.1: npm install --save-dev eslint prettier 3.2…...
vue使用百度富文本编辑器
1、安装 npm add vue-ueditor-wrap 或者 pnpm add vue-ueditor-wrap 进行安装 2、下载UEditor 官网:ueditor:rich text 富文本编辑器 - GitCode 整理好的:vue-ueditor: 百度编辑器JSP版 因为官方的我没用来,所以我自己找的另外的包 …...
异常处理(6)自定义异常
异常处理(6)自定义异常类 1、自定义异常要求: (1)要继承一个异常类型 自定义一个编译时异常类型:自定义类继承java.lang.Exception。 自定义一个运行时异常类型:自定义类继承java.lang.Runtim…...
微软正在测试 Windows 11 对第三方密钥的支持
微软目前正在测试 WebAuthn API 更新,该更新增加了对使用第三方密钥提供商进行 Windows 11 无密码身份验证的支持。 密钥使用生物特征认证,例如指纹和面部识别,提供比传统密码更安全、更方便的替代方案,从而显著降低数据泄露风险…...
时间的礼物:如何珍视每一刻
《时间的礼物:如何珍视每一刻》 夫时间者,宇宙之精髓,生命之经纬,悄无声息而流转不息,如织锦之细线,串联古今,贯穿万物。 人生短暂,犹如白驹过隙,倏忽而逝,…...
初级 Python 数据脱敏技术及应用
文章目录 引言:为什么需要数据脱敏?常见的数据脱敏技术字符替换加密脱敏数据伪造组合策略 数据脱敏的合规性和伦理脱敏方案选择脱敏操作的性能优化结论 引言:为什么需要数据脱敏? 随着数据隐私问题越来越受到重视,数据…...
1063 Set Similarity (25)
Given two sets of integers, the similarity of the sets is defined to be Nc/Nt100%, where Nc is the number of distinct common numbers shared by the two sets, and Nt is the total number of distinct numbers in the two sets. Your job is to calculate th…...
Web登录页面设计
记录第一个前端界面,暑假期间写的,用了Lottie动画和canvas标签做动画,登录和注册也连接了数据库。 图片是从网上找的,如有侵权私信我删除,谢谢啦~...
【大数据学习 | Spark】Spark on hive与 hive on Spark的区别
1. Spark on hive Spark on hive指的是使用Hive的元数据(Metastore)和SQL解析器(HiveQL)。这种方式下,spark可以读取和写入hive表,利用hive的元数据信息来进行表结构的定义和管理。 具体特点为: 1.1 元数据共享 sp…...
软件测试丨Pytest 第三方插件与 Hook 函数
Pytest不仅是一个用于编写简单和复杂测试的框架,还有大量的第三方插件以及灵活的Hook函数供我们使用,这些功能大大增强了其在软件测试中的应用。通过使用Pytest,测试开发变得简便、安全、高效,同时也能帮助我们更快地修复Bug&…...
Python学习35天
# 定义父类 class Computer: CPUNone MemoryNone diskNone def __init__(self,CPU,Memory,disk): self.disk disk self.Memory Memory self.CPU CPU def get_details(self): return f"CPU:{self.CPU}\tdisk:{self.disk}\t…...
IO基础(字符集与字符流)
在字节流中,文件中的中文显示的是乱码。 在计算机存储体系中,以字节为最小存储单位,一个英文占一字节。 字符集类型 ASCII字符集,又叫编码表,编码表中有128个数据,其中大小写字母、符号、数字等。GB2312…...
莱芜四中网站/有没有永久免费crm
无服务器软件架构已经吸引很多人关注,它为什么会让人们这么感兴趣呢?无服务器意味着什么呢?function-as-a-service 与无服务器有什么区别?AWS Lambda、IBM OpenWhisk、Azure Functions和谷歌Cloud Functions等服务的机制是什么?这一切会如何发展? 无服务器与Fa…...
jsp 数据库做网站/职业教育培训机构排名前十
windows服务中添加tomcat 安装tomcat服务dos 环境进入 tomcat bin 目录下 执行 service.bat install 在服务中找到新建的tomcat服务,启动服务即可。...
网站模版怎样使用/抖音seo优化排名
原文:SQL Server :理解DCM页我们已经讨论了各种不同的页,包括数据页、GAM与SGAM页、PFS页,还有IAM页。今天我们来看下差异变更页(Differential Change Map:DCM ),还有差异备份(diffe…...
5 还有网站的域/手机系统优化软件
软件开发的发展历程 软件是用计算机语言编写的。计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程。 HTML(Hyper Text Markup Language 超文本标识语言) 是一种用来制作超文本文档的简单标记语言。 用HTML编写的超文本文件称为HTML文件&a…...
动漫制作专业属于什么大类/厦门seo关键词
一、PythonunittestrequestsHTMLTestRunner 完整的接口自动化测试框架搭建_00——框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm,在pycharm中创建项目功能目录。如果不会的可以百度Google一下,该内容网上的讲解还是比较…...
做网站方案/安徽百度seo公司
在Linux服务器上跑深度学习的时候,想把打印到屏幕上的内容保存到文件里。print语句轻松搞定。格式如下! f open("/ddhome/bird_26/src/src/cub200/result.txt", a)print(Test: [{0}/{1}]\tTime {batch_time.val:.3f} ({batch_time.avg:.3f})\…...