Malware teardown · reverse engineering

Anatomy of a fake “DNS optimizer”

Someone hands you a 3.6 MB Windows program called DNS一键优化.exe — “one-click DNS optimization” — because the site you want to reach won’t load. It looks like a friendly support tool. I unpacked it to find out what it actually changes on your machine, and why the honest answer is don’t run it.

Windows PE32 3,767,808 bytes UPX packed unsigned requires administrator

Verdict

Not a password stealer — and still not safe. There is no spyware, no backdoor and no “payload” in this file. It is an unsigned, administrator-level utility that rewrites the DNS servers on every network adapter in Windows. Its purpose is to make a blocked website reachable again, and the people publishing it are the operators of that blocked website. The danger here is not a hidden virus; it is who is handing you an admin-level network tool, and what that tool is allowed to point your traffic at.

PE / UPXStatic analysisDNS hijack patterns Supply-chain trustSocial engineering

01Where it came from

No guessing was required. macOS keeps a receipt for every downloaded file, in an extended attribute called kMDItemWhereFroms, plus a quarantine stamp recording which application fetched it and when:

$ xattr -l DNS一键优化.exe
com.apple.metadata:kMDItemWhereFroms: https://www.218yc[.]com/static/file/DNS一键优化.exe
                                     https://www.218yc[.]com/
com.apple.quarantine: 0081;6aae4c6a;Chrome;67742DF8-…

Domains on this page are written defanged — [.] stands for . — so nothing here can be clicked into a visit or scraped into one.

FieldValue
Download URLhttps://www.218yc[.]com/static/file/DNS一键优化.exe
Linking pagehttps://www.218yc[.]com/
Downloaded byGoogle Chrome
Timestamp2026-09-19 16:48 HKT (decoded from the quarantine stamp)

218yc[.]com is not a software site. It is a search-engine-camouflaged front page for an unlicensed online gambling operation — a mix of scraped news snippets, bank and email links to look legitimate, and links into browser-based casino games. Its front page carries a small “self-rescue” kit for players whose connection refuses to load the site:

1
一键优化修改DNS — this file“One-click DNS optimization to fix the black screen / the game won’t open.”
2
寰宇浏览器 / “Huanyu browser”A promoted browser advertised as one that can “go anywhere” — i.e. reach blocked sites.
3
A line-check toolFor diagnosing whether the casino’s servers are reachable from your connection.

All three items solve the same problem: making a blocked website load. That framing is the whole story of this file. It is not a utility that escaped from a software vendor — it is site infrastructure, handed to players as a favour.

02What’s inside the file

PropertyFinding
FormatWindows PE32 GUI executable, Intel 80386
Size3,767,808 bytes packed → 11,321,344 bytes unpacked
PackerUPX 3.91 (sections UPX0/UPX1) — used to shrink the Qt runtime, and it hides the strings
ToolchainStatically-linked Qt GUI application built with MinGW-W64 GCC 4.8.3
Digital signatureNone
Version resourceAbsent — no publisher, product name or version to check
Requested privilegerequireAdministrator (UAC elevation on launch)
Network codeNone — no HTTP client, no downloader, no socket code in the application layer

Two of these are already the tell. The embedded manifest is stored uncompressed even inside a packed binary, so it can be read without unpacking — and it asks for full administrator rights:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

A DNS tweak is a machine-wide network change, so admin is technically consistent. But combine that with no signature and no version information at all — you cannot verify who built this, you cannot check whether the build in front of you is the build anyone ever reviewed, and there is no update mechanism that would tell you if it changed. That is what a throwaway build looks like.

03The entire program, in four lines

Unpacked, the giveaway sits in one tight cluster of strings. The application’s own class names are UDnsOptimizer / UDnsWindow, and its working code is a thin wrapper around Windows’ own command-line network tool:

netsh interface ip   set dns "%1" static %2
netsh interface ip   add dns "%1" %2 index=2
netsh interface ipv4 set dnsserver "%1" static %2
netsh interface ip   set dns "%1" dhcp        // "reset to automatic"

// and the same change written straight into the registry:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%1 → NameServer

The interface is one button, and the messages it shows the user are exactly what you would expect from a “fix my DNS” utility:

DNS 设置尚未优化 — “DNS settings are not yet optimised”
按下 “优化” 按键, 以优化 DNS 服务器的设置。 — “Press the ‘Optimize’ button to optimise the DNS server settings.”
DNS 设定中… / DNS 设置已优化 / DNS 优化失败 — “Applying DNS settings… / DNS settings optimised / DNS optimisation failed”

Here is the part that matters. The only DNS server addresses anywhere in the binary are 8.8.8.8 and 8.8.4.4 — Google Public DNS. There is no latency measurement, no comparison of providers, no “optimisation” logic of any kind. “Optimise” means one thing: replace your ISP’s DNS servers with Google’s.

And it is not limited to that pair. The binary also carries hidden command-line options — --adapter-index, --preferred-dns-server, --alternate-dns-server — alongside programmatic entry points such as setAllDnsAddressManually(). In other words, whoever launches this program can point your DNS at any resolver they choose, silently, with administrator rights, on every adapter.

04Why a gambling site ships a DNS tool

