c프로그램 코드 arm 크로스컴파일시 system()
글쓴이: kkd927 / 작성시간: 화, 2014/03/18 - 12:31오후
c언어로 프로그램을 만들어서 arm 크로스 컴파일러로 컴파일해 안드로이드에서 실행시키려고하는데
다른 일반 함수들을 제대로 동작이 되는데
system() 함수는 먹히지가 않네요...
system("sendevent /dev/input/event0 0 0 0");
이런식으로 "sendevent /dev/input/event0 0 0 0" 가 안드로이드 쉘상에서 쳐지도록 하고싶은데
왜 system() 함수가 먹히지 않을까요...
Forums:
glibc 와 static 링크했을 때, glibc
glibc 와 static 링크했을 때, glibc 의 system() 함수가 /bin/sh 를 찾기 때문입니다.
그러면 어떤식으로 해야 안드로이드의 쉘이 실행되게 할
그러면 어떤식으로 해야 안드로이드의 쉘이 실행되게 할 수 있을까요 ㅠ
한번 adb shell로 호출해보는건 어떨른지
http://blog.softteco.com/2011/03/android-clickonscreenxy-shell-script.html
보니까
system("adb shell sendevent $device $type $code $val");
이런 식으로 사용하더군여
즐린
이렇게 해도 안되는 군요.. ㅠㅠ
이렇게 해도 안되는 군요.. ㅠㅠ 네이버 지식인에 답변해주신 분이시군요 ㅎㅎ
http://sourceware.org/git/?p=
http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/system.c 에서 보시듯 하드 코딩되어 있습니다.
안드로이드에 /bin/sh 를 만들어주거나,
system() 함수를 직접 만들어서 사용하시는 방법이 있습니다.
system() 함수의 가장 간단한 예는 android bionic 에 있습니다.
https://android.googlesource.com/platform/bionic/+/kitkat-release/libc/unistd/system.c
뭔가 더 재미있는 것을
뭔가 더 재미있는 것을 원하신다면,
/system/lib/libc.so 를 dlopen() 해서 system 심볼을 dlsym() 으로 얻어서 사용하는 방법도 가능할 거라 생각합니다.
흐... 저에겐 너무 어려운 내용들이군요... 링크에
흐... 저에겐 너무 어려운 내용들이군요... 링크에 있는 system() 함수를 추가해서 해보아도 실행이 되지않네요..
안드로이드에 쉘을 심볼릭 링크를 이용해 /bin/sh 를 만들려고 했는데 그것도 안되네요... 조금더 도움을.....
댓글 달기