확인해보고 싶은 실행 바이너리를 공백으로 구분한 목록입니다.
바이너리 이름만 넣어도 되고 전체 경로까지 넣어도 됩니다.

list="sqlite3 busybox /system/xbin/busybox oggz sox sox0 bc gawk gnutar curl 7za file bash perl dcraw ffmpeg ffmpeg1 ffmpeg0 vim x264 emacs rsync ffprobe rvim zip convert jhead testdisk photorec "

cnt=$( echo $list | wc -w )
전체 갯수를 확인합니다.

각각 바이너리를 실행하는 루프를 돌립니다.

for i in $list ; do
  bin=${i##*/}
    ${i##*/} 는 변수 i 에서 마지막 / 이후에 오는 문자열만 가져옵니다. 바이너리 이름만 뽑는거지요.
  echo $green$bin$N
  
  방법1

  if [ "$bin" = "busybox" ] || [ "$bin" = "7za" ] || [ "$bin" = "lua" ] || [ "$bin" = "mp3gain" ] || [ "$bin" = "dcraw" ]
  then
  ver=$( $i | head -n 2 | tr " " "n" | fgrep -m 1 "." )

  방법2

  elif [ "$bin" = "ffmpeg" ] || [ "$bin" = "ffmpeg0" ] || [ "$bin" = "ffmpeg1" ] || [ "$bin" = "emacs" ] || [ "$bin" = "ffprobe" ]
  then
  ver=$( $i -version | head -n 2 | tr " " "n" | fgrep -m 1 "." )

  방법 3

  elif [ "$bin" = "zip" ]
  then
  ver=$( $i --version | head -n 3 | tr " " "n" | fgrep -m 2 "." | awk '{printf $0}' | cut -d"." -f2- )

  방법 4
  elif [ "$bin" = "jhead" ]
  then
  ver=$( $i -h | head -n 2 | tr " " "n" | fgrep -m 2 "." | awk '{printf $0}' | cut -d"." -f2- )

  방법 5

  else
  ver=$( $i --version | head -n 2 | tr " " "n" | fgrep -m 1 "." )
  fi

바이너리를 실행해서 반환되는 문자열의 앞부분 몇줄만 가져오게 합니다.
예를 들면 비지박스의 경우
busybox | head -n 2 | tr " " "n" | fgrep -m 1 "."

이렇게 실행하면 실행후 화면에 나오게 되는 2줄만 가져오게 하고 공백을 줄바꿈으로 바꿔서 마침표가 있는 첫번째 문자열 하나만 뽑게 함니다.
그게 버전 정보가 됩니다.

바이너리 따라서 --version 혹은 -h 등을 붙여야 하는 경우가 있어서 if 로 구분해서 실행해봤습니다.

  echo ${yellow}
  $ver${N}
done

echo
echo ${cyan}"checked ELF : "$cnt${N}





실행권한이 없는 메모리에 다운로드 한 경우에는 실행할 수가 없어서 직접 뽑을 수가 없는데 
억지로 진행하려면
/system/xbin 에 임시 파일로 투척하고 권한 준 다음에 이 과정을 거치면 되겠네요.

그냥 이렇게 버전 정보를 확인하는 꼼수가 떠올라서 해봤습니다. ^^*







Extra Form
첨부
7c2e9b03a5f664c2d2e2f0171913db4c150800.png  [File Size:99.1KB/Download:3]
7766f90f7f994223c712f759b343260f150800.png  [File Size:78.8KB/Download:0]
elf_ver.sh  [File Size:1.7KB/Download:3]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.

짱구삼촌 님의 SIGNATURE

profile

그래도 아직은 사랑이, 낡은 외투처럼 너덜너덜해져서 이제는 갖다 버려야 할, 그러나 버리지 못하고...

"신은 그저 질문하는 자일 뿐... 운명은 내가 던지는 질문이다. 답은 그대들이 찾아라."

댓글 3
  • profile
    언제 한번 바이너리에 대해 상세히 설명해주시면 고맙겠습니다.^^
  • profile
    저도 정확하게 잘 모릅니다. 기초부터 뭔가 해오지도 않아서 ㅠ.ㅠ 필요할 때 가끔 검색한게 전부여요. 깃허브 등에서는 아주 다양한 언어로 java perl ruby c++ 등등 코딩을 하고 배포합니다. 이걸 다운로드 하지요 주로 tar 형식등으로 여러 파일이 들어 있는데 ㅋ 이걸 툴체인을 이용해서 컴파일을 하면 ELF (Executable Library Format) 이 만들어지지요. 저건 실행 바이너리 혹은 라이브러리 so (shared object)라는 말인데 실행 바이너리는 sqlite3 등 스크립트에서 직접 실행할 수 있는 컴으로 치면 exe 같은 것이고, so 로 생성 되는건 컴으로 피면 dll 같은 것과 유사합니다. 이건 컴파일 과정에서 설정할 수 있다는 소립니다. 예를 들어서 sqlite3 오픈 소스를 다운로드 받아서 본인의 목적에 맞게 so 를 만들거나 바이너리로 만들 수 있습니다. 실제로 어떤 어플에는 libsqlite3.so 가 들어 있기도 하고 어떤 어플에는 sqlite3 바이너리가 들어 있기도 합니다. 컴파일 한번 도전해보고 싶은데 엄두가 안나는 이유는 이미지매직 같은 건 그리 유명한데도 잘 안되는지 제대로 컴파일된 버전이 안나오더라구요. ㅠ.ㅠ
  • profile
    https://files.dyne.org/zshaolin/

     요건 제가 언젠가 한번 컴파일에 도전해보려는 자료입니다.
    퉅체인에는 android ndk 와 gcc arm 버전이 있고

     소스에는 이미지매직 6.7.8.7 버전이 있습니다.

    설치하고 컴파일 하면 실행 바이너리 이미지매직이 생긴다는건데 ㅎ
    에효... 뭔가를 새로 시작하는게 겁도 나고 자신도 없고 그래요. 안해본거라 ㅠ.ㅠ

    한발 더 나가서 이미지매직은 지금 최신 버전이 6.9.1.2 인데 얘네들도 버전업을 안해주네요.
    원본 소스 그대로 쓸 수 있는 거라면 아주 쉬울텐데 뭔가를 다시 수정해야 하는 거라면 안쉽겠지요. ㅠ.ㅠ
댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2