관리 메뉴

JHLBLUE

안드로이드 smali 패치하기2 본문

Android

안드로이드 smali 패치하기2

JHLBLUE 2019. 1. 22. 16:36

원본코드



smali 코드 패치로 세 번째 텍스트뷰 추가하기


1. smali 코드 분석하기



MainActrivity.smali 코드 중 line12, line13, line14는 뷰의 객체 생성과 관련된 코드로 추측 가능

line12와 line14는 findViewById 함수를 호출하여 레지스터에 해당 객체를 저장하는 코드, line13은 TextView 생성자를 호출한 뒤 해당 객체를 레지스터에 저장하는 코드



line15는 addView 함수를 호출하여 line13에서 생성된 TextView를 LinearLayout에 추가하도록 addView 함수를 호출하는 코드




line17~18은 setText 함수를 호출하여 텍스트를 표시하도록 하는 코드


2. smali 코드 패치하기



새로 뷰 객체 하나를 생성하고 이를 저장할 레지스터를 추가로 선언하기 위해 locals의 값에 1 추가 -> v2 레지스터 사용 가능



TextView 생성자 호출 및 v2 레지스터에 새로 생성된 TextView 객체를 저장하는 코드 추가


LinearLayout에 텍스트뷰를 추가하기 위해 addView 함수 호출, 인자는 v2로



새로 생성한 텍스트뷰에 텍스트를 표시하기 위해 setText 함수 호출


빌드, signing 후 설치 결과 (AVD에서 텍스트 일부가 잘림)


패치에 사용된 apk 파일

test2.apk


Comments