搜狗输入法的幽灵广告

电脑上明明已经把搜狗输入法卸载了,但桌面右下角还是时不时蹦出来一个写着”搜狗输入法”的弹窗,推什么”3Q导航 CC.CC”。一开始以为是没卸干净,后来怀疑是正在用的微信输入法在搞鬼,结果都不是。我抓了一份dump、又拿到了它的”皮肤包”,一路逆向下来发现这是搜狗故意留的一个第三方广告外挂——下面是我的全过程记录。


1. 弹窗

PixPin_2026-05-23_22-42-44

很有迷惑性:标题栏写着”搜狗输入法”,但我早就把搜狗卸了,按理说不该有这玩意儿。而且点击这个叉号,就会弹出来一个选择浏览器打开,并不是关掉,说明这只是个图片,点击会跳转到某个网页。


2. 一些文件

先把需要用的文件整理一下:

文件 用途
PopAD.DMP 内存转储文件
skin.dat 内容是广告物料包
PixPin_2026-05-23_22-42-44.png 截图

3. DMP

抽里面的字符串,立刻就锁定了崩溃进程是谁:

1
2
3
4
"C:\Windows\system32\config\systemprofile\AppData\Roaming\PopAD.exe"
C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\PopAD.exe
d:\DuiEditor\Demos\Test\Win32\xsUnicodeRelease\PopAD.pdb ← 开发者 PDB 路径
User-Agent: PopAD/1.0
  • 路径不对劲systemprofile\AppData\Roaming\ 是 SYSTEM 账户的目录,不是我用户的。意味着这玩意儿当年是用管理员权限装进去的,普通用户态的卸载程序不会去碰这里。
  • PDB 路径泄露d:\DuiEditor\Demos\Test\Win32\xsUnicodeRelease\PopAD.pdb——用的是 DuiEditor 这个 C++ UI 库,目录名居然还叫 Demos\Test,开发者连项目名都没改。
  • 自定义 UAPopAD/1.0,方便服务端在日志里识别”这是我自家客户端”。

4. PopAD.exe

进一步看文件本身:

1
2
3
4
5
路径:   C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\PopAD.exe
大小: 2,925,800 字节
签名: Valid
签发者: CN=深圳市聚点互动文化传媒有限公司, O=深圳市聚点互动文化传媒有限公司, L=深圳, S=广东, C=CN
版本信息: 全部空白(CompanyName / ProductName / FileVersion 都被清空)

明白了:

  • 签名是有效的,但签的不是搜狗、也不是腾讯,是 深圳市聚点互动文化传媒有限公司——一家专门做客户端广告分发的第三方公司。
  • 版本信息全空,正经软件不会这么干,明显是为了在任务管理器里不被认出来。
  • 文件 LastWriteTime 一直在变(最近一次居然就是几分钟前),说明它会自我重写/升级

据我判断,这是搜狗当年捆绑进来的广告外挂模块,开发外包给了聚点互动,搜狗把它独立成一个第三方 exe 是为了主程序卸载时合法地不动它——这甩锅手法在国内厂商真常见啊。


5. 通讯

从 dump 里抓 HTTP 通讯指纹:

1
2
3
POST /api/device/report HTTP/1.1
Host: 01670.xyz
User-Agent: PopAD/1.0

我把所有可疑域名都列出来:

URL 角色
https://01670.xyz/api/device/report 设备上报 + 配置下发(什么时候弹、跳哪、频次)
https://0430905818941789.s3.ap-east-1.amazonaws.com/skin.dat 广告素材 CDN(用了 AWS 香港 S3)
https://iii3.net/ 备用域名
https://vyuvl9768rsd3.com/file/sindata 备用素材分发

01670.xyzvyuvl9768rsd3.com 一看就是程序生成的随机短域名——灰产为了便于批量换、防封禁标配。用海外 S3 桶(账号名 0430905818941789 这种纯数字,没任何品牌)做 CDN,也是为了不被国内搜到。

