여보세요

apktool can be used to decompile Android apk's. 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, smali is an assembler for the dex format used by Dalvik, Android's Java VM.

More on apktool can be found here: http://code.google.com/p/android-apktool/
More on smali can be found here: http://code.google.com/p/smali/

Also, http://www.xda-developers.com/ has many good threads on these topics; here is a main thread:
http://forum.xda-developers.com/showthread.php?t=640592

As an example, here is the AndroidManifest.xml of SKTHiddenMenu.apk obtained after using apktool on the apk:

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0.0" package="com.motorola.skthiddenmenu"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="6" android:targetSdkVersion="6" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.HARDWARE_TEST" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_OWNER_DATA" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.HARDWARE_TEST" />
    <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES"/>
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <application android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:label="@string/engineering_menu" android:name="EngineeringMenu">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/wcdma_security" android:name="WcdmaSecurity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="com.motorola.skthiddenmenu.WcdmaSecurity.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/version" android:name="VersionInfo">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="com.motorola.skthiddenmenu.VERSION_INFO" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/security_number" android:name="SecurityNumber">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="com.motorola.skthiddenmenu.SecurityNumber.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/test_menu" android:name="TestMenu">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/test_menu2" android:name="TestMenu2">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/registration" android:name="RegistrationTime">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="com.motorola.skthiddenmenu.RegistrationTime" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/hw_test_menu" android:name="HWTestMenu">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/sw_engr_menu" android:name="SWEngrMenu">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/opening_ktf_mode" android:name="Opening KTF Mode">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/call_waiting_tone_test" android:name="CallWaitingToneTest">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/gcf_test_setting" android:name="GCFTestSetting">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/manual_ui_function_test" android:name="ManualUIFunctionTest">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/phone_info" android:name="PhoneInfo">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <receiver android:name="HiddenMenuServiceReceiver">
            <intent-filter>
                <action android:name="com.motorola.intent.action.START_HIDDENMENU_SERVICE" />
            </intent-filter>
        </receiver>
        <service android:name="HiddenMenuService" />
    </application>
</manifest>

Have fun^^
Adam
profile