마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

자바와 네이티브 코드간 함수명 동일하지 않게 가능합니까?

0 추천

악성앱 분석하고 있는 학생입니다.

 

자바의 native 메소드는 C에서 구현될때 함수명이 카멜인덱싱이라는 네이밍기법을 통해 명명되어야 한다고 알고 있습니다만,

본 질문의 경우엔 그렇지 않기에 질문 드려 봅니다.

 

예를 들어, 위의 코드는 아래의 코드의 함수명으로 작성되어야 연결되는 것으로 알고 있습니다.

 

제가 궁금한것은 위의 경우가 아니어도 Java / C 간 연동이 가능하냐는 것입니다.

 

다음은 제가 보고있는 중국의 한 악성앱의 소스중 일부 입니다.

 

위와 같이 메소드들을 만들어 놨네요.. 위에서 등장한 secexe.so 파일을 Ida라는 툴로 디컴파일 해보았습니다.

메소드 리스트들을 보여드릴게요

 

 

없습니다ㅠㅠ 

.rodata 섹션쪽에 보면 base64로 인코딩된 수많은 문자열들이 있는데 일반적이지 않은 포맷을 사용 했는지 디코딩이 안되어 확인은 못했습니다. 아마 위에 함수 리스트들중에 의미없는 이상한 문자열을 사용하는 함수랑 뭔가 연관이 있는 것 같긴 한데 말입니다..

 

이게 가능한가요?

 

추가로 악성앱을 다운 받을 수 있는 링크 포함합니다.

악성앱 링크입니다. 설치시 문제에 대한 책임은 본인에게 있습니다.

http://www.apk.anzhi.com/data1/apk/201312/12/com.ihandysoft.ledflashlight.ganpipa_56262300.apk

 

+ 참고, 추가로 또 다른 악성앱 에서는 포인터함수를 이용하여 구현한 모습을 볼수 있었습니다.

아래의 코드와 연결됩니다.(되는것으로 추정) (스샷으로 올리려 했는데 개수 제한에 걸렸네요..)

.data:0001A3DC    DCD aIiiiBV             ; "(IIII[B)V"
.data:0001A3E0    DCD java_native_api_main_NetworkHandler
.data:0001A3E4    DCD aA                  ; "a"
.data:0001A3E8    DCD aIV                 ; "(I)V"
.data:0001A3EC    DCD java_native_api_main_TimerHandler
.data:0001A3F0    DCD aA                  ; "a"
.data:0001A3F4    DCD aLjavaLangObjec     ; "(Ljava/lang/Object;)V"
.data:0001A3F8    DCD java_native_api_daemon_StartService
.data:0001A3FC    DCD aA                  ; "a"
.data:0001A400    DCD aLjavaLangObjec     ; "(Ljava/lang/Object;)V"
.data:0001A404    DCD java_native_api_smsservice_StartSmsService
.data:0001A408    DCD aA                  ; "a"
.data:0001A40C    DCD aLjavaLangStr_5     ; "(Ljava/lang/String;Ljava/lang/String;)V"...
.data:0001A410    DCD java_native_api_smsservice_SMSService
.data:0001A414    EXPORT g_szJavaLangStringZ
.data:0001A414    g_szJavaLangStringZ DCD aLjavaLangStr_8 ; DATA XREF: moon_is_file_exist+50r
.data:0001A414                                         ; moon_delete_file+58r ...
.data:0001A414 ; .data         ends                    ; "(Ljava/lang/String;)Z"
.data:0001A414
 
박느낌 (120 포인트) 님이 2014년 2월 28일 질문
박느낌님이 2014년 2월 28일 수정

1개의 답변

0 추천

"자바와 네이티브 코드간 함수명 동일하지 않게 가능합니까" 에 대해서

제가 알기로는 안됩니다.

추가로, 네이티브코드와 자바코드를 이어주는 인터페이스를 보시면

패키지명과 함수명 사이에 자동으로 언더바를 사용해 연결시켜주기때문에 언더바를 사용할 수 없습니다.

초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 28일 답변
댓글 감사합니다.
정책상 저도 안된다고 알고 있습니다만, 뭔가 우회하는 방법이 있는 듯 보입니다.
여러 앱을 분석해본 결과 위와 같은 문제의 앱이 종종 발견 되네요.
끵..
음 다시보니 ㅎㅎ 느낌님이 궁금하신건 카멜인덱싱이 아니어도 되냐는 거에용? ex) 함수명 a1 이런거요?
...