dump 里还能挖到他们和服务端 API 协议的字段:

1
2
3
4
5
6
7
configuid     设备唯一 ID
skinurl 皮肤包 URL
skinpwd 皮肤包解压密码 ← hello
adurl 广告点击跳转目标 URL
isfade 弹窗是否淡入淡出
once 是否一次性
frequency 弹窗频率

意思就是:PopAD 启动 → 找 01670.xyz 报到 → 服务端告诉它”该弹了,皮肤包在那个 S3 桶里,密码 hello,点了跳这里”。


6. skin.dat

skin.dat 文件头:

1
2
3
4
$ xxd skin.dat | head -1
00000000: 504b 0304 1400 0000 0000 d376 475c 0000 PK..........vG\
^^^^^^^^^^
PK\x03\x04 = ZIP local file header

伪装成 .dat 后缀的 ZIP 包。直接列:

1
2
3
4
5
6
7
$ unzip -l skin.dat
49230 2026-01-23 images/hello.jpg
1273 2020-08-25 images/ico.jpg
111538 2026-02-07 images/sogou.png
4380 2017-05-26 images/sys_dlg_close.png
...
2140 2026-02-07 PopAd.xml

直接解压会被拒:

1
2
$ unzip skin.dat
skipping: images/hello.jpg unable to get password

—— ZIP 加密了(ZipCrypto + Deflate)。回到 dump 找密码,搜 skinpwd 的上下文:

1
2
3
4
5
configuid
skinpwd
hello ← 紧跟着,太可疑
skinurl
adurl

试了一下:

1
2
3
4
5
$ unzip -P hello skin.dat
inflating: images/sogou.png
inflating: images/hello.jpg
...
inflating: PopAd.xml

密码就是 hello。一个广告分发系统的”加密”,密码是 hello,开发者怕是周末赶的工

PopAd.xml 长这样:

1
2
3
4
5
6
7
8
9
<Window size="300,420" caption="0,0,0,20" showshadow="true">
<VerticalLayout bkcolor="0xFFD1E8F5">
<HorizontalLayout height="20" visible="false">
<FadeButton name="windowclosebtn" width="45" height="17"
normalimage="..." pushedimage="..." />
</HorizontalLayout>
<Picture name="ctlImage" bkimage="images\sogou.png" />
</VerticalLayout>
</Window>

很简单:300×420 的窗口,整个内容就是平铺一张 images\sogou.pngXML 里没有任何 URL——点击跳转的目标 (adurl) 是运行时从 01670.xyz 拉的,所以广告主想换跳转地址不用改 exe。


7. 素材对比

左侧是我截图的弹窗,右侧是我解压出来的:

截图 解出的
PixPin_2026-05-23_22-42-44 sogou

ZIP 里还有多余的图:

文件 实际作用
images/ico.jpg 小图标——PopAd.xml 里被注释掉了,没用上
images/hello.jpg 一只 Hello Kitty???

image-20260524142221272

hello.jpg 是开发者偷懒留下的测试图。再结合 ZIP 密码也是 hello——开发者拿”hello”当万能占位符,打包时也没清理。

这张图永远不会出现在弹窗里——是个隐藏的开发期遗物。


8.再看popad

我边分析边查实时进程,刚好抓到 PopAD 又起来了一次:

1
2
3
4
$ Get-CimInstance Win32_Process | Where { $_.ExecutablePath -match 'PopAD' }

Name ProcessId ParentProcessId Path CreationDate
PopAD.exe 18380 16444 C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\PopAD.exe 2026/5/24 12:56:58

文件时间戳:

1
2
3
CreationTime   = 2026/4/26 21:23:20   (4 月底落盘)
LastWriteTime = 2026/5/24 12:56:58 (几分钟前才被重写——它每次启动会自我升级)
LastAccessTime = 2026/5/24 12:57:08

