http://ibotpeaches.github.io/Apktool/

 

 

apktool.bat

 

apktool_2.0.0.jar

 

 

A tool for reverse engineering Android apk files

$ apktool d test.apk
I: Using Apktool 2.0.0 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.0.0 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
$

Apktool Build Status Software License Project Status

A tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making some modifications; it makes possible to debug smali code step by step. Also it makes working with an app easier because of project-like file structure and automation of some repetitive tasks like building apk, etc.

It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms, analyzing applications and much more.

 

Posted by steloflute

http://visu4l.tistory.com/412

 

안드로이드 앱 분석 시작 방법


일반 앱을 분석하기 위해 설치 파일인 안드로이드 설치 파일인 APK을 알아야한다.


APK (Android Package)

> 안드로이드 플랫폼에서 어플리케이션 설치를 위해 배포되는 패키지 파일

> 압축 ZIP 파일 포맷 형태로 구성

> 주요 구성 요소

- AndroidManifest.xml : 앱에 대한 정보 및 실행권한 등의 정보를 가지는 xml

- classes.dex : 달빅 가상머신에서 동작하는 바이너리 실행 파일

- /res : 리소스 파일 폴더

- META_INF : 인증파일

 

압축파일 형식이기 때문에 압축 프로그램으로 확인 가능하다. 또한 압축 해제도 가능하다.



Dex(Dalvik Executable)

> 달빅 가상 머신에 맞게 클래스 파일을 바이트 코드로 변환한 파일이다.

> APK 파일에 포함된 classes.dex파일이 이에 해당한다.

> 자바 코드를 컴파일하여 클래스 파일을 만든후 다시 DEX도구로 압축한 것이다.



APK 분석을 위한 툴 준비

dex2jar : https://code.google.com/p/dex2jar/

JD-GUI : http://jd.benow.ca/


dex2jar : dex 파일을 jar 파일로 변환해주는 툴

jd-jui : java decompile tool



dex2jar로 APK 디컴파일

> Command : dex2jar.bat [APK File or Dex File]

> 위와 같이 간단히 명령어를 입력하면 file_dex2jar.jar 파일이 같은 디렉토리에 생성이 된다.






Jar 파일 디컴파일 툴

> jd-gui 를 이용해서 jar 파일을 열어본다.

> 소스가 보이는 것을 확인할수 있다.





소스 분석 방법은 보통 main 함수부터 시작하지만 안드로이드 앱은 브로드캐스트를 받거나 서비스 되는 부분도 있기때문에

분석이 필요한 곳을 찾아서 진행하면된다.



APKTOOL을 이용한 APK 디컴파일

apktool : https://code.google.com/p/android-apktool/


command : java -jar apktool.jar d [APK_FILE] [result_dir_name]

apktool에 d 옵션 decompile 옵션을 통해 apk 디컴파일을 진행한다.



그리고 결과 파일은 아래와 같이 생성된다.

내부 리소스가 풀리고, dex 파일이 smali 디렉토리 내부에 디컴파일되어 떨어지게 된다.






* APKTOOL을 이용한 APK 리패키징

command : java -jar apktool.jar b [decompiled_apk_result_dir_name]

b 옵션으로 리패키징(build)가 가능하다.

빌드가 완료되면 디렉토리내에 dist 폴더에 apk 파일이 생성이 된다.

이렇게 생성된 apk는 Sign되어 있지 않아 keystore로 sign 후에 설치 및 테스트가 가능하다.


 




* 처음 보는 APK에 Main Activity를 어떻게 찾을까?

Main Activity를 찾는 이유는 일반적인 C/C++에서 소스를 분석할때 main 함수부터 시작해 나가는데

안드로이드에서는 처음 실행되는 Main Activity에 onCreate 함수부터 시작되기 때문이다.

그런데 Main Activity는 개발자 마음대로 이름을 변경할수 있다.


그러면 처음실행 되는 Activity를 어떻게 찾는가?

모든 Activity는 AndroidManifest.xml 에 등록이 되어있어야 사용이 가능하다.

apktool을 이용하여 디컴파일하면 AndroidManifest.xml 파일도 같이 나온다.

이 파일에 <activity></activity> 부분을 모두 찾는다.

그리고 해당 태그 하위에 <intent-filter> 태그에 <category android:name="android.intent.category.LAUNCHER" />

런처 카테고리 태그를 사용한 액티비티를 찾으면된다.


해당 태그가 있다면 <activity android:name=""> 액티비티 태그에 android:name을 찾는다.

해당 name이 처음 구동되는 activity name이다.



 

 

 

Posted by steloflute

http://www.w3schools.com/js/js_events_examples.asp

 

Examples of using JavaScript to react to events


Input Events

onblur - When a user leaves an input field
onchange - When a user changes the content of an input field
onchange - When a user selects a dropdown value
onfocus - When an input field gets focus
onselect - When input text is selected
onsubmit - When a user clicks the submit button
onreset - When a user clicks the reset button
onkeydown - When a user is pressing/holding down a key
onkeypress - When a user is pressing/holding down a key
onkeyup - When the user releases a key
onkeyup - When the user releases a key
onkeydown vs onkeyup - Both


Mouse Events

onmouseover/onmouseout - When the mouse passes over an element
onmousedown/onmouseup - When pressing/releasing a mouse button
onmousedown - When mouse is clicked: Alert which element
onmousedown - When mouse is clicked: Alert which button
onmousemove/onmouseout - When moving the mouse pointer over/out of an image
onmouseover/onmouseout - When moving the mouse over/out of an image
onmouseover an image map


Click Events

Acting to the onclick event
onclick - When button is clicked
ondblclick - When a text is double-clicked


Load Events

onload - When the page has been loaded
onload - When an image has been loaded
onerror - When an error occurs when loading an image
onunload - When the browser closes the document
onresize - When the browser window is resized


Others

What is the keycode of the key pressed?
What are the coordinates of the cursor?
What are the coordinates of the cursor, relative to the screen?
Was the shift key pressed?
Which event type occurred?

Examples explained

 

Posted by steloflute


Generate bitcoin for me

What's this?

티스토리 툴바