WWW.YOUINFO.SITE
标签聚合 Los

/tag/Los

LinuxDo 最新话题 · 2026-06-11 17:44:32+08:00 · tech

首先,感谢文章内提到名字的公益站的佬们。 在此之前我是用Claude CLI的,然后有一天看到 RawChat公益 出现了,然后安装了Codex,然后蹬起来了,但是用量不算大,是能通过Codex++正常配置使用的,写了个项目,还没写完,然而今天,突然发现 RawChat公益 从原来的100刀变成了60刀,而且似乎不怎么能够连上,我就想着再在Codex++里配置点其他的公益站,争取今天把项目搞完,我就加上了 CHY公益站 及 HotaruAPI 以及 君の的公益 ,在Codex++里,都能够正常拉去各公益站提供的模型,但是当“切换供应商”以后,想要使用,就出现了 stream disconnected before completion: stream closed before response.completed ,这难道是我的使用方法不对么? ------- 来自天才程序员的困惑 9 个帖子 - 8 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-11 01:32:14+08:00 · tech

Audio priscos illos viros probos atque sapientes, die Iovis — quartus is hebdomadis dies habetur — pecuniam suam in plebem erogasse, ne quis egestate premeretur. Pullum aureum alienis pueris donasse, quod et suus puer hoc cibo delectaretur; aquam nigram dulcem aliis senibus praebuisse, quod suus quoque senex eam libenter hauriret. O priscam virtutem! O sapientiam maiorum! Si quidem tales sint viri, ut quisque quinquaginta sestertios alteri det, omnes carnem vescentur, civitas concordia florebit. O vere sapientes! 27 个帖子 - 27 位参与者 阅读完整话题

cnBeta全文版 · 2026-06-09 20:35:11+08:00 · tech

苹果在最新发布的 iOS 27 和 macOS 27 “Golden Gate” 中,对系统默认壁纸采取了全新的统一设计方案,这是苹果首次在多个平台上采用同一组主题艺术作品,仅通过不同变体进行区分。 以往,iOS、macOS 等平台通常各自配备风格独立的默认壁纸,而此次它们共同采用了一款名为 “Celosia” 的设计。 这组壁纸画面由大面积的弧形曲面叠加构成,配合柔和阴影,灵感来源于多层花瓣或折叠纸张的层叠效果,同时弧线组合还隐约勾勒出数字 “27”,将视觉主题与系统版本直接关联起来。 在浅色模式下,画面以温暖的沙金色过渡到柔和的紫色;深色模式中则以深靛蓝色为主,并辅以银蓝色边缘,整体呈现更为情绪化和沉稳的观感。 在移动设备方面,iOS 27 与 iPadOS 27 中的 Celosia 壁纸提供三个系列:标准版、动态版以及色彩版,每一系列又分别针对主屏幕和锁定屏幕进行了浅色与深色模式的独立优化。 macOS 27 “Golden Gate” 则内置了动态壁纸版本,用户只能在系统内部调用这些壁纸,以实现随时间或界面变化而调整的视觉效果。 值得一提的是,本次统一设计还扩展到了车载平台:在首个开发者测试版中,CarPlay 提供了多达 14 款 Celosia 壁纸选项,同样覆盖浅色与深色模式。 在配色上,这些车载壁纸包含灰色、紫色、红色、青色、蓝色、棕色、深蓝色和绿色等多种变体,并提供一款浅色与深色版本兼备的 “Hero” 主题,进一步强化统一视觉语言在苹果生态中的贯通感与识别度。 查看评论