我把 SogouPy 日志目录翻了一遍,看历史启动频率:

1
2
3
4
5
6
7
8
2026/5/12 17:36  PID 12688
2026/5/13 06:53 PID 23688
2026/5/13 22:15 PID 8504
2026/5/14 21:28 PID 14576
2026/5/15 21:45 PID 3040
2026/5/21 21:57 PID 7772 ← 这次生成了我手里的 PopAD.DMP
2026/5/22 10:42 ...
2026/5/24 12:56 PID 18380 ← 现在这次

基本上我开一次电脑就定时开始弹。。。


9. 找不到启动器?

进程链是这样:

1
2
3
4
services.exe (SYSTEM, PID 1252)
└─ PerceptionSimulationService.exe (PID 14400)
└─ backgroundTaskHost.exe (PID 16444)
└─ PopAD.exe (PID 18380)

backgroundTaskHost.exe 是 Windows 后台任务的通用宿主——本身是无辜的系统组件,但它会被注册的 COM 后台任务驱动,去拉起任意进程。

我把所有常规自启动机制都查了一遍:

检查项 结果
Run / RunOnce 注册表
Win32_Service
计划任务(按名字 + 按 Action.Execute)
计划任务全量 XML 搜 Sogou|PopAD|搜狗|SGTool
AppInit_DLLs
Winlogon Shell/Userinit 标准值
IFEO 调试器劫持
WMI 永久事件订阅 只有 Windows 默认的
已注册 IME (HKLM\SOFTWARE\Microsoft\CTF\TIP) 无 Sogou
搜狗的注册表卸载条目
backgroundTaskHost 当前加载的 Sogou DLL

所有常规位置都没 Sogou 痕迹,但 PopAD 还是被拉起来了。再加上我注意到:

1
Microsoft-Windows-TaskScheduler/Operational : IsEnabled = False

任务计划的 Operational 日志居然是关掉的——这本身就很可疑,要么是 Windows 默认,要么是搜狗安装时故意关来遮掩。

我的推测(没法 100% 验证):

搜狗当年装的时候注册了一个 COM 后台任务(通过 Windows.ApplicationModel.Background API 注册的 IBackgroundTask 类型),这种东西用 Get-ScheduledTask 列不出来。即使搜狗主程序被卸载,这个 COM 任务的注册没清,所以 Windows 还在调度它,backgroundTaskHost 加载对应的 DLL 后调用 CreateProcess 拉起 PopAD。

继续深挖需要装 Sysmon 或 ETW 长期监控,没啥必要——直接绕开这个问题就行,让 PopAD.exe 即使被拉起也跑不起来


10. 清理

下面这套脚本需要管理员 PowerShell,五步叠加防复活:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Step 1:杀掉当前 PopAD 进程
Stop-Process -Name PopAD -Force -ErrorAction SilentlyContinue

# Step 2:删 PopAD.exe(两个路径都试,看系统是 32/64 位)
Remove-Item 'C:\Windows\System32\config\systemprofile\AppData\Roaming\PopAD.exe' -Force -EA SilentlyContinue
Remove-Item 'C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\PopAD.exe' -Force -EA SilentlyContinue

# Step 3:占位空文件 + Deny ACL —— 防止 PopAD.exe 被重新落盘
$paths = @(
'C:\Windows\System32\config\systemprofile\AppData\Roaming',
'C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming'
)
foreach ($p in $paths) {
if (Test-Path $p) {
$f = Join-Path $p 'PopAD.exe'
New-Item -ItemType File -Path $f -Force | Out-Null
$acl = Get-Acl $f
$acl.SetAccessRuleProtection($true, $false)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
'Everyone', 'FullControl', 'Deny'
)
$acl.AddAccessRule($rule)
Set-Acl -Path $f -AclObject $acl
Write-Host "Locked: $f"
}
}

