Android 쉘에서 자체 실행 파일 실행


14

특정 명령 줄 도구가 필요하며 Linux 셸에서 C 프로그램을 만들었습니다. ARM 크로스 컴파일러로 프로그램을 컴파일했습니다. 그런 다음 프로그램을 Android 파일 시스템으로 옮기고 실행하려고했습니다.

출력이 권한이 거부되었습니다.

Android 파일 시스템에서 컴파일 된 프로그램을 실행하려면 어떻게해야합니까?


시도 chmod +x pgm하고 ./pgm또?
ott--

8
아마도 당신은 그것을 noexec플래그 와 함께 장착 된 sdcard에 배치했을 것입니다 . 휴대 전화의 내부 저장소로 이동하거나 쉘 (예 :)을 통해 실행해야합니다 sh /path/to/myexecutable.
Izzy

답변:


14

실행 파일을 SD 카드에 업로드하기 위해 adb push를 사용했다고 가정합니다. 불행히도 sd-card는 항상 "noexec"로 마운트되어있어 여기서 아무 것도 실행할 수 없습니다.

따라서 실행 파일을 로컬 파일 시스템 (예 : / data / local)에 복사해야합니다. 장치가 루팅되지 않았거나 BusyBox가 설치되어 있지 않은 경우 "cp"명령이 없습니다. 간단히 cat :을 사용할 수 있습니다 cat /sdcard/myprog > /data/local/myprog.

그런 다음 실행 파일에 대한 실행 권한을 설정해야합니다. Android의 Chmod는 일반적으로 "u + x"구문을 지원하지 않습니다. 따라서 전화해야합니다 chmod 555 /data/local/myprog.

그런 다음 실행 파일을 실행할 수 있습니다 /data/local/myprog..


답장을 보내 주셔서 감사합니다. 실제로 문제는 이진 생성에있었습니다. 올바르게 생성되지 않았습니다! ;)
Nuno Santos

장치에 busybox가 있지만이 명령은 다음과 같습니다 : shell @ n200C : / $ busybox cp / storage / external_storage / sda1 / ffmpeg / data / ------ show error = cp : '/ data / ffmpeg를 만들 수 없습니다 ': 허가 거부
Dr.jacky

tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directory파일이 있지만
Necktwi

/ data / local은 내 장치에서 루트 액세스 권한이 필요합니다. 대신 / data / local / tmp를 사용하십시오
Chan Tzish

10

먼저와 같은 디렉토리로 푸시해야합니다 /data/local/tmp. 그런 다음을 사용하여 해당 권한을 설정해야합니다 chmod 755 executable. 그 후에는 다음과 같이 실행할 수 있습니다 ./executable.

전체 단계는 다음과 같습니다.

adb 푸시 실행 파일 / data / local / tmp
adb 쉘
cd / data / local / tmp
chmod 755 실행 파일
./ 실행 파일

또는 자산 폴더에서 파일을 실행하려면 파일을 데이터 폴더로 복사해야합니다 /data/data/packagename/. 그런 다음 Fileclass를 사용하여 파일 setExecutabletrue대한 플래그를 설정하고 Process 클래스 또는 Root Tools 와 같은 타사 패키지에서 실행하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.