细说一下模拟器多开防封

模拟器多(单)开是怎么被检测出来的?

1.模拟器环境

就是模拟器环境本身就会被检测出来,这些我之前已经写过了,查看即可 

游戏检测脚本运行和屏蔽截图的解决办法 - 多开鸭 - 模拟器多开首先说一下屏蔽截图的解决办法,不仅仅是某些游戏,好多app登录或者支付界面也无法截图,这样就对写脚本或运行脚本造成了不方便。 比如遇到这种界面,脚本如果有识图,就会造成应用闪退或者脚本卡死。经过一些a…https://www.duokaiya.com/333.html模拟器和云手机还有主板机或者真机怎么选择? - 多开鸭 - 模拟器多开先扫盲 什么是安卓模拟器? 模拟器就是一个电脑软件,虚拟出来一个安卓系统的,底层架构都是电脑的硬件,cpu是x86,移动端只有很早起码10年前的平板有一部分是x86,其他的全部都是arm/arm64了…https://www.duokaiya.com/349.html如果能用改机,或者一些牛人研究出来的针对型的技巧,过掉了,那你再往下看,如果因为限制模拟器挡住了你完全无法使用,那先考虑换云手机还是真机吧。

然后如果能在模拟器使用,不同厂商也可能存在两个不同点:一个是他完全不管你,另一个就是大厂喜欢用大数据风控,不会完全限制,也不会完全不管,会将你使用模拟器添加到你的用户画像里,再根据其他的因素,判断你是一个用模拟器的正常玩家,还是一个工作室(当然大厂也是可能存在误判的,但是数据越多,他越不会误判,有时候你觉得是误判,其实他就是想封你了呢)

2.IP(网络)

ip其实是多开必备的一个环节,对于不懂ip的,可以参考一下这篇文章,里面有讲:

单窗口ip使用教程 - 多开鸭 - 模拟器多开目前单窗口IP均需要实名才可以购买/续费 做违法项目不敢实名或者介意的就别挑战了 直接右上角 ST (非游戏类项目推荐使用 动态一键切换 安卓、电脑通用账号) ST官网 免费试用及注册地址: http…https://www.duokaiya.com/ip.html

通常情况下来说,在他们的后台,能看到的数据就是你的 账号、密码、设备信息、ip地址。所以如果是ip都是同一个,或者IP雷同,又同时出现在数据库,那肯定就完犊子了。

虽然说也有不查ip的情况,但是如果你已经在封了,或者你还不知道封不封,是肯定要用上单窗口ip的,等你做的稳如老狗的时候,可以去搞一批号,不换ip试一下,前期肯定是必须要上的。

ip质量的话,我也不知道怎么叫讲究不讲究了,因为ipv4,也就是通常见到的123.123.123.123这样4段格式的,早在2019年11月就已经分配完毕了,所以现在你能用到的或者说获取到的ip,就都是那些ip,不存在什么真正意义上的干净。只能说,有的ip用过的人多,有的ip用过的人少,因为ip他是由运营商来管理分配的。比如在某个山区分配到的ip地址,他就不会再给其他的地方拿去用了,只有这个地方的网络接入才能获取到,那如果这个地方没什么人上网,没什么人用,那他就想对来说干净。反之,如果是某个机房,比如各种云,腾讯云,阿里云,天翼云各种,像腾讯云以前100块钱一年的服务器可以开20个公网ip,大概就是19年就不能了,现在就是天翼云顶上来,这些云服务器的ip,一个是因为便宜,然后就那么几个段,大家都在用,相对来说,就肯定没那么干净。

ip干不干净,也是有两个方面决定。小厂的规则,一般就是有个库,这个库可能呢还是几个app共享的,比如这个ip注册了账号,入了数据库,下次,你再用这个ip注册,那就相当于是用过了,每个ip根据不同厂商,肯定有不同的容差值,比如之前这个ip别人拿着注册了9个号,容差值是10个,你又拿这个ip注册了5个。那可能就会出现 1个没封,4个封了,还有就是黑名单数据库也可能是共享的,比如某个ip频繁注册,或者注册出来的账号出现了违规,那这个ip可能就会被列为高风险。大厂通常还是利用大数据做分析,不会封死,小厂就不好说了,可能就直接给你拉黑,不解封,后续你用这个ip必死。有的甚至封ip段。

如果你想买到压根没什么人用过的ip,那是不可能的,因为公网ip,基本上都是机房出的,要么就是几大云服务器厂商,要么就是各种地区的机房,常见的有:湖北,江苏宿迁,内蒙,广州,四川成都等等等等,小服务器厂商的公网ip基本上都是那几大服务器机房出来的,家庭ip基本上买不到。想自己搭建,除非你找个没什么人,也没人做机房的地方,去拉宽带搞ip,这成本就太大了。