# Step 4:删搜狗配置/日志残留
Remove-Item 'C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\SogouPy' -Recurse -Force -EA SilentlyContinue
Remove-Item 'C:\Windows\System32\config\systemprofile\AppData\LocalLow\SogouPy' -Recurse -Force -EA SilentlyContinue

# Step 5:hosts 屏蔽广告服务器
$hosts = "$env:SystemRoot\System32\drivers\etc\hosts"
$adDomains = @(
'0.0.0.0 01670.xyz',
'0.0.0.0 iii3.net',
'0.0.0.0 vyuvl9768rsd3.com',
'0.0.0.0 0430905818941789.s3.ap-east-1.amazonaws.com'
)
Add-Content -Path $hosts -Value "`r`n# Block Sogou PopAD ad servers ($(Get-Date -Format yyyy-MM-dd))" -Force
$adDomains | ForEach-Object { Add-Content -Path $hosts -Value $_ -Force }

# Step 6:验证
Get-Process PopAD -EA SilentlyContinue
Get-Item 'C:\Windows\System32\config\systemprofile\AppData\Roaming\PopAD.exe',
'C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\PopAD.exe' -EA SilentlyContinue |
Select FullName, Length
Get-Content $hosts | Select-String 'sogou|popad|01670|iii3|vyuvl|amazonaws'
步骤 防什么 原理
1 杀进程 当前弹窗 立即生效
2 删 exe 已落盘的恶意文件
3 占位 + Deny ACL “幽灵宿主”再写一次 路径被同名文件占用 + Everyone Deny —— 写入失败、删除也失败
4 删 SogouPy 配置/历史
5 hosts 屏蔽 前面被绕过 即使 exe 复活,连不上服务器也弹不出

任何单一步骤都可能被绕开,五步叠加比较稳。


11. 一些技术细节备查

文件签名

1
2
3
4
Signer: CN=深圳市聚点互动文化传媒有限公司
O=深圳市聚点互动文化传媒有限公司
L=深圳, S=广东, C=CN
Status: Valid

聚点互动是有正规证书的灰产广告分发公司,专门承接客户端”内置广告位”代运营。

进程链时间

1
2
3
4
5
12:26:18  boot
12:26:41 PerceptionSimulationService.exe (PID 14400)
12:26:44 backgroundTaskHost.exe (PID 16444)
...
12:56:58 PopAD.exe (PID 18380)

PopAD 在开机 30 分钟后才被触发、不是开机自启,是某个事件/定时器驱动。

WeType检查

1
2
3
4
5
6
7
路径:   C:\Program Files\Tencent\WeType\2.0.0.27\
公司: Tencent
产品: 微信输入法服务
签名: CN=Tencent Technology (Shenzhen) Company Limited
包名: com.tencent.wetype
官网: https://z.weixin.qq.com/
技术: Flutter UI

微信输入法和搜狗输入法虽然都在腾讯旗下,但是两个独立产品线

dump 里捞到的关键字符串

1
2
3
4
5
6
7
8
9
configuid                  设备 ID 字段
skinpwd 皮肤包密码字段
skinurl 皮肤包 URL 字段
adurl 广告跳转 URL 字段
isfade / once / frequency 弹窗行为控制
PopAD/1.0 自定义 User-Agent
hello 皮肤包密码值(明文存内存)
PopAd.xml 内嵌 XML 文件名
images\sogou.png 引用素材路径

总结

虽然卸载了搜狗输入法,而且用了Revo Uninstaller扫描残留,但搜狗还是故意留了一个深圳市聚点互动文化传媒有限公司开发的广告分发模块 PopAD.exe 在 SYSTEM profile 里,通过 Windows COM 后台任务定时复活,从 01670.xyz 和 AWS S3 拉广告素材弹窗。和微信输入法(我现在正在用的)没关系。不得不说,广告这种东西只能让人越来越反感某些产品🤮🤮🤮🤮🤮