반응형

LDplayer와 여러 디바이스의 property를 비교하여 차이점을 찾으려 하였다.

하지만 각 스마트폰 제조사, 모델에 따라 각기 다른 property명과 값을 가지고 있어 범용적으로 기기가 real device인지 emulator인지 구분하기 힘들었다.

또한 확실히 구분되는 아키텍쳐 정보는 x86기반의 안드로이드 기기가 나오면서 이것으로 구분하기는 힘들었다. 따라서 실제 가진 기기의 property정보를 바탕으로 emulator와 비교하여 galaxy note 3LDplayer를 구분했다.

아래 사진을 보면 real device에서는 가지는 property이지만 emulator에선 가지지 않는 property를 정리하였다. 그리고 각 기기별로 그 이름이 다 다른 것을 알 수 있다.

(각 테스트 기기는 galaxy S10, galaxy S9, galaxy Note 3, Xperia Z3 Compact 이다.)

(getprop한 정보를 word에 옮겨 비교하였다.)

[Bluetooth 관련 property]

[GPS 관련 property]

[Camera 관련 property]

 

따라서 위와 같이 공통적이지 않은 property emulator인지 구분할 경우 모든 기기의 property를 다 알고 있지 않은 이상 적용하기 어려워 테스트 기기 한정으로 적용을 시켜 테스트하였다.

(위 프로퍼티를 갖고 있지 않은 다른 디바이스에선 emulator라고 탐지하게 된다.)

boolean isProbablyAnEmulator(){ // checking Emulator
    return get("service.camera.running").equals("") && get("ro.bluetooth.tty").equals("");
}

 

 

property외에 usim 관련, 네트워크 관련 property들은 공통적인 이름을 가지고 있으면서 다른 값을 가지는 것을 확인하였다.

[gsm.sim.state]: [NOT_READY] - LDplayer

[gsm.sim.state]: [LOADED] – s10

[gsm.sim.state]: [LOADED] – s9

[gsm.sim.state]: [READY] – note 3

[gsm.sim.state]: [ABSENT] – Xperia z3 compact

컴퓨터 A

컴퓨터 B

Galaxy Note 3

[dhcp.eth0.gateway]: [172.16.2.2]

[dhcp.eth0.ipaddress]: [172.16.2.15]

[dhcp.eth0.leasetime]: [86400]

[dhcp.eth0.mask]: [255.255.255.0]

[dhcp.eth0.mtu]: []

[dhcp.eth0.pid]: [1735]

[dhcp.eth0.reason]: [REBOOT]

[dhcp.eth0.result]: [failed]

[dhcp.eth0.server]: [172.16.2.2]

 

[dhcp.eth0.gateway]: [172.16.2.2]

[dhcp.eth0.ipaddress]: [172.16.2.15]

[dhcp.eth0.leasetime]: [86400]

[dhcp.eth0.mask]: [255.255.255.0]

[dhcp.eth0.mtu]: []

[dhcp.eth0.pid]: [1689]

[dhcp.eth0.reason]: [REBOOT]

[dhcp.eth0.result]: [failed]

[dhcp.eth0.server]: [172.16.2.2]

 

[dhcp.wlan0.gateway]: [192.168.0.1]

[dhcp.wlan0.ipaddress]: [192.168.0.18]

[dhcp.wlan0.leasetime]: [7200]

[dhcp.wlan0.mask]: [255.255.255.0]

[dhcp.wlan0.mtu]: []

[dhcp.wlan0.pid]: [25465]

 

Real Device는 대부분 무선 인터넷환경(wlan)을 이용하니 이 부분을 확인하면 좀 더 쉽게 emulator를 탐지할 수 있을 거라 생각한다. 그리고 LDplayer의 경우 eth0을 사용하고, 다른 컴퓨터 환경에서도 같은 gateway, ipaddress를 가지는 등 이 정보를 가지고도 판단할 수 있을 거라 생각한다.

 

하지만 해당 정보들 모두 최신 emulator에서 값을 조정할 수 있기 때문에, 완벽한 방법은 아니다. 

 

 

 

 


(adb shell getprop를 하였을 때 수업시간에 배운 selinux가 실제 안드로이드 디바이스에 적용이 되있음을 알 수 있었다.)

728x90
반응형
블로그 이미지

아상관없어

,