매크로

조회 수 6711 추천 0 댓글 10

Frep이 그닥 빛을 보지 못하는거 같아서... 아예 su권한 없이 ADB 도움 1회만 받고 터치이벤트를 발생시키는 기법을 알아 냈는데요.

그나저나 폰내에서 터치나 키 이벤트 최대 스피드가 얼마정도 되는지 궁금합니다.

도저히 일반 프로그램으론 /dev/input/event 즉 키나 터치스크린에 접근 권한을 부여 받지 못하여 연구한 결과

루팅없이 접근가능한 임시폴더내에서 프로그램이 동작할 경우 터치이벤트를 발생시키는게 가능함을 알았습니다.

 

몇 주간 이거만 붙들고 한숨만 쉬었네요;;;

고수 분들이 보고 응용해서 좋은 프로그램을 만들어 주셨으면 합니다.

 

대략적인 구조를 그림으로 그리면요

 

임시폴더 내 어플                                                            폰에서 직접 개발하여 계속 컴파일해서 바꿔갈 수 있는 소스

--------------------------------           통신 중           -----------------------------------

터치/키 이벤트 발생기 + Socket Server   <------------->   메크로 소스 + Socket Client

--------------------------------                                -----------------------------------

 

이런 구조로 되어 있습니다.

현재 거의 초 단위이상 되야 2회 터치도 겨우 될 것으로 보입니다

일단 머 폰에서 개발한 소스가 너무 느린거라 그럴지도 모르겠지만요ㅠㅠ

 

얼마나 세월이 걸릴지도  모르겠고... 이거만 몇 주째인지...

공유 메모리를 쓰는 기법은 아직 시도를 안해봤는데요. 머 해보다가 파일 디스크립션 공유가 어려워 포기

 

도저히 속도가 못 따라가면 갈아타서 공유 메모리에 담아 일괄처리를 하든

터치이벤트 발생기를 더 복잡하게 만들고 버퍼링 할 수 있게 만드려고 합니다.

 

Frep도 거의 똑같은 방법일거라 추정합니다. 

 

0.2초의 한계를 뚫고자 했지만 넘사벽인거 같은 느낌이 자꾸드는...

왜 프로그램 언어를 지원하지 않는지 이놈은 어케 노루팅에서도 되는걸까에서 착안...

벤치마킹 했습니다.

 

이 기세를 몰아 안드로이드에서 Autohotkey를 지원하게 만들고 싶지만

아무리 노력해도 1초에 한번 터치되는 불상사가 터질까봐... 못하겠네요

 

스크린샷도 찍어봐야하고 아직도 Fully Automatic까진 먼산입니다.

이건 게임메크로가 아니고 디바이스 제어프로그램이니... 악용만 안하면 되는건가

  

07/27 Critical 문제점

1. Foreground에서 돌게 될 경우 ADB의 도움은 실제 1회지만 ADB와의 연결이 끊어지는 순간 프로세스 강제종료로 인하여 기껏 켜둔 서버가 없어지는 것으로 보임 -> 현재 결론: 죽지 않는 프로세스 Frep은 어케 된 녀석이지?!

2. 현재 Background에서 영원히 가동 할 방법 고안 연구 중...

 

07/28

1. Background에서 가동할 방법 찾았습니다 2중 nohup 기법 통함

 

07/29

1. 최종 OS관련 업데이트 이후에도 Frep도 제 방법도 모두 잘 가동하는 것을 확인

--> 현재 특성 Socket통신도 배제하고 딜레이 없이 txt로 만든 스크립트에서 명령어를 읽어서

      최대로 찍을 수 있는 속도는 초당 30회 가량 됨

 

07/30

1. 더 연구한 결과 Sendevent 함수 또한 폰 내부에서 사용 가능함 너무 쉬워서 소스 공개하기로 결정 ^^

    노트4 최신 업데이트 기준

 

sendevent_vashTS.cpp

----------------------------------------------------------------------------

#include <stdlib.h> //system 함수가 내장된 라이브러리
#include <unistd.h> //usleep 함수가 내장된 라이브러리

int main()
{
    system("sendevent /dev/input/event2 3 57 0");
    system("sendevent /dev/input/event2 3 53 10"); //원하는 x좌표(10)
    system("sendevent /dev/input/event2 3 54 10"); //원하는 y좌표(10)
    system("sendevent /dev/input/event2 3 58 50"); //원하는 압력값(50)
    system("sendevent /dev/input/event2 1 330 1");
    system("sendevent /dev/input/event2 0 0 0");
    usleep(1000000); //쉬는 시간 1초(1000000us)
    system("sendevent /dev/input/event2 3 57 -1");
    system("sendevent /dev/input/event2 1 330 0");
    system("sendevent /dev/input/event2 0 0 0");

    return 0;
}