同时因为ip地址耗尽的缘故,大部分厂商也不会无脑一直封着某些ip,因为家庭ip现在几乎都是动态的,过几天就会变动,一直封着也会造成其他用户的不便,其中的细节就自己再琢磨琢磨,我的建议就是用我们网站推荐的st或者无忧试试,我可以拿提成,而且从续费也能看出来,用着应该还是有用的(ノ ̄▽ ̄)

3.行为检测

行为检测其实很简单,举几个例子,假设在你设备和ip,那些信息都完全真实的情况下。

比如你在全国找了100个人给你干活,这100个人的账号,设备,网络,都是分开的,也都是他们自己的,完全真实,但是,如果你让他们都做同样的事情,比如游戏打了材料,都全部转给你,或者其他雷同的行为,那就会被检测到,而且中间不管你怎么变动,只要最终指向了你,有了判断你的依据,那你就得挨。

然后就是多开,完全同步的操作,也容易被检测,又要说一下了,我之前做鹅厂某SLG游戏的时候,在单窗口ip已经做好的运行了很久的情况下,因为一次同步进区,键鼠同步器+模拟器同步器,300窗口一起进区就被一次性嘎掉,损失惨重。目前好像还没有延迟同步这种工具,像我自己做的话,如果是纯手动,我都是挨个点击,然后加上单窗口ip网络的延迟,就自然的错开掉了,如果是跑脚本,像脚本基本上都是 模拟器启动>脚本自启动>脚本启动游戏>登录游戏>进行游戏,这过程都是自动的时候,我基本上就是设置模拟器启动间隔30秒以上,让他自然的错开,不要同时去启动,或者同时登录,这样子不会让电脑卡住(有的同步启动很吃资源,导致电脑那时候很卡),然后也能让这些操作错开。

还有就是脚本,也不一定是完全安全的,在不检测的情况下,利用脚本异步操作,肯定是好于手动同步操作的,但是如果要检测脚本,那就是另一种结果了。参考资料:[b2_insert_post id="333"]

脚本一般是检测root、无障碍或者截图,或者直接检测的脚本这个应用、进程。这里其实属于环境检测,但是在行为检测来说,也有一些需要注意的。

点击,大多数脚本,都是写的单点坐标且大多时候是固定的一个坐标,直接点击。然而在正常手机上,一个手指头按下去,哪怕是同一个按钮,每次触发的点的位置不一样,触发点的数量也不同,很多游戏可能会增加这种检测引擎,检测你是真人手指头按下的,还是脚本按下的。所以某些游戏脚本,会在开发的时候加入多点触控点击,随机延迟,坐标随机偏移等,能一定程度上降低这个风险。

逻辑和动作行为,无论是脚本,还是人工,在你批量做的时候,为了节约时间节约脑子,任务路径,顺序,一般都是固定的,这样也可能会跟正常玩家的行为出现差异。还有就是每天上下号,在线的时间,可能固定,或者多账号出现雷同。

总之吧,想检测出来你是不是正常的玩家,有很多种办法,甚至如果所有手段都用上,是完全没法绕过的,只是现在大多数还不会做到这样子,有些也需要工作室和游戏共存。