Because DNS is usually what blocks it. On many networks — and especially across mainland China’s ISP resolvers — casino domains are sinkholed at the DNS layer, so the site simply won’t resolve. The standard workaround is to move resolution to a foreign resolver, and the standard pairing for that is a foreign resolver plus a proxy-capable browser. That is precisely the three-item kit on the site’s help page: change the DNS, install our browser, check the line.

So the tool is not random. It is the first step of a documented access-bypass workflow, packaged as consumer-friendly “one-click” support.

05What I did not find

Being precise here matters, because “I found malware!” is easy to claim and hard to prove. I looked for, and did not find:

The strings that look alarming at a glance — .lnk, NetShareEnum, UNC paths — belong to the Qt and Windows shell libraries that every Qt application links, not to this program’s own logic. Reading them as intent is the classic false positive.

So why not just run it?

Because “no payload” is a statement about this build, today. You are still handing administrator rights to an unsigned, unversioned binary published by an unlicensed gambling operator, with no support channel, no update path and no accountability. That is a bad trade even when the binary is boring — and trojanising an update to a tool people already trust is the ordinary way this pattern goes wrong later.

06Why you shouldn’t run it — five concrete reasons

  1. Unverifiable authorship, with admin rights. No signature, no version resource, no publisher name. You cannot tell this build apart from a modified one, and it runs elevated. Everything else on this list is a consequence of that.
  2. It rewrites every network adapter, and rollback is on you. The change is applied per adapter and written into the registry. If it fails halfway, or your VPN, school or work profile depends on its own resolver, you are left with broken name resolution and no undo button — the program has no restore function beyond a blunt “set it back to automatic”.
  3. It silently redirects all your DNS traffic to a third party. Every hostname your machine looks up would go to one external resolver. That is a real privacy change, and it commonly breaks things you actually want: split-horizon internal DNS, hotel and airport captive portals, ISP or parental filtering, and some campus networks.
  4. It can be aimed at any resolver by whoever runs it. The --preferred-dns-server / --alternate-dns-server switches mean the “optimiser” is a generic DNS-setting engine. A launcher, an installer or a shortcut can drive it to a malicious resolver without the user ever seeing a prompt — and DNS is the layer that decides where your traffic actually goes.
  5. Provenance is disqualifying. It is distributed by an unlicensed gambling operation, from a domain dressed up to look like a news site, as part of a workflow whose purpose is to evade network controls. Nothing about that chain gives you a reason to trust it with administrator rights on your machine.

07The pattern to recognise next time

None of this required a malware scanner. The same five questions would have flagged it before execution:

08How the analysis was done

Entirely static — the sample was never executed, and as a Windows PE it could not have been on this machine anyway. The whole teardown ran on macOS:

1
Provenance firstxattr -l to read kMDItemWhereFroms and the quarantine stamp — that alone named the source URL, the linking page, the downloading browser and the exact time.
2
Identify and hashfile and shasum -a 256 — PE32 GUI, Intel 80386, UPX compressed, plus a stable hash to work from.
3
Read the resources while still packedUPX leaves the .rsrc section uncompressed, so parsing the PE section table and dumping .rsrc yields the manifest (requireAdministrator), the icon set, and the absence of any version resource.
4
Unpack itBuilt UPX from source (it ships no macOS binaries, and the Homebrew build here can’t compile for this Mac’s architecture) and decompressed the image to 11.3 MB.
5
Classify by string clusterExtracted printable runs and CJK sequences, then read the cluster around the giveaway. Qt class names revealed the app’s own function list; the MinGW build stamp identified the toolchain.
6
Hunt for behaviour, not vibesGrepped the API import table for network, persistence and drop primitives; grepped strings for endpoints, schtasks, and Run keys. Their absence is a finding, and it is what keeps the verdict honest.
7
Cross-check the delivery storyFetched the source domain and read the surrounding help page — which is how the DNS tool, the promoted browser and the line-check tool connected into one access-bypass kit.

09Indicators, and what to do if you already ran it

ItemValue
FilenameDNS一键优化.exe
SHA-256 (packed)6c47bebfc1a0cc53be82268de3c7c6781d89254e54421091d7fa2c26e9514b01
SHA-256 (unpacked)bbfd77a19f2b98ba57c02f64bcfb3a1efa061351ca998226a26cef53118e444f
Distribution hostwww.218yc[.]com (path: /static/file/)
UI / component namesUDnsOptimizer, UDnsWindow
Registry touch pointHKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<adapter> → NameServer

If it was run on a Windows machine, check what your adapters are actually using and put them back to automatic:

:: see the current DNS servers per adapter
netsh interface ip show dns

:: revert an adapter to the network's own resolvers
netsh interface ip set dns "Wi-Fi" dhcp
netsh interface ip set dns "Ethernet" dhcp

:: the registry values this tool writes
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\

The sample itself is deliberately not hosted here. If you want a scanner’s opinion, submit the hashes above to a service such as VirusTotal rather than running the file.


The one-line version. A friendly “one-click DNS fix” from a gambling site is not a utility — it is the first step of a network-bypass kit, it runs with administrator rights, it cannot be attributed to anyone, and it can be aimed at any resolver its launcher likes. The scan was clean. Don’t run it anyway.