-------------------------------------------------------------------------------

 

Android.mk

-------------------------------------------------------------------------------

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE    := sendevent_vashTS
LOCAL_SRC_FILES := sendevent_vashTS.cpp
include $(BUILD_EXECUTABLE)

--------------------------------------------------------------------------------

 

Application.mk

---------------------------------------------------------------------------------

APP_ABI := armeabi-v7a
APP_PLATFORM        := android-19

---------------------------------------------------------------------------------

 

간략 사용법

1. <아무프로젝트명>/jni/ 폴더 안에 3개의 파일을 넣는다.

2. 현재 폴더가 <아무 프로젝트명> 에 위치한 상태에서 Android ndk 컴파일 명령어 ndk-build 를 수행한다.

    (요청 시 ndk-build방법 자료 정리하겠습니다.)

3. /data/local/tmp 폴더는 일반적으로 보이지 않지만 ADB로 접근 가능한 궁극의(?) 폴더안으로 libs/armeabi-v7a 안에 생성된

   sendevent_vashTS 바이너리를 복사하여 넣는다.( adb push libs/armeabi-v7a/sendevent_vashTS /data/local/tmp/ )

4. 실행 권한을 부여한다. (adb shell "chmod 777 /data/local/tmp/sendevent_vashTS")

5. 바이너리를 실행한다. (adb shell /data/local/tmp/sendevent_vashTS)

 

이상 다른 하드웨어에서도 이 방법이 되는지 알고 싶습니다 저만 되는 불상사가 없기를;;; 

잠금해제 직후 나오는 바탕화면에서 이 소스를 가동하면 메뉴의 상단바를 쭉 내리려고 시도할랑 말랑한 그런 상태가 됩니다.

system 함수가 sendevent에도 먹는 이상 고수들은 보자마자 아하 이거 쩐다 할겁니다 거기다

adb로 직접 때리는 명령어과 거의 유사....활용도 도 매우 높습니다. 다만 이 방법으론 최고 스피드를 내기는 어려울것 같습니다만

웬만한 일은 다 할 수 있습니다

-_-;;; 


  • 김밥마리 2016.07.25 16:47
    무슨말인진 잘 모르겟지만
    히로매크로는 초당10회정도 터치까지 되는거같더라고요
  • 바슈TS 2016.07.25 17:04
    허걱..... 노력은 해보겠습니다 10회나... ^^;;;
  • 긴또깡짱 2016.07.25 17:11

    컴퓨터에 고스트마우스는 초당 수십회되는듯 ..ㅎㅎ

  • 바슈TS 2016.07.27 23:06
    제가 프로그램 개조 후 속도 개선해서 테스트 해본 결과 초당 30회 가량 찍을 수 있네요;;;
  • 바슈TS 2016.07.25 18:38

    에고 다시보니 일단 외부에서 프로세스 강제종료시 노답이네요.

    Frep도 마음만 먹으면 프로세스 강종으로 서버쪽 자꾸 다운 시킬거 같네요 ^^;;; 그래도 한번 더 연구해서 최종판까지 이 글을 수정해보겠습니다 ^^

  • 미백 2016.07.25 19:21
    좋은글 감사합니다.
  • 로기리 2016.07.28 01:26

    오랜만에 접속했는데 재밌는거 하고 계신듯하네요

    정확히 어떤 구조인진 모르겠으나 ㅎ

    히로와 같은 앱 제작하는게 맞나 싶네요 .


    adb 명령어로도 터치이벤트를 가할 수 있는데,

    소스레벨에서 adb 로 명령어를 실행시키는 방법도 있습니다.


    앱 제작은 아시는거 같은데,

    안드로이드 서비스에 관해서 찾아보시면 도움될거라 생각되네요.


  • 바슈TS 2016.07.28 08:08
    히로랑 같은 구조인지는 잘 모르겠지만
    어쨌든 저도 그런 디바이스 제어 앱 한번 만들어보려고 합니다

    adb 명령어를 소스래밸에서 제어하면 pc를 켜둬야 하고 터치속도가 느리다고 알고있습니다

    su권한이 있으면 쉽게 폰 내부에서
    sendevent 를 직접 쓸 수있는데요 히로는
    루팅을 한 이상 이 방법을 쓸거라 생각합니다

    저는 sendevent2 쯤 되는 새로운 바이너리를 만들었습니다 다만 이걸 실행하는거 조차 상당한 권한이 필요하더라구요

    헌재 히로랑 유사한 문법(?)의 터치 스크립트를 작성해서 돌릴경우 초당 30회가량 최대 스피드가 가능할 것으로 보입니다 ^^

    되도록이면 frep하고 히로의 장점을 합친 형태에 노루팅으로 구현해보려고 하는데요
  • 로기리 2016.08.02 07:47
    네이티브까지 내려가셨네요 ㅎㅎ
    system(); 쓸때 adb 없이 이벤트가 넘어가나요 ?
    전혀 생각 못했던 방법인데 제폰에서도 테스팅 한번 해봐야겠네요 ㅎㅎ
  • 바슈TS 2016.08.07 21:14

    예 넘어 갑니다!!~~
    제가 좀 바빠서 추가 개선을 빨리 못하고 있습니다만...
    시간적 여유가 생기는데로 더 업그레이드를 하도록 하겠습니다.
    sendevent를 system 명령을 통해 보내는 방식이 그리 빠르지는 않습니다.

    아직 정확한 분석할 시간도 부족한지라 확실하진 않지만
    초당 2회정도면 거의 최대 속도라서요


