← field notes

How a platform tells a real phone from an emulator

emulator-detection device-integrity bot-detection attestation

Every so often a platform decides that some of my phones do not exist. I run a rack of Android handsets in Singapore that people rent by the hour. Real devices, real batteries, real SIM cards. Some risk engine on the far side looks at a slice of them and classifies them as emulators, and the appeal process, where one exists at all, amounts to insisting that a physical object is physical. So I read device integrity documentation the way other people read weather forecasts, from the wrong end of it.

To see what those systems are actually hunting, start with the economics.

Why anyone fakes a phone

One person holding one phone can do almost no damage worth an engineer’s time. One account, one welcome bonus, one fake vote. The abuse becomes a business when the same act repeats ten thousand times over, and ten thousand genuine handsets cost a fortune. They need SIM cards and shelving and power and someone to tap them, and they are slow.

The tempting shortcut is to skip hardware entirely. An emulator farm spins up thousands of virtual devices on a few rented servers, each one claiming to be a different handset in a different pocket, all of them driven by a single script. Nearly all industrial abuse has that shape: a small number of machines wearing a large number of masks. Which means that for the platform on the other side, telling real hardware from imitated hardware is close to the whole game.

What the imitation gets right

An emulator fakes the entire machine in software. The processor, the screen, the sensors, the operating system, everything a handset would normally report about itself comes back from code instead. And the surface of the imitation can be excellent. It announces the right model number, the right build, the right screen dimensions, and it answers every direct question a platform asks correctly.

The weakness sits somewhere stranger. A real phone in a real hand is continuously messy. It is warm, it trembles, its battery drains at an uneven rate, and it sits at whatever careless angle a wrist happens to settle into. A simulated phone is born clean. Reproducing all of that mess convincingly turns out to be far harder than faking a model number, and nearly every technique below is a way of noticing that the mess is missing.

Sensors that cannot sit still

The most elegant tells come from the instruments. A handset carries an accelerometer that measures motion, a gyroscope that measures rotation, a magnetometer that feels the earth’s field, and none of them is capable of silence. Even flat on a table, a real accelerometer picks up the faint vibration of the room, the hum of the building, the drift of a cheap physical component that can never quite settle on a perfect zero. It whispers constantly.

A virtual sensor, unless someone has gone to unusual trouble, reports values that are too clean and too round. A device claiming to be held in a hand while reporting a flawless, unwavering zero degrees of tilt has told on itself. Real hands shake. Real rooms hum. Perfect stillness is the signature of hardware that was never manufactured.

The missing hand

Human touch has its own texture. Taps land a few pixels off centre, swipes curve slightly, the rhythm of interaction speeds up and slows down as attention wanders, and the phone tilts a fraction every time a thumb presses against the glass. A farm script taps the same coordinates at machine-regular intervals and never once gets distracted halfway through a form.

On a purely virtual device the problem runs deeper, because there is no touch hardware at all, so the tiny ripple a genuine tap would send through the motion sensors simply never appears. The tap gets reported. The physics of the tap is absent. That missing clumsiness turns out to be one of the loudest signals available.

What the plumbing leaks

Then the imitation starts betraying its own internals. Graphics come out of specific chips and specific drivers, and the names of those parts surface in the details a device reports about itself. A genuine handset names a real, physical graphics processor. A virtual one very often names a well known virtualization layer or a generic software renderer, strings no shipping phone has ever carried.

Beyond the graphics sit the default artefacts. Serial numbers still holding their factory placeholder values. Identifiers that come back blank, or identical across ten thousand instances. Model names that disagree with the hardware profile they arrive alongside. Each of these is a small thing on its own. A phone whose insides describe a server, and whose serial number matches thousands of siblings, is hiding badly.

Timing that belongs to other silicon

A real model of phone does small units of work at a rhythm set by its actual chip, its memory and its thermal limits. An emulator runs on entirely different hardware underneath, usually a powerful server, and the mismatch shows up in fine grained timing. Some operations finish implausibly fast for the modest handset being claimed. Others stutter in ways real silicon never does, because every instruction passes through an extra layer of translation.

