Es gibt keinen Emulator, der ein Android-Gerät vollständig emulieren kann?

Stimmt es, dass es keinen Android-Emulator gibt (Stand Mai 2021), der ein Android-Telefon emulieren kann, sodass eine App es nicht erkennen kann?

Von allen Emulatoren da draußen (ich habe eine Liste mit den 15 besten Android-Emulatoren gesehen ) waren sie nicht in der Lage, es zu tun? Der Grund dafür ist, dass es etwas seltsam erscheint, warum es nicht möglich ist, eine solche Umgebung vollständig zu emulieren, wenn ein 99-US-Dollar-Telefon die Arbeit erledigen kann. (und dass einige Entwickler den Emulator möglicherweise mit dem ursprünglichen Ziel schreiben: Kein Code, der im Emulator ausgeführt wird, kann erkennen, dass es sich um einen Emulator handelt).

Ich denke, wahrscheinlich kann der offizielle Android-Entwickler-Emulator die Arbeit auch nicht (vielleicht absichtlich) oder sonst würde er als Methode in einem Forum empfohlen.

Was Sie beschreiben, ist ein Pokemon-Emulator, kein Android-Emulator
Nein ... Android-Emulator ... und dann die darin enthaltene App Pokemon Go ausführen. Wenn wir eine Windows 10-VM haben und Microsoft Word darauf ausführen, werden Sie nicht sagen, dass wir Microsoft Word emulieren, aber wir emulieren eine Windows 10-Maschine, nicht wahr?
Smartphone hat ~6 Sensoren und GPS, was Sie wollen, ist, Werte für alle diese Sensoren so zu emulieren, dass keine Plausibilitätsprüfung verletzt wird. Diese Überprüfungen werden von Pokémon entwickelt, das klingt für mich ziemlich nach Pokémon-Emulator

Antworten (1)

Sie sprechen von einem Android-Gerät, es können 100.000 kleine Unterschiede zwischen echten und emulierten Geräten bestehen. Selbst das Beseitigen all dieser Unterschiede, die "behoben" werden können, erfordert einiges an Arbeit.

Allein die Ausführungsgeschwindigkeit ist ein Indikator, den man nicht so einfach fälschen kann. Um ein ARM-Gerät zu emulieren, das 99 US-Dollar kostet, benötigen Sie möglicherweise einen PC, der mehr als 1000 US-Dollar kostet, und dann ist die Ausführungsgeschwindigkeit eines ARM-Emulators immer noch niedriger als die des physischen Geräts. Dies liegt daran, dass die Emulation einer ARM-CPU auf einer x86-CPU schwierig ist und viele CPU-Ressourcen erfordert.

Selbst wenn Sie einen der neuen Apple-Computer mit einem M1-ARM-Chip verwenden würden (oder ein anderes Gerät, auf dem ein schneller ARM-basierter Chip läuft, der daher die meisten ARM-Befehle direkt versteht), werden Sie immer noch Unterschiede auf Code-Ebene feststellen erkennen und daher mit hoher Wahrscheinlichkeit vermuten, dass es sich um einen Emulator handelt.

Ein weiteres Problem ist, dass Sie, vorausgesetzt, Sie könnten einen Emulator erstellen, den eine App nicht als Emulator erkennen kann, ihn dann an jeden im Internet verkaufen. Sehr bald werden die Leute, von denen Sie nicht möchten, dass eine App auf einem Emulator läuft, Ihren Emulator erkennen, ihn bekommen und auseinandernehmen, bis sie einen Weg gefunden haben, ihn immer noch zu erkennen.

Daher lautet aus meiner Sicht die Antwort auf Ihre Frage: Ja, mit hoher Wahrscheinlichkeit gibt es Emulatoren, die derzeit von keiner App als Emulatoren erkannt werden können. Damit das so bleibt, werden diese Emulatoren jedoch nie veröffentlicht und können nirgendwo gekauft oder abgerufen werden.

Zum Beispiel haben Antiviren-Unternehmen höchstwahrscheinlich einen solchen Emulator, da Malware normalerweise die raffinierteste Methode enthält, um zu erkennen, ob sie in einer emulierten Umgebung oder auf einem normalen Gerät ausgeführt wird. Das Ausführen in einer emulierten Umgebung für Malware bedeutet normalerweise, dass jemand sie analysiert (was der Malware-Autor offensichtlich nicht will).

Wenn es die Geschwindigkeit ist, dann wäre es so, als ob das Handy 3 Jahre alt wäre, aber es sollte den Emulator nicht daran hindern, zum Beispiel Pokemon Go zu spielen ... also sollte die Geschwindigkeit ok sein. Das Ziel des Emulators sollte sein: Die App kann nicht wirklich wissen, dass es sich um das reale Gerät oder in einer virtuellen Umgebung handelt ... wenn sie den Emulator herunterreißen und einen Weg finden, dies zu tun, dann ist es keine "vollständig" emulierte Umgebung noch. Beispielsweise können wir einen x86-Prozessor-Emulator schreiben, und der darauf ausgeführte Maschinencode sollte absolut keine Möglichkeit haben, sich selbst mitzuteilen, dass er in einem Intel-Prozessor oder in einem Prozessor-Emulator ausgeführt wird
@StefanieGauss Sorry, aber du verstehst den Punkt nicht. Die Entwickler von Pokemon möchten nicht, dass Sie einen Emulator verwenden, und sie werden immer einen Weg finden, um zu testen, ob Sie sich auf einem Emulator befinden. Wenn der Emulator besser wird, verbessern sie den Test und da ein Smartphone ziemlich viele physische Sensoren enthält, wird es wirklich sehr schwierig, alles zu emulieren. Akzeptiere einfach, dass die Entwickler mehr Macht haben als du. Ein Grundprinzip von Spielen ist, dass es Regeln gibt, Regeln, die man akzeptieren muss, um spielen zu können.
Ich weiß, dass die Spieleentwickler "es schlagen" wollen ... aber in der heutigen Welt des Codes und der Algorithmen ist es so einfach zu sagen: "Oh, ich bin in einer Höhe von 2 Metern und das Telefon ist um 23 Grad geneigt" und so weiter 10 Sekunden, "Oh, ich bin in einer Höhe von 1,8 Metern und das Telefon ist um 26 Grad geneigt". Ich meine, das sind nur ein Kinderspiel. Wie viele Dinge können sie überprüfen? 20, 30? Und ist es schwer, 20 oder 30 Dinge zu fälschen? In der Software können wir möglicherweise 1 Sache in 10 Minuten fälschen ... es gibt eine begrenzte Anzahl von APIs und sie können alle gefälscht werden