2015-01-11 2 views
5

무료 게임에 대한 반칙 구현의 일부로 adb server이 Android 기기에서 실행되고 있는지 감지하려고합니다.ADB 서버가 Android에서 실행되고 있는지 검색 하시겠습니까?

특히 게임이 경쟁 멀티 플레이어 퍼즐 게임이기 때문에 adb shell input tap x,y의 사용을 중지하고 싶습니다.

상황은 내가 시도 :

  1. USB가 연결되어 있다면 감지 할 수있는 배터리 정보를 사용하여 글쎄, 그건 또한 합법적 인 사용이다.. Settings.Secure 또는 Settings.Global를 사용

  2. , 나는 ADB_ENABLED를 조회 할 수 있지만, ADB가 활성화 된 경우 즉, 항상 1 반환합니다. 연결된 adb를 고려하지 않습니다!

  3. 모든 시스템 서비스를 쿼리하지만 adb 서비스처럼 보이지는 않습니다.

이 시점에서 나는 아이디어가 없습니다. 바라기를 다른 누군가는 이것을하는 방법을 알고있다?

답변

6

당신은 adbd 프로세스를 실행 또는 쿼리 init.svc.adbd 시스템 등록 정보를 확인할 수 있습니다

$ ps adbd 
USER  PID PPID VSIZE RSS  WCHAN PC   NAME 
root  14947 1  4596 208 ffffffff 00019358 S /sbin/adbd 

$ getprop init.svc.adbd 
running 

은 안드로이드에서 adb 드라이버는 보편적 usb 드라이버의 함수로 구현됩니다. 당신은 "adb"이 포함되어 있는지 확인하기 위해 현재 사용 usb 기능의 (쉼표로 구분) 목록을 확인할 수 있습니다

$ cat /sys/devices/virtual/android_usb/android0/functions 
mtp,adb 

그러나 앱이 사용자 제어 장치에 완전히 실행되는 동안 당신은 할 수 정지 부정하지 않을 것입니다.

+0

굉장 ... 고마워! 이 경우에는 속임수를 사용하지 않는 것이 쉽습니다 ... adb가 실행중인 경우 서버에 점수를 제출하지 마십시오. – Richard

+1

추가 작업 : MotionEvent.getDeviceId() ...를 체크하면 adb! – Richard

-1

입력 된 탭 이벤트가 'synthetic/artificial/monkey'로 표시되지 않습니까?

정적 부울 isUserAMonkey() 사용자 인터페이스가 현재 원숭이에 의해 엉망이되면 true를 반환합니다.

관련 문제