That rhythm is stubborn. It comes from the physical machine doing the work, so reshaping it means throttling everything down to a crawl, which defeats the point of running a farm at all.

The attestation wall

Behind the statistical tells sits one colder test. A modern phone contains secure hardware that can sign a statement about what the device is, using keys held only by genuine, certified handsets. A platform can ask for that signed proof. A real phone produces it. An emulator, holding no such hardware, generally cannot, however fluently it lies about everything else.

That check sits far closer to a hard yes or no than anything the sensors can say, and it is the wall a lot of cheap fakes never climb.

No single tell convicts

Here is the part that makes the whole field workable. Every signal above, taken alone, is weak. A sensor reading clean might belong to a phone genuinely sitting untouched on a desk. My racked handsets do exactly that for hours at a stretch, which is part of my problem. A fast operation might belong to a genuinely fast phone. A strange driver string might belong to an unusual honest device.

Detection works by stacking. A device whose sensors are silent, whose taps are metronomic, whose graphics stack names a hypervisor, whose timing contradicts its claimed chip, and which cannot produce an attestation, has run out of coincidences. The verdict comes from the weight of many faint suspicions crossing a threshold together, and where that threshold sits is a business decision as much as a technical one.

Why platforms bother

It is easy to hear all of this and feel only watched, so the honest purpose deserves a sentence. Without this machinery, the farms win on volume alone. An unguarded signup page, a free trial, a referral bonus, a review system, each of them would drown under ten thousand imitations claiming to be ten thousand people. Emulator detection is a large part of why a new account still means something and why a rating is anything better than noise. At its best it works like a quiet immune system for the ordinary internet.

The arms race

The farms adapt, so the contest rolls on. When defenders learned to spot silent sensors, farms began injecting synthetic noise, a manufactured tremble laid over the virtual accelerometer, and defenders now look for noise that repeats a little too regularly. Farms randomise serial numbers and rewrite driver strings to name real chips. And when the software route gets too expensive, the serious operations abandon emulation for warehouses of genuine handsets tapped by mechanical arms or by cheap labour, because a real device produces real mess for free. The defenders answer by hunting a different tell, hundreds of real phones behaving in eerie lockstep.

Neither side wins outright. Each round just raises the price of pretending.

The honest people who fail

The same machinery catches people doing nothing wrong, and that deserves to be said plainly. A developer testing an app inside an emulator looks exactly like a one-device fraud farm. Accessibility tools that drive the screen for someone who cannot tap it produce interaction that reads as inhuman. An old handset, a custom operating system, a privacy hardened configuration, each sits far enough from the statistical centre to draw suspicion on sight.

And a cloud phone business lives in the blast radius permanently. My devices are real, and they are also racked, motionless and operated remotely, which drags their profile toward the very pattern these models were trained to flag. The machinery cannot see intent. It measures distance from the messy human default, and it quietly treats unusual as fraudulent, so the honest and the dishonest both pay the price of failing to look ordinary.

The absence that gives it away

The lesson I keep returning to is that the specifications were never the hard part. Faking a model number is trivial. What defeats the imitation is ordinary mess: the tremble of an instrument that cannot hold zero, the sloppiness of a real thumb, the specific slowness of modest silicon, the accumulated imperfection of an object that actually exists in a room somewhere. A genuine phone gives off a thousand unfaked signs of being real without trying. The fake has to manufacture every one of them deliberately, and it always seems to miss a few.

More on the machinery running underneath the ordinary internet at The Hidden Internet.

Get new guides and videos first — join the Telegram channel.

watch
The Hidden Internet on YouTube

Every field note starts as a short documentary. Watch the systems in this piece explained on screen.

subscribe →
read on
More field notes

The rest of the series on how the modern internet detects, tracks, and sorts the traffic that reaches it.

browse the archive →