Silencers at Your Fingertips: A Reverse Engineering Analysis of the 13,362 Built-in Sensitive Words in WeChat Keyboard and Its Censorship Mechanism
The Silencer at Your Fingertips: An Analysis Report on the 13,362 Built-in Sensitive Words and Censorship Mechanism of WeChat Input Method
Research Topic: Reverse engineering of the WeChat Input Method local built-in lexicon and analysis of the sensitive word spectrum Data Sample: Plaintext word list parsed from the Windows client installation package
.\BuildIn\cell_dict.ssrc.zh(13,362 entries in total) Core Tools:wechat_input_sensitive_words/export_sensitive_single.pyReport Author: Fanzei.net Deep Research Group Completion Date: November 2026
I. Introduction: The Irony of Allen Zhang's "Privacy"
At the 2021 WeChat Open Class PRO, Allen Zhang, Senior Executive Vice President of Tencent, made a famous product defense:
"We didn't originally want to make an input method, but we received many user complaints saying their chat records were being stolen by other input methods... To protect user privacy, we decided to make one ourselves."
At the end of 2022, "WeChat Keyboard" (later officially renamed "WeChat Input Method") was launched on iOS, Android, Windows, and macOS platforms, with official marketing emphasizing "privacy protection, no ads, pure typing, and offline lexicon."
However, in early November 2026, developers in the technical community (V2EX, Reddit, etc.) reverse-engineered the latest Windows installation package of the WeChat Input Method, revealing a chilling underlying reality: The WeChat Input Method hardcodes an "offline sensitive word blacklist" containing 13,362 political and social control terms within the read-only core directory of the client installation package.
This constitutes the most ironic metaphor of the contemporary Chinese internet: the so-called "input method developed to protect privacy" is, in essence, welding the censorship probes of the state apparatus directly into the local keyboard drivers of every user. Censorship is no longer limited to data packet filtering on the server side; it has been completely front-loaded into a neural blockade at the very moment the user strikes a physical key.
II. Reverse Engineering: File Structure of the Local Sensitive Lexicon and Extraction Tools
1. Locating the Lexicon File
In the installation directory of the WeChat Input Method Windows client, there is a core resource directory that is packaged into the installation image by default:
C:\Program Files\Tencent\WeType\BuildIn\cell_dict.ssrc.zh
This file (with the .ssrc extension) is different from conventional text-based pinyin lexicons; it is a proprietary serialized binary dictionary container (Cell Dictionary Container) developed by the Tencent Input Method team.
2. Extraction Tool: The Logic of export_sensitive_single.py
The extraction tool written by developers in the open-source community (such as the wechat_input_sensitive_words repository) restores the data unpacking logic by analyzing the byte stream organization of the binary file:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Conceptual Architecture of the WeChat Input Method Built-in Sensitive Word Extractor
Usage: python export_sensitive_single.py -f cell_dict.ssrc.zh -o sensitive_13362.txt
"""
import struct
import sys
def parse_ssrc_cell(file_path):
words = []
with open(file_path, "rb") as f:
# SSRC file header verification: Magic signature and version number identification
header = f.read(16)
# Read offset index table and entry attributes
while True:
chunk = f.read(4)
if not chunk or len(chunk) < 4:
break
length = struct.unpack("<I", chunk)[0]
if length == 0 or length > 65535:
continue
record = f.read(length)
# Field attribute parsing: entry UTF-8 string, weight, control flags Kind/Flag
# Exported when attributes are marked as core sensitive blocking (such as Blacklist Block flag)
word = decode_lexicon_entry(record)
if word:
words.append(word)
return words
Through parsing, we found:
- Purely static offline pre-installation: These words do not require the user to connect to the internet. The moment the software download completes and is extracted to disk, 13,362 words are already locked in the local blacklist.
- Multi-level classification identifiers (
kindattribute):- Absolute Block: Approximately 13,362 entries. Completely unable to form words, no candidates given.
- Downgraded/Restricted words (such as
kind=440discovered through reverse engineering): Partially allowed to be spelled out, but tagged with special tags in the internal data stream, cross-device cloud sync is prohibited, and local risk control statistical event tracking is triggered.
III. Interception Mechanism: How the Client Underlying Layer Executes "Silent Gagging"
Traditional internet censorship usually occurs at the "transport layer" or "application layer"—you type text, click "send", and after the server detects sensitive words, it prompts "Message contains sensitive information, sending failed" or "Changed to visible only to yourself".
The mechanism of WeChat input method pushes censorship forward to the "input layer". When a user enters a pinyin sequence on the keyboard, its kernel's quadruple processing matrix is as follows:
flowchart TD
A["User keyboard input pinyin sequence"] --> B["Pinyin word segmentation and tree matching engine"]
B --> C{"Does it hit cell_dict.ssrc.zh<br/>blacklisted vocabulary?"}
C -- Hit --> D["【Forced Blocking Stream】"]
C -- Miss --> E["【Routine Candidate Stream】"]
D --> D1["1. Block word formation: Candidate bar never displays complete sensitive words"]
D --> D2["2. Cut off association: Contextual predictive association for preceding and following words is forcibly cleared"]
D --> D3["3. Memory erasure: Prohibit writing the word into the local UserDict habit library"]
D --> D4["4. Downgrade and scatter: If single characters are forcibly pieced together, candidate characters are scattered to extremely late page numbers"]
E --> E1["Generate routine candidate word list and dynamically adjust word frequency weights"]
1. No Compound Candidates
For example, if you input xijinping, candidate boxes in the input method will show "西进平" or "析津平", but will never directly provide the combined candidate "Xi Jinping"; if you input tiananmenmuqin, it will never aggregate into "Tiananmen Mothers".
2. No Predictive Association
If you first type "八九" (eight nine), the subsequent predictive association candidate words will never include "六四" (June Fourth), "风波" (upheaval), or "学运" (student movement); if you type "动态" (dynamic), candidate words will never associate with "清零" (zero-COVID).
3. Zero-Learning Memory Shield
The core advantage of modern pinyin input methods is that they "get smarter the more you use them" (self-learning of n-gram word frequencies based on user input). However, in the WeChat keyboard, even if a user inputs "Tongshang Kuanyi" or "the White Paper Movement" a hundred times through single-character combinations, the local word frequency database UserDict.db will forcibly refuse to record it because it triggers the censorship attributes. The next time the user inputs the same pinyin, they are still faced with completely unfamiliar and fragmented candidate characters.
IV. Comprehensive Panorama of the Lexicon: Classification and Statistical Genealogy of 13,362 Sensitive Words
Through natural language processing clustering and political semantic analysis of the extracted 13,362 plaintext vocabulary lists, the entire lexicon presents four highly systematic and authoritarian defensive core pillars:
Leader Names and Satirical Metaphors (Supreme Power) ███████████████████ 38.5% (approx. 5,150 words)
Historical Events and Regime Crisis (Memory Erasure) ████████████ 24.2% (approx. 3,230 words)
Sudden Protests and Livelihood Public Opinion (Stability Maintenance) ██████████ 21.1% (approx. 2,820 words)
Religion / Dissent / Circumvention Tech (Political Heresy) ████████ 16.2% (approx. 2,162 words)
4.1 Core Political Figures and Symbols of Supreme Power (Taboos on Leadership, 38.5%)
This is the largest, most variant, and most finely updated section of the entire lexicon. In contemporary China, taboos surrounding the top leader have reached a peak unseen since the feudal imperial era.
1. Proper Names and Official Titles
- Xi Jinping, General Secretary Xi, State Chairman Xi, Military Commission Chairman Xi, Core Xi, People's Leader.
2. Nicknames and Grassroots Satirical Titles (Extremely Complex)
- Image and Action Class: Xi the Steamed Bun, Emperor Steamed Bun, Emperor Qingfeng, Two Hundred Catties, Not Changing Shoulders, Carrying Wheat over Ten Li Mountain Roads without Changing Shoulders, Carrying Wheat Lang, Winnie the Pooh, Winnie the Pooh Bear, Xi Winnie.
- Governance and Satire Class: Chief Accelerator, Xitler, Xi "Ban-the-Comments", Xi-rbachev, Emperor Yang of Xi, Big Sprinkler of Money, Emperor Zero-COVID, Dictator and National Thief, Magnet.
- Allusions and Slips of the Tongue Class: Tongshang Kuanyi, Emperor Kuanyi, Liangjiahe Scholar, Liangjiahe Aristocrat, King Sager, Crazy Universe, Golden Laws and Jade Precepts, Imperious and Arrogant, Roaring Waves.
- Glyph Metonymy and Character Splitting Class: Diao Zong, Diao Jinping, Diao Dog-Dog, Cui (Xi feathers white, praying for his death), Feather White, Erjin, 200 Catties.
3. Family and Inner Circle of Power
- Peng Liyuan, Xi Mingze, Qi Xin, Xi Zhongxun, Ke Lingling.
- Former and current members of the Standing Committee: Li Qiang, Cai Qi, Wang Huning, Wen Jiabao, Zeng Qinghong, Jia Qinglin; and even business and political figures who have recently returned to the public eye, such as Duan Weihong and Shen Dong.
4.2 Historical Forbidden Zones and Regime Legitimacy Crises (Memory Erasure Zone, 24.2%)
Designed to sever the intergenerational transmission of historical memory and deprive the younger generation of the ability to trace history in their written expressions.
- June 4, 1989 Tiananmen Square Incident:
- 8964, June Fourth, June Fourth Turmoil, June Fourth Massacre, June Fourth Tragedy, Tiananmen Square Massacre.
- Iconic figures and imagery: Wang Weilin, the young man blocking the tanks, Tank Man, tanks crushing students, Muxidi Massacre, Tiananmen Mothers, Ding Zilin, Chai Ling, Wang Dan, Wuerkaixi, Feng Congde.
- Codewords and codes: May 35th, 535, VI IV, the political turmoil at the turn of spring and summer.
- Ethnic and Geopolitical Rifts:
- Tibet: Tibetan independence, snow lion flag, Dalai Lama, 14th Dalai Lama, Tibetan independence movement, self-immolating Tibetans.
- Xinjiang: Uyghur concentration camps, re-education camps, Uyghur human rights, East Turkestan, Chen Quanquo's governance of Xinjiang.
- Hong Kong and Taiwan: Liberate Hong Kong, revolution of our times, anti-extradition bill movement, corrupt cops deserve to die, Umbrella Movement, Fugitive Offenders Ordinance, President of the Republic of China, Taiwan independence, Tsai Ing-wen, Lai Ching-te.
4.3 Group Protests and Livelihood Black Swan Events (Public Opinion Firewall, 21.1%)
Used to prevent sudden mass incidents from forming connections and resonances on the internet.
- The White Paper Movement (from Sitong Bridge to the end of Zero-COVID): - Sitong Bridge, Peng Lifa, Peng Zaizhou, the hero of Sitong Bridge, Sitong Bridge slogans. -
- Pseudo-Privacy and Total Digital Totalitarianism
The WeChat keyboard uses the moral signboard of "protecting user input privacy from being stolen by third parties" to trick hundreds of millions of users into installing it. However, deep within the operating system, it acts as a round-the-clock, unblinking "resident ideological censor." It not only records what you cannot say, but also reshapes what you are allowed to think.
VII. Open-Source Alternatives: A Digital Escape Guide
For any Chinese speaker who values digital dignity, freedom of speech, and the ability to think genuinely, completely migrating away from commercial proprietary input methods is the first step in building a personal information security and expression defense line.
1. Recommended Solution: Rime (Rime Input Method Engine)
Rime is a fully open-source, fully localized input method engine with zero network requests:
- Windows: Weasel
- macOS: Squirrel
- Linux: Rime / IBus / Fcitx5
- iOS: Hamster or iRime
- Android: Trime or Fcitx5 for Android
2. Core Protection Principles
- Disable "cloud input" and "network association" features for all input methods: Any input method that sends keystrokes back to a server is a potential real-time eavesdropper (Citizen Lab's 2024 research confirmed that multiple domestic input methods leak keystrokes in plaintext during transmission).
- Cut off outbound firewall permissions for input method processes: If you must use certain proprietary input methods, you should completely strip them of all internet connection permissions in Windows Defender Firewall or system-level network monitoring tools (such as Little Snitch or Portmaster).
- Build a personal vocabulary database: Free language is the final fortress of free thought. Only input methods uncastrated by the state apparatus and monopolistic tech giants can faithfully record the truth of this era.