<think>嗯,用户现在问的是关于查表细分算法的具体细节。之前他们已经询问过用STM32F4实现正余弦编码器细分是否可行,我之前已经详细介绍了整个流程,包括查表法作为其中一种细分方法。现在他们可能想深入了解查表法的实现原理、步骤以及优缺点,或者在实际应用中需要注意的地方。 首先,我需要回顾一下查表法在编码器细分中的作用。查表法主要是通过预先存储的正弦和余弦值对应的角度信息,根据实时采样的Sin和Cos值查找最接近的角度值,从而减少实时计算的复杂度,提高处理速度。这种方法适用于资源有限但需要快速响应的场合,尤其是在没有浮点运算单元的低端微控制器上,不过STM32F4有FPU,但查表法仍然可以节省计算时间,尤其是在高细分倍数的情况下。 接下来,我需要考虑用户的潜在需求。他们可能是在实际项目中遇到了处理速度或资源限制的问题,想要优化算法,或者是在学习不同的细分方法,想比较各种方法的优劣。查表法相对于反正切法或CORDIC算法来说,可能在速度和资源消耗上有优势,但需要权衡存储空间和精度。 用户可能想知道查表法的具体实现步骤,比如如何构建查找表、如何优化存储、如何处理插值提高精度,以及如何解决表的存储空间和精度之间的矛盾。此外,他们可能关心在STM32F4上如何高效地实现查表法,比如使用内存管理、DMA传输或者利用硬件特性加速查找过程。 我还需要分析查表法的优缺点。优点是速度快,适合实时处理;缺点是需要较大的存储空间,尤其是高精度细分时,表格会变得很大,可能占用过内存。此外,查表法的精度受限于表格的分辨率,可能需要结合插值方法来提高精度,这会增加一定的计算量。 用户可能没有说出来的深层需求是,他们可能在寻找一种在有限资源下实现高精度细分的方法,或者希望了解如何平衡处理速度和存储空间。他们可能对如何生成查找表、如何优化数据结构以减少内存占用感兴趣,或者想了解查表法在实际应用中的效果,比如在高速或高精度场景下的表现。 另外,结合之前的回答,用户已经了解STM32F4的ADC配置、信号调理和数字滤波等步骤,现在需要更专注于查表法的实现细节。可能需要举例说明如何生成查找表,如何通过索引快速查找,以及如何处理象限问题,或者如何结合插值来提升细分倍数。 还需要考虑查表法在动态性能方面的表现,比如当编码器高速旋转时,查表法是否能及时响应,是否存在延迟,以及如何通过优化数据结构或算法来减少延迟。此外,可能需要讨论查表法与其他方法(如项式拟合或CORDIC)的比较,帮助用户做出选择。 最后,应该提供一些实际的应用建议,比如在什么情况下选择查表法,如何根据具体需求调整表的大小和结构,以及如何验证查表法的精度和效率,确保用户能够将理论应用到实际项目中。</think>### **查表细分算法详解** 正余弦编码器的查表细分算法(Look-Up Table, LUT)是一种通过预存角度映射关系,快速计算编码器位置的高效方法。其核心思想是 **将连续的 Sin/Cos 信号离散化,直接通过查表跳过复杂计算**,适合对实时性要求高但内存资源充足的场景。 --- ### **1. 查表法的核心原理** 正余弦编码器输出两路正交的正弦(Sin)和余弦(Cos)信号,理想情况下满足: \[ \begin{cases} Sin = A \sin(\theta) \\ Cos = A \cos(\theta) \end{cases} \] 其中,\( A \) 为信号幅值,\( \theta \) 为编码器的机械角度。 查表法通过 **预先生成角度与 Sin/Cos 值的对应关系表**,根据实时采集的 \( Sin \) 和 \( Cos \) 值,在表中快速匹配最接近的角度值,实现位置细分。 --- ### **2. 实现步骤** #### **(1) 构建查找表** - **离散化角度**: 将编码器的机械角度 \( \theta \)(通常为 0~360° 或 0~\(2\pi\) 弧度)按细分倍数 \( N \) 离散化,生成 \( N \) 个等分点。 例如,若目标为 **1024 细分**,则角度分辨率为 \( \frac{2\pi}{1024} \) 弧度,生成 1024 个角度值 \( \theta_0, \theta_1, \dots, \theta_{1023} \)。 - **预计算 Sin/Cos 值**: 对每个角度 \( \theta_i \),计算标准化的 \( \sin(\theta_i) \) 和 \( \cos(\theta_i) \),并将其量化为整数(如 16 位有符号数),以节省存储空间。 **示例代码**: ```c #define LUT_SIZE 1024 int16_t sin_lut[LUT_SIZE], cos_lut[LUT_SIZE]; for (int i = 0; i < LUT_SIZE; i++) { float theta = 2 * M_PI * i / LUT_SIZE; sin_lut[i] = (int16_t)(32767 * sin(theta)); // Q15 格式(-32768~32767) cos_lut[i] = (int16_t)(32767 * cos(theta)); } ``` #### **(2) 实时信号匹配** - **信号标准化**: 将 ADC 采集的原始 Sin/Cos 信号(例如 12 位 ADC 的 0~4095)转换为与查找表一致的标准化范围(如 -1.0~1.0 或 Q15 格式)。 **示例**: ```c int16_t sin_adc = (adc_raw_sin - 2048) << 4; // 12位转16位(假设信号中心为2048) int16_t cos_adc = (adc_raw_cos - 2048) << 4; ``` - **查找最近点**: 通过 **最小二乘法** 或 **向量内积最大化** 找到预存表中与当前 \( (Sin, Cos) \) 最接近的角度索引。 **优化方法**: - **象限快速定位**:利用 Sin/Cos 的符号确定角度所在象限,缩小搜索范围。 - **二分查找**:对有序表进行二分搜索,时间复杂度从 \( O(N) \) 降至 \( O(\log N) \)。 #### **(3) 插值提升精度** 直接查表的精度受限于表的大小。为提高细分倍数,可在相邻表项间进行插值: - **线性插值**: 根据当前信号与两个相邻表项的欧氏距离,计算加权角度值。 \[ \theta = \theta_i + \frac{d_{i}}{d_{i} + d_{i+1}}} \cdot \frac{2\pi}{N} \] 其中 \( d_i \) 为当前信号与第 \( i \) 个表项的距离。 - **三次样条插值**: 利用更相邻点拟合曲线,精度更高但计算量增大。 --- ### **3. 关键优化技术** #### **(1) 内存压缩** - **对称性压缩**: 利用正弦函数的对称性(如 \( \sin(\theta) = \sin(\pi - \theta) \)),仅存储 0~90° 的表项,运行时通过象限映射还原完整角度。 **示例**: 存储 256 个 0~90° 的表项,即可覆盖 1024 细分(内存减少 75%)。 - **差分存储**: 存储相邻角度的差值而非绝对值,通过累加恢复角度(需配合 Huffman 编码等压缩算法)。 #### **(2) 快速匹配算法** - **向量内积最大化**: 将 Sin/Cos 信号视为二维向量,查找表中与其夹角最小的表项。由于内积 \( \mathbf{V_{adc}} \cdot \mathbf{V_{lut}} = \sin(\theta_{adc})\sin(\theta_{lut}) + \cos(\theta_{adc})\cos(\theta_{lut}) \),最大内积对应最小角度差。 **代码优化**: ```c int max_dot = -32768*32768; int best_index = 0; for (int i = 0; i < LUT_SIZE; i++) { int dot = sin_adc * sin_lut[i] + cos_adc * cos_lut[i]; if (dot > max_dot) { max_dot = dot; best_index = i; } } ``` #### **(3) 硬件加速** - **使用 DMA 加载表项**: 将查找表存放于 Flash 或外部 RAM,通过 DMA 批量加载到 SRAM,减少 CPU 访问延迟。 - **SIMD 指令并行计算**: 利用 STM32F4 的 SIMD 指令(如 CMSIS-DSP 库的 `arm_dot_prod_q15`)加速内积计算。 --- ### **4. 优缺点分析** | **优点** | **缺点** | |-----| | 1. **速度快**:无复杂实时计算。 | 1. **内存占用大**:高细分需大表。 | | 2. **确定性高**:无算法收敛时间。 | 2. **精度受限**:受表大小限制。 | | 3. **适合低算力平台**:如无 FPU 的 MCU。 | 3. **动态性能差**:高速时需更高采样率。 | --- ### **5. 实际应用建议** - **细分倍数与内存的权衡**: - 若细分 1024 倍,使用 16 位角度表需 2KB RAM;若压缩为 8 位索引 + 插值,可降至 512B。 - **动态更新表项**: 对非线性误差较大的编码器,可在运行时通过校准动态更新表项。 - **混合策略**: 结合查表法与 CORDIC 算法——粗调用查表,细调用 CORDIC 迭代,平衡速度与精度。 --- ### **示例代码(STM32F4 查表 + 线性插值)** ```c // 预生成 1024 点的 Sin/Cos 表(Q15 格式) const int16_t sin_lut[1024] = { ... }; const int16_t cos_lut[1024] = { ... }; // 查表函数(返回细分后的角度,单位:0.01度) uint32_t LUT_Encoder_GetAngle(int16_t sin_adc, int16_t cos_adc) { int max_dot = -32768; int best_idx = 0; // 快速象限定位(减少搜索范围) uint8_t quadrant = 0; if (sin_adc >= 0 && cos_adc >= 0) quadrant = 0; // 第一象限 else if (sin_adc >= 0 && cos_adc < 0) quadrant = 1; // 第二象限 else if (sin_adc < 0 && cos_adc < 0) quadrant = 2; // 第三象限 else quadrant = 3; // 第四象限 // 仅搜索当前象限的 256 个点 int start = quadrant * 256; int end = start + 256; for (int i = start; i < end; i++) { int dot = (sin_adc * sin_lut[i] + cos_adc * cos_lut[i]) >> 15; if (dot > max_dot) { max_dot = dot; best_idx = i; } } // 线性插值(假设 best_idx 和 best_idx+1 相邻) int dot_next = (sin_adc * sin_lut[best_idx+1] + cos_adc * cos_lut[best_idx+1]) >> 15; float weight = (float)(max_dot - dot_next) / (max_dot + dot_next); // 计算细分后的角度(0~36000,单位0.01度) float angle = (best_idx + weight) * (36000.0f / 1024); return (uint32_t)angle; } ``` --- ### **6. 性能对比** | **方法** | 计算时间(STM32F4 @168MHz) | 内存占用(1024细分) | 精度(LSB) | |--------------|----------------------|-------------| | 查表法 | 5~20 μs | 2~4 KB | ±2 | | 软件 atan2 | 50~100 μs | <100 B | ±1 | | CORDIC(5次迭代)| 10~30 μs | <100 B | ±1 | --- ### **总结** 查表细分算法以 **空间换时间**,在实时性要求高、细分倍数适中的场景(如 1000× 以下)表现优异。对于更高精度需求(如 16 位细分),需结合插值算法和内存优化技术。在 STM32F4 上,通过合理利用硬件资源(DMA、SIMD)和压缩策略,可实现高效可靠的编码器细分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多开鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值