List of Articles
분류 제목 글쓴이 최근변경 추천
자유 외부 커뮤니티로의 유입 광고 글에 대해 피카부 2023.10.19 0/0
자유 글이 베스트로 이동될 시 권한 부여 피카부 2021.06.07 0/0
자유 추천 금지를 권유/유도하는 행위는 제재 됩니다 피카부 2020.01.15 0/0
자유 이메일로 공유 요청하는 계정 제재 피카부 2018.09.14 0/0
자유 이곳은 매크로 장터가 아닙니다. 구매/판매 글 제재 피카부 2019.02.19 0/0
자유 운영 방해 목적의 매크로 관련 글 제재 피카부 2019.09.03 0/0
자유 테일스타 회원 레벨 정보 이용하기 피카부 2022.02.17 0/0
자유 외부 유료 매크로의 추천 유도 및 광고 추천 제재 피카부 2018.04.25 0/0
자유 매크로는 [공유] 분류를 지정해주세요 피카부 2022.02.17 0/0
정보 매크로 쓰시는분 주기적으로 점수 안떨어지게 로그인해... 21 닼어벤져쑤리 2020.12.31 0/0
정보 7컨트롤러 오류 및 해결법, 팁. 9 마이콜 2019.04.10 0/0
정보 오랫동안 컴퓨터 안끄시는분들을 위해 21 닝닝2 2022.01.15 0/0
정보 [C#] 비활성 윈도우 이미지 가져오는 예제 4 Windhelm 2017.07.08 0/0
정보 아까 매크로 ptr 관련 문의드렸었는데 포가 2017.01.26 0/0
정보 매크로 녹스에서 몇가지 설정하는게 좋을 것 같아요 4 우다다냥 2020.08.19 0/0
정보 블루스택 호스트 오류 이유(예상) 1 dkdkdkd 2016.10.22 0/0
정보 쫄 안죽는 팁 같은건 없을까요? 11 thgP 2016.12.05 0/0
정보 세나 이번 업뎃이후 업뎃이 안되거나. 기기가 이버전과... 16 듀야쉬 2017.01.14 2/0
정보 루팅없이 프로그램적으로 폰내부 에서 스크린샷 찍는법 바슈TS 2016.07.30 0/0
정보 루팅없이 폰에서 터치이벤트를가하는 기법 소개 10 바슈TS 2016.08.07 0/0
정보 열쇠 천개패키지 두번사는 팁 23 세나매클롱 2016.08.15 0/-2
정보 『영웅』g매크로로 쫄작만 하기 1 단혼적혼 2016.07.11 0/0
정보 adb 이미지 가져오는게 느려도 큰 상관 없습니다. 23 씨디공장 2016.03.07 0/0
정보 #.[블루스택] 상,하 테두리(풀스크린)관련 오류 해결법 8 seadog 2016.01.29 3/0
정보 카카오토로 매크로 만드는 과정 동영상 모음 1~4단계 13 팟팟팟 2018.01.06 2/0
정보 길드오브아너 매크로 쓰고있는분 있나요?? 8 민하양 2015.12.01 0/0
정보 레이드 좌표 및 이미지 4 땀꾸루즈 2016.02.08 0/0
정보 이번의 패치가 사람들 꽤 애먹이는 것 같네요 8 시르브리스 2015.11.14 1/0
정보 ㄴㅂㄹ 레이드 좌표 1 salam 2015.11.12 0/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글