LinuxDo 最新话题 · 2026-06-09 12:35:41+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 这个工具是我为了方便自己追番 + 看弹幕做的。用一句话总结的话,大概就是 AutoBangumi / Kazumi / MoonTV / DandanPlay / Jellyfin 这些优秀工具的功能大杂烩,各种功能都沾一点。你可以用它实现多种追番、追剧的路径,比如: 接入在线源 → 正则 / jsonpath / xpath 解析 → 匹配弹幕 → 网页直接播放 或者: RSS 订阅 → 定时提交到下载器 → 转移入库后 TMDB 刮削 → 匹配弹幕 → 网页播放本地视频(可通过 FFmpeg 转码) 软件本体是一个空壳,核心能力都通过可视化工作流实现,可定制化程度超高(大概是同类软件中最高的),从资源索引、下载刮削到弹幕服务,所有节点都可以自定义,你完全可以用它打造最适合自己的追番工作流。懒得自己实现的话也没关系,可以一键导入现成的 工作流模板 ,简单配置下 Token 就能使用。 部分界面截图 工作流列表 工作流编辑 资源搜索 媒体详情 弹幕设置 项目地址 github.com GitHub - kaloscope/kaloscope: A workflow-powered local media manager A workflow-powered local media manager 欢迎使用和反馈,觉得这个项目有用的话希望能点个 Star 支持一下! 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-07 19:35:29+08:00 · tech

问题描述:codex桌面端+ccswitch,经常遇到这个问题,换了中转站、公益站 都会遇到这个问题,ccswitch里面日志输入0输出0,并且baseurl是加了v1的 已经尝试方法: 1、在 ~\.codex\.env里面加入http_proxy 2、更换代理节点 3、按照 codex:报错Stream disconnected before completion: stream closed before response.completed - 开发调优 - LINUX DO 检查了环境变量 电脑里并没有旧的环境变量 请教下各位又遇到过类似问题并且解决的吗 还有什么方法可以尝试? 5 个帖子 - 5 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-06 07:56:51+08:00 · tech

继2026年5月,SpaceX将Colossus1数据中心的全部算力(约22万张 NVIDIA GPU,电力容量超过300MW)出租给Anthropic后,SpaceX刚刚宣布,根据一份新的文件,他们与 Google签订了一份每月 9.2 亿美元的协议,以提供计算能力。 “2026年6月5日,我们与 Google 签订了一项云服务协议,涉及计算能力的访问权限。客户同意从 2026 年 10 月起至 2029 年 6 月止,每月向我们支付 9.2 亿美元,产能将在 9 月前逐步提升,费用将相应降低。提供的计算能力包括大约 110,000 个 NVIDIA GPU、CPU、内存以及其他相关组件。 2026年12月31日之后,该协议可由任一方提前 90 天通知终止。客户将保留其内容、AI 模型以及相关数据的所有权和知识产权。” 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-04 01:17:26+08:00 · tech

究竟是何等神圣还能屹立不倒 codex公益站首字速度优化完毕,性能已压榨到极致 真的有必要为佬发一个话题~ 大概算是第一次好用的,稳定的,快速的 真正的 把一个本来按理来说限定用在电脑上的codex的AI服务接到我自己的chatbox 手机党就是玩这个 虽然过去的失败可能有相当一部分是我自己还不太会配置 但总之是令人印象深刻的第一次~ 感谢神级分享~ 这次成功的配置是: 在佬的baseURL基础上 选择response接口 Chatbox会自动添加v1/responses 搭配 改善网络兼容性 选项可正常获取模型 可正常聊天 看到朋友分享的这样的案例,真的悲痛 也曾想,我这个从未订阅白嫖了十几个team(包括vv佬万人车)的老号 有哪一天会像克劳德一样从未使用(如果你觉得三年对话不超过50次算是使用的话 Gpt多一点点,但也只是聊天 ) 却突然暴毙 再也回不来 也一直想重新与gpt建交,但还只是想 最后感谢 @RawChat 佬公益 虽然始终坚持全网公益导致我从未获得良好的体验(过去 事实上没怎么用上之后就再也没在意了) 但依旧是心中Pandora之下第二gpt公益~ 6 个帖子 - 3 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-01 16:44:22+08:00 · tech

0x0 样本: play.google.com Lost Sword - Google Play 上的应用 波涛胸涌&华丽冒险传说!好胸的冒... Free 正主: largosoft.co.kr 라르고소프트|LARGOSOFT 라르고소프트는 게임 보안 솔루션 개발에 특화된 기업으로, 게임 환경에서 발생하는 다양한 보안 위협을 효과적으로 방어하는 기술을 제공합니다. 非常非常简单的反作弊,很适合新手入门,完全没任何难度 0x1 整体流程 base.apk 里面的 Dalvik字节码 拉起 libATG_D.so libATG_D.so 解密 e8Hk2vi4CH 为正常的 Dalvik字节码,然后注入进去,后续执行的是注入进去的 Dalvik字节码 解密后的 e8Hk2vi4CH Dalvik字节码 拉起正常的Unity进程,同时拉起 libATG_L.so libATG_L.so 根据架构解密拉起 ATG_E 来进行环境检测,日志上报等等 0x2 libATG_D.so com/bishopsoft/Presto/SDK/Loader.java 载入 libATG_D.so public class Loader extends Application // class@00018b from classes.dex { private String mAppName; private Application mDelegate; private boolean mIsBindReal; private static ByteBuffer[] Buffers; private static Context mContext; static { System.loadLibrary("ATG_D"); } System.loadLibrary 会调用 libATG_D.so 的 JNI_OnLoad ,随后调用 JNI_OnLoad.54 JNI_OnLoad.54 开头有些垃圾代码狙击IDA的反编译 缓存运行环境信息 找到 Java 类 注册两个 native 方法 Loader.InitBuffer signature: (Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/content/res/AssetManager;)Ljava/lang/Object; native: 0x79004 -> real body 0x75660 Loader.native_InitLib signature: (Landroid/content/Context;Landroid/content/res/AssetManager;Z)I native: 0x77594 -> real body 0x740f8 JNI_OnLoad 返回到 Java,调用 InitBuffer 解密 Dalvik字节码 public native Object InitBuffer(Context p0,String p1,String p2,AssetManager p3); public void attachBaseContext(Context paramContext){ try{ super.attachBaseContext(paramContext); AssetManager assets = paramContext.getAssets(); this.native_InitLib(paramContext, assets, false); Loader.Buffers = this.InitBuffer(paramContext, paramContext.getApplicationInfo().dataDir, paramContext.getApplicationInfo().nativeLibraryDir, assets); if (Loader.Buffers != null) { this.loadDex(paramContext); } }catch(java.lang.NoSuchFieldException e1){ e1.printStackTrace(); }catch(java.lang.IllegalAccessException e1){ e1.printStackTrace(); }catch(java.lang.NoSuchMethodException e1){ e1.printStackTrace(); }catch(java.lang.reflect.InvocationTargetException e1){ e1.printStackTrace(); } return; } 开头依旧狙击IDA反编译 取 e8Hk2vi4CH 的路径 派生密钥 用派生出来的密钥跑AES解密 e8Hk2vi4CH 扫描 embedded Dalvik字节码 生成 + 返回 解密后的buffer 0x3 libATG_L.so java/stage2/code/com/bishopsoft/Presto/SDK/Presto.java 载入 libATG_L.so public class Presto extends Application // class@0000ff from classes2.dex { private static String EGdataPath; public static String SDK_version = "2025091801"; static CallBackReLogin callback; private static int checked_emul = 0; private static Context mContext; public static String packageList = ""; private static Presto presto; public static String rootPath = ""; private static String sData = ""; static boolean scanning = true; static { Presto.presto = new Presto(); System.loadLibrary("ATG_L"); } 开头依旧狙击IDA反编译 依旧注册函数查询CPU架构 fork/ptrace 保护+反调试 JNI_OnLoad 返回到 Java 开始 init,最终调用 WorkThread public void Presto_Init(Context context){ Presto.mContext = context; Presto.scanning = true; if (Presto.EGdataPath == null) { Presto.EGdataPath = Utils.getCPUABI(Presto.mContext); } Presto.rootPath = Utils.execByRuntime("pm path "+Presto.mContext.getPackageName()); if (Presto.rootPath != null && !Presto.rootPath.isEmpty()) { Presto.rootPath = Presto.rootPath.replace("package:", ""); } Presto.packageList = Utils.execByRuntime("pm list package"); if (Presto.packageList != null && !Presto.packageList.isEmpty()) { Presto.packageList = Presto.packageList.replaceAll("\npackage:", ","); } Log.i("Presto", "SDK_Ver = "+Presto.SDK_version); Integer[] integerArray = new Integer[0]; new ThreadScan(Presto.mContext, 0).execute(integerArray); return; } public class ThreadScan extends AsyncTask // class@000102 from classes2.dex { private Context mContext; private int option; private String result; public static String ResultScan = ""; static { } public void ThreadScan(Context context,int _option){ super(); this.mContext = context; this.option = _option; } protected Object doInBackground(Object[] p0){ return this.doInBackground(p0); } protected String doInBackground(Integer[] arg0){ int recovery = 1; this.result = Presto.WorkThread(this.mContext, recovery); return this.result; } } 根据CPU架构选择模块 CpuFamily = android_getCpuFamily(); if ( CpuFamily == ANDROID_CPU_FAMILY_X86_64 ) { strcpy(&filename[strlen(filename)], "/ATG_E_x86_64.sec"); } else { if ( CpuFamily == ANDROID_CPU_FAMILY_ARM64 ) { v25 = strlen(filename); v26 = "/ATG_E_x64.sec"; } else { if ( CpuFamily != ANDROID_CPU_FAMILY_X86 ) { strcpy(&filename[strlen(filename)], "/ATG_E.sec"); goto LABEL_64; } v25 = strlen(filename); v26 = "/ATG_E_x86.sec"; } v27 = &filename[v25]; v28 = *v26; v29 = *(v26 + 7); *v27 = v28; *(v27 + 7) = v29; } 解出临时 ._ATG_B.sec strcpy(file, g_dataPath); qmemcpy(v206, "FF8F2A6CDD9B3DB72CD301FB87035E34", sizeof(v206)); strcpy(szHex, "2CD301FB87035E34FF8F2A6CDD9B3DB7"); v30 = strlen(szHex); v31 = v30; if ( v30 >= 1 && (v30 & 0xF) == 0 && v30 >= 2 ) { v32 = v30 >> 1; v33 = operator new(v32); memset(v33, 0, v31 >> 1); v34 = 0; v35 = szHex; v36 = v33; while ( Hex2Char(v35, &s) ) { v37 = 0xFFFFFFFE - v34 - (~v34 | 0xFFFFFFFE); v35 += 2; v34 = (v37 ^ (v34 + 1)) + (v34 | 1) + 2 * (v37 & (v34 + 1)); *v36++ = s.erk[0]; if ( v34 >= v32 ) { v38 = operator new(v31 >> 1); memset(v38, 0, v31 >> 1); *name = WzrBpTHKGekFnEGBsJVCCbpW(char *,int)::iv_key; aes_set_key(&s, "e38d99fb4434d3d485794c6b34cd5d1fB3B4801D0A7AC103B2BC08C10BC017E6", 0x100); v39 = 0; do { v40 = &v33[v39]; aes_decrypt(&s, v40, &v38[v39]); v41 = 0; do { v42 = name[v41]; v43 = ((v41 + v39) ^ -(v41 | v39)) + (v41 | v39) + 2 * ((v41 + v39) & -(v41 | v39)); v44 = v38[v43]; v45 = v44 | v42; v46 = -(((v44 + v42) ^ -v45) + 2 * ((v44 + v42) & -v45)); v47 = 0xFFFFFFFE - v41 - (~v41 | 0xFFFFFFFE); v41 = (v47 ^ (v41 + 1)) + (v41 | 1) + 2 * (v47 & (v41 + 1)); v38[v43] = (v46 ^ v45) + 2 * (v46 & v45); } while ( v41 < 0x10 ); v39 = (v39 | 0x10) + ~v39 + (v39 | 1) + (v39 & 1) + ((0xFFFFFFEF - v39 - (~v39 | 0xFFFFFFEF)) ^ (v39 + 0x10)) + 2 * ((0xFFFFFFEF - v39 - (~v39 | 0xFFFFFFEF)) & (v39 + 0x10)); *name = *v40; } while ( v39 < v32 ); memset(&szHex[v32], 0, v31 - v32); memcpy(szHex, v38, v31 >> 1); memset(v33, 0, v31 >> 1); operator delete(v38); break; } } operator delete(v33); } strcat(file, szHex); v48 = fopen(filename, "rb"); v49 = fopen(file, "wb"); if ( v48 ) { v50 = v49; fseek(v48, 0xFFFFFFFFFFFFFFFCLL, 2); v51 = ftell(v48); fread(&ptr, 1u, 8u, v48); v52 = ptr; v53 = v51 - v52 + ((v52 - 1) | ~v51); v54 = ((v53 + 1) ^ (v52 - v51 + (v51 | -v52))) + 2 * (((v53 + 1) & (v52 - v51 + (v51 | -v52))) + (v53 ^ ~(v51 - ptr)) + 2 * ((v51 - ptr) & ~v53)); v55 = calloc(v54, 1u); v56 = calloc(v51, 1u); if ( v55 ) { v57 = v56; if ( v56 ) { fseek(v48, 0, 0); fread(v57, 1u, v51, v48); fseek(v48, v52, 0); fread(v55, 1u, v54, v48); fclose(v48); if ( v54 >= 1 ) { v58 = 0; for ( i = 0; i < v54; v58 = i ) { v60 = v55[v58]; v61 = v57[v58]; v62 = v61 | v60; v63 = -(((v61 + v60) ^ -v62) + 2 * ((v61 + v60) & -v62)); v64 = 0xFFFFFFFE - i - (~i | 0xFFFFFFFE); i = (v64 ^ (i + 1)) + (i | 1) + 2 * (v64 & (i + 1)); v55[v58] = (v63 ^ v62) + 2 * (v63 & v62); } } fwrite(v55, 1u, v54, v50); fclose(v50); free(v55); free(v57); } } } 完整性检查 v277 = 0; v276 = 0u; v275 = 0u; v274 = 0u; v273 = 0u; v272 = 0u; v271 = 0u; v270 = 0u; v269 = 0u; v268 = 0u; v267 = 0u; v266 = 0u; v265 = 0u; v264 = 0u; v263 = 0u; *v262 = 0u; *filename = 0u; memcpy(name, "B3B4801D0A7AC103B2BC08C10BC017E6", 0x104u); strcpy(file, g_dataPath); szHex[0x20] = 0; memset(v243, 0, sizeof(v243)); v242 = 0u; v241 = 0u; v240 = 0u; v239 = 0u; v238 = 0u; v237 = 0u; v236 = 0u; v235 = 0u; v234 = 0u; v233 = 0u; v232 = 0u; v231 = 0u; v230 = 0u; *szHex = v206[1]; *&szHex[0x10] = v206[0]; v65 = strlen(szHex); v66 = v65; v67 = v209; if ( v65 >= 1 && (v65 & 0xF) == 0 && v65 >= 2 ) { v68 = v65 >> 1; v69 = operator new(v68); memset(v69, 0, v66 >> 1); v70 = 0; v71 = szHex; v72 = v69; while ( Hex2Char(v71, &s) ) { v73 = 0xFFFFFFFE - v70 - (~v70 | 0xFFFFFFFE); v71 += 2; v70 = (v73 ^ (v70 + 1)) + (v70 | 1) + 2 * (v73 & (v70 + 1)); *v72++ = s.erk[0]; if ( v70 >= v68 ) { v74 = operator new(v66 >> 1); memset(v74, 0, v66 >> 1); ptr = WzrBpTHKGekFnEGBsJVCCbpW(char *,int)::iv_key; aes_set_key(&s, "e38d99fb4434d3d485794c6b34cd5d1fB3B4801D0A7AC103B2BC08C10BC017E6", 0x100); v75 = 0; do { v76 = &v69[v75]; aes_decrypt(&s, v76, &v74[v75]); v77 = 0; do { v78 = *(&ptr + v77); v79 = ((v77 + v75) ^ -(v77 | v75)) + (v77 | v75) + 2 * ((v77 + v75) & -(v77 | v75)); v80 = v74[v79]; v81 = v80 | v78; v82 = -(((v80 + v78) ^ -v81) + 2 * ((v80 + v78) & -v81)); v83 = 0xFFFFFFFE - v77 - (~v77 | 0xFFFFFFFE); v77 = (v83 ^ (v77 + 1)) + (v77 | 1) + 2 * (v83 & (v77 + 1)); v74[v79] = (v82 ^ v81) + 2 * (v82 & v81); } while ( v77 < 0x10 ); v75 = (v75 | 0x10) + ~v75 + (v75 | 1) + (v75 & 1) + ((0xFFFFFFEF - v75 - (~v75 | 0xFFFFFFEF)) ^ (v75 + 0x10)) + 2 * ((0xFFFFFFEF - v75 - (~v75 | 0xFFFFFFEF)) & (v75 + 0x10)); ptr = *v76; } while ( v75 < v68 ); memset(&szHex[v68], 0, v66 - v68); memcpy(szHex, v74, v66 >> 1); memset(v69, 0, v66 >> 1); operator delete(v74); break; } } operator delete(v69); } strcat(file, szHex); v84 = dlopen(file, 1); v85 = obja; if ( v84 ) { v86 = v84; v87 = strlen(name); v88 = v87; if ( v87 >= 1 && (v87 & 0xF) == 0 && v87 >= 2 ) { v89 = v87 >> 1; v90 = operator new(v89); memset(v90, 0, v88 >> 1); v91 = 0; v92 = name; v93 = v90; while ( Hex2Char(v92, &s) ) { v94 = 0xFFFFFFFE - v91 - (~v91 | 0xFFFFFFFE); v92 += 2; v91 = (v94 ^ (v91 + 1)) + (v91 | 1) + 2 * (v94 & (v91 + 1)); *v93++ = s.erk[0]; if ( v91 >= v89 ) { v95 = operator new(v88 >> 1); memset(v95, 0, v88 >> 1); ptr = WzrBpTHKGekFnEGBsJVCCbpW(char *,int)::iv_key; aes_set_key(&s, "e38d99fb4434d3d485794c6b34cd5d1fB3B4801D0A7AC103B2BC08C10BC017E6", 0x100); v96 = 0; do { v97 = &v90[v96]; aes_decrypt(&s, v97, &v95[v96]); v98 = 0; do { v99 = *(&ptr + v98); v100 = ((v98 + v96) ^ -(v98 | v96)) + (v98 | v96) + 2 * ((v98 + v96) & -(v98 | v96)); v101 = v95[v100]; v102 = v101 | v99; v103 = -(((v101 + v99) ^ -v102) + 2 * ((v101 + v99) & -v102)); v104 = 0xFFFFFFFE - v98 - (~v98 | 0xFFFFFFFE); v98 = (v104 ^ (v98 + 1)) + (v98 | 1) + 2 * (v104 & (v98 + 1)); v95[v100] = (v103 ^ v102) + 2 * (v103 & v102); } while ( v98 < 0x10 ); v96 = (v96 | 0x10) + ~v96 + (v96 | 1) + (v96 & 1) + ((0xFFFFFFEF - v96 - (~v96 | 0xFFFFFFEF)) ^ (v96 + 0x10)) + 2 * ((0xFFFFFFEF - v96 - (~v96 | 0xFFFFFFEF)) & (v96 + 0x10)); ptr = *v97; } while ( v96 < v89 ); memset(&name[v89], 0, v88 - v89); memcpy(name, v95, v88 >> 1); memset(v90, 0, v88 >> 1); operator delete(v95); v67 = v209; break; } } operator delete(v90); v85 = obja; } 启动模块 LABEL_249: g_result[0] = 0; memset(&s, 0, 0x104); if ( p_result ) { free(p_result); p_result = nullptr; } strcpy(&s, g_dataPath); *(s.erk + strlen(&s)) = 0x2F; if ( family == ANDROID_CPU_FAMILY_X86_64 ) { strcpy(&s + strlen(&s), "ATG_E_x86_64.sec"); } else { if ( family == ANDROID_CPU_FAMILY_ARM64 ) { v152 = strlen(&s); v153 = "ATG_E_x64.sec"; } else { if ( family != ANDROID_CPU_FAMILY_X86 ) { strcpy(&s + strlen(&s), "ATG_E.sec"); goto LABEL_259; } v152 = strlen(&s); v153 = "ATG_E_x86.sec"; } v154 = (s.erk + v152); v155 = *v153; v156 = *(v153 + 6); *v154 = v155; *(v154 + 6) = v156; } LABEL_259: if ( g_Ehandle || (g_Ehandle = dlopen(&s, 1)) != nullptr ) { unlink(&s); if ( g_isScanning ) return v67->functions->NewStringUTF(v67, g_result); v157 = dlsym(g_Ehandle, "WorkThread"); if ( v157 ) { g_isScanning = 1; m_infect_cnt = v157(v67, v85, m_option); if ( (m_infect_cnt & 0x80000000) == 0 ) return v67->functions->NewStringUTF(v67, g_result); memset(&s, 0, 0x104); v158 = operator new(0xF0u); v262[0] = v158; 虚拟机检测(非常全的特征,可以抄过来用 ) Build.BRAND == “generic” Build.BRAND == “sdk” Build.BRAND == “Microvirt” Build.BRAND == “AMIDuOS” Build.BRAND == “TTVM” Build.MODEL == “AMIDuOS” Build.MODEL == “Memu” Build.MODEL == “TiantianVM” Build.MODEL == “Droid4X” Build.MODEL == “vmos” Build.HARDWARE == “andy” Build.HARDWARE == “vbox86” Build.HARDWARE == “nox” Build.HARDWARE == “windroye” Build.HARDWARE == “goldfish” Build.HARDWARE == “ttVM_x86” Build.HARDWARE == “android_x86” Build.HARDWARE == “android_x86_64” Build.BOOTLOADER == “nox” 文件存在 /system/bin/droid4x 文件存在 /system/bin/droid4x-prop 文件存在 /system/bin/androVM-prop 文件存在 /system/bin/androVM-vbox-sf 文件存在 /fstab.intel 文件存在 /fstab.vbox86 文件存在 /fstab.vbox64 文件存在 /fstab.android_x86 文件存在 /fstab.android_x86_64 文件存在 /system/app/EmuCoreService/EmuCoreService.apk 文件存在 /system/app/EmuInputService/EmuInputService.apk 文件存在 /system/app/gpLogin/gpLogin.apk 文件存在 /system/app/gpLogin/gpLogin_new.apk 文件存在 /system/app/Helper/helper.apk 文件存在 /system/app/Helper/NoxHelp_en.apk 文件存在 /system/app/Helper/NoxHelp_en_new.apk 文件存在 /bin/nox-vbox-sf 文件存在 /bin/noxd 文件存在 /data/app/com.android.ld.appstore-1/base.apk 文件存在 /data/app/com.android.ld.appstore-2/base.apk 文件存在 /system/app/Launcher3/Launcher3.apk 文件存在 /system/priv-app/LDAppStore/LDAppStore.apk 文件存在 /data/user_de/0/com.android.flysilkworm 文件存在 /data/misc/profiles/ref/com.android.flysilkworm 目录可打开 /mnt/windows/BstSharedFolder 文件存在 system/app/IME/IME.apk 上一条 APK 的包名等于 com.microvirt.memuime 文件存在 /system/app/MuMuAudio/MuMuAudio.apk 文件存在 /system/app/com.mumu.store/com.mumu.store.apk 文件存在 /system/priv-app/MuMuAudio/MuMuAudio.apk 文件存在 /system/priv-app/com.mumu.store_overseas/com.mumu.store_overseas.apk 文件存在 /system/app/KiwiIntentSink/KiwiIntentSink.apk 0x3 libATG_E.so WorkThread 入口塞了一坨特征码 然后启动了两个线程 iCEcaaLIRKlGfNDwLLDLVlwO 还是做虚拟机检测,增加了下面的特征: com.gspace.android com.excean.gspace com.excean.splay com.excean.parallelspace io.va.exposed parallel.space com.ludashi.dualspace com.ludashi.superboost com.app.hider.master.dual.app com.app.hider.master.pro com.hidespps.apphider com.app.calculator.vault.hider com.excelliance.multiaccount multi.parallel.dualspace.cloner do.multiple.cloner com.lulu.luluboxpro com.cloneapp.parallelspace.dualspace com.pan.parallelspace com.dualspace.multispace.android com.pengyou.cloneapp 做crc32校验 初始化 libData.so ,解出来是作弊工具的名称 AlphaGameBooster CheatEngine Freedom Freedom Freedom Freedom Freedom Freedom Freedom Freedom Freedom GameCheater GameCheater GameCIH GameGuardian GameGuardian GameGuardian GameGuardian GameGuardian GameGuardian GameHackerSpeed GameHackerSpeed GameHacker GameHacker GameHacker GameHacker GameHacker GameHacker GameHacker GameKiller GameKiller GameKiller GameKiller GameKiller GameKiller GameMaster2 GameMaster2 GameMaster GameMaster_opda GameMaster_opda GameMaster_opda GameMaster_opda GGAssistant HoistMan HoistMan HoistMan HoistMan Huang Huang Huang Huang igamecool igamecool LuckyPatcher MemSpector MemSpector MuzhiwanGamehelper MuzhiwanGamehelper PacketSniffer PacketSniffer RootCloakPlus RootCloakPlus RootCloak RootCloak RootCloak RootCloak SlashGameBuster SlashGameBuster SlashGameBuster TcgameGamecheater Touch18 Touch18 WoodPecker Xiaojianjian Xiaojianjian xxAssistant xxAssistant xxAssistant xxAssistant Youxia Youxia Zhangkongapp Zhangkongapp Zhangkongapp Zhangkongapp SHBUoTIkyKmlbYGMbbWeIYeB 只负责轮询配置 0x4 global-metadata.dat 读进内存变换一下文件头,做一下xor完事 0xF 反作弊力度和LIAPP坐一桌,CrackProof比这玩意稍强 libunity.so 和 libil2cpp.so 不加壳,没有云下发,甚至安全模块包含完整的DWARF 2 个帖子 - 2 位参与者 阅读完整话题

V2EX - 技术 · 2026-05-31 15:58:35+08:00 · tech

抱歉,打扰大家周末休息。 背景:十几年前的谷歌 play 开发者账号冻结,新申请开发者账号,发现需要累积信用。发布 app 前得做 closed testing (灰度测试,需要 12 位 tester 安装 x 14 天), 点击访问政策细节 。目前还差 4 位 tester 。 需要帮助:有谷歌 play 账号(中日韩美区)的同学帮我安装下,2 周后可卸载。给我谷歌 play 账号加白,然后访问: Milo Cat on Google Play 进行安装。 非常感谢。

V2EX - 技术 · 2026-05-31 14:58:35+08:00 · tech

抱歉,打扰大家周末休息。 背景:十几年前的谷歌 play 开发者账号冻结,新申请开发者账号,发现需要累积信用。发布 app 前得做 closed testing (灰度测试,需要 12 位 tester 安装 x 14 天), 点击访问政策细节 。目前还差 4 位 tester 。 需要帮助:有谷歌 play 账号(中日韩美区)的同学帮我安装下,2 周后可卸载。给我谷歌 play 账号加白,然后访问: Milo Cat on Google Play 进行安装。 非常感谢。

V2EX - 技术 · 2026-05-31 13:58:35+08:00 · tech

抱歉,打扰大家周末休息。 背景:十几年前的谷歌 play 开发者账号冻结,新申请开发者账号,发现需要累积信用。发布 app 前得做 closed testing (灰度测试,需要 12 位 tester 安装 x 14 天), 点击访问政策细节 。目前还差 4 位 tester 。 需要帮助:有谷歌 play 账号(中日韩美区)的同学帮我安装下,2 周后可卸载。给我谷歌 play 账号加白,然后访问: Milo Cat on Google Play 进行安装。 非常感谢。

V2EX - 技术 · 2026-05-31 12:58:35+08:00 · tech

抱歉,打扰大家周末休息。 背景:十几年前的谷歌 play 开发者账号冻结,新申请开发者账号,发现需要累积信用。发布 app 前得做 closed testing (灰度测试,需要 12 位 tester 安装 x 14 天), 点击访问政策细节 。目前还差 4 位 tester 。 需要帮助:有谷歌 play 账号(中日韩美区)的同学帮我安装下,2 周后可卸载。给我谷歌 play 账号加白,然后访问: Milo Cat on Google Play 进行安装。 非常感谢。