日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

修改apk二进制文件工具

發布時間:2024/1/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修改apk二进制文件工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • AXMLPrinter2.jar 反編譯AndroidManifest.xml二進制文件工具
  • AXMLEditor.jar 修改AndroidManifest.xml二進制文件工具
  • ManifestEditor.jar 修改AndroidManifest.xml二進制文件工具
  • baksmali.jar dex轉smali工具
  • smali.jar smali轉dex工具
  • aapt android自動打包工具
  • 點擊下載以上工具

    1. AXMLPrinter2.jar

    分析APK文件,可以反編譯進行明文查看AndroidManifest.xml。反編譯速度非常快,是APK反編譯修改的必備工具之一。

    如下命令:把AndroidManifest.xml二進制文件反編譯成可以閱讀的xml文件,并保存到AndroidManifest.txt

    java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

    2. AXMLEditor.jar

    AndroidManifest.xml二進制文件修改器,可以直接修改AndroidManifest.xml二進制文件。

    用法

    2.1. 插入屬性
    java -jar AXMLEditor.jar -attr -i [標簽名] [標簽唯一標識] [屬性名] [屬性值] [輸入xml] [輸出xml]
    案例:

    java -jar AXMLEditor.jar -attr -i application package debuggable true AndroidManifest.xml AndroidManifest_out.xml

    application的標簽中插入android:debuggable="true"屬性,讓程序處于可調式狀態

    2.2. 刪除屬性
    java -jar AXMLEditor.jar -attr -r [標簽名] [標簽唯一標識] [屬性名] [輸入xml] [輸出xml]
    案例:

    java -jar AXMLEditor.jar -attr -r application allowBackup AndroidManifest.xml AndroidManifest_out.xml

    application標簽中刪除allowBackup屬性,這樣此app就可以進行沙盒數據備份

    2.3. 更改屬性
    java -jar AXMLEditor.jar -attr -m [標簽名] [標簽唯一標識] [屬性名] [屬性值] [輸入xml] [輸出xml]
    案例:

    java -jar AXMLEditor.jar -attr -m application package debuggable true AndroidManifest.xml AndroidManifest_out.xml

    application的標簽中修改android:debuggable="true"屬性,讓程序處于可調式狀態

    2.4. 插入標簽
    java -jar AXMLEditor.jar -tag -i [需要插入標簽內容的xml文件] [輸入xml] [輸出xml]
    案例:

    java -jar AXMLEditor.jar -tag -i [insert.xml] AndroidManifest.xml AndroidManifest_out.xml

    因為插入標簽時一個標簽內容比較多,所以命令方式不方便,而是輸入一個需要插入標簽內容的xml文件即可。

    2.5. 刪除標簽
    java -jar AXMLEditor.jar -tag -r [標簽名] [標簽唯一標識] [輸入xml] [輸出xml]
    案例:

    java -jar AXMLEditor.jar -tag -r activity cn.wjdiankong.demo.MainActivity AndroidManifest.xml AndroidManifest_out.xml

    刪除android:name="cn.wjdiankong.demo.MainActivity"的標簽內容


    3. ManifestEditor

    此工具也是用于修改AndroidManifest二進制文件。比如,更改Manifest文件中的app包名,版本號,更改或新增app入口Application的類名,更改或新增debuggable的屬性,增加usesPermission標簽,增加meta-data標簽等。 同時,為了更方便使用,提供了直接修改Apk包中的Manifest文件,并對修改后的Apk進行簽名的功能。

    比較常見的修改AndroidManifest二進制文件的工具,大致有:apkeditor和AXMLEditor

    但是,這些工具都有一個相同的問題: 新增屬性無法被Android系統解析出來。
    比如,在application標簽下增加debuggable=true屬性,安裝后的App并不是debuggable的。

    本工具并不存在此問題。當然,本工具可能存在其他一些問題,并未作充分測試。

    此項目基于axml,并在其基礎做了二次封裝和一些優化,使用起來更加方便。

    用法

    3.1. 修改Manifest中app包名: -pkg

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -pkg com.test.newpackage

    在AndroidManifest.xml文件相同的目錄下,會生成一個新的xml文件:AndroidManifest-new.xml

    這個新的manifest文件中,package被改成了com.test.newpackage。

    3.2. 新增debuggable = true的屬性: -d

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -d 1

    新的manifest文件中,Application標簽下,增加了android:debuggable = "true"屬性。
    如果需要將debuggable改為false,只需:

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -d 0

    3.3. 修改Manifest文件中的versionCode和versionName: -vc -vn

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -vc 100 -vn 1.0.0

    新的manifest文件中,versionCode被改成了100,versionName被改成了1.0.0。

    3.4. 修改Manifest文件中的applicationName: -an

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -an com.test.new.MyApplication

    新的manifest文件中,application標簽下的name被改為:android:name="com.test.new.MyApplication"。

    3.5. 新增Manifest文件中的usesPermission標簽:-up

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -up android.permission.READ_EXTERNAL_STORAGE -up android.permission.WRITE_EXTERNAL_STORAGE

    新的manifest文件中,新增了讀寫sdcard兩個權限標簽。假如原Manifest文件中已經存在相關權限標簽,則不會增加新的。

    3.6. 增加或修改頂層的manifest標簽下的其他屬性:-ma

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -ma android-compileSdkVersion:28 -ma android-compileSdkVersionCodename:9

    新的manifest文件中,頂層的manifest標簽下新增或者修改的標簽為:

    <manifest...android:compileSdkVersion="28"android:compileSdkVersionCodename="9">

    對于非android命名空間下的屬性,去掉命令中的android-即可,暫不支持其他命名空間下的屬性的更改。比如:

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -ma platformBuildVersionCode:100

    改動的屬性是platformBuildVersionCode:

    <manifest...platformBuildVersionCode="100">

    3.7. 增加或修改application標簽下的其他屬性: -aa

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -aa android-allowBackup:false

    新的manifest文件中,application標簽下新增或者修改的標簽為:

    <application...android:allowBackup="false"... >

    對于非android命名空間下的屬性,去掉命令中的android-即可,暫不支持其他命名空間下的屬性的更改。

    3.8. 新Manifest文件輸出到指定目錄: -o

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -o ../new_androidmanifest.xml -d 1

    將debuggable改為true后的Manifest文件輸出為new_androidmanifest.xml

    3.9. Manifest文件中的新增MetaData標簽: -md

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -md xposedminversion:53 -md xposedmodule:true

    如此,文件中新增了一個Meta-data標簽:

    <meta-dataandroid:name="xposedminversion"android:value="53" /><meta-dataandroid:name="xposedmodule"android:value="true" />

    3.10. Manifest文件中的刪除MetaData標簽: -dmd

    $ java -jar ../ManifestEditor.jar ../AndroidManifest.xml -dmd xposedminversion -dmd xposedmodule

    如此,文件中,meta-data里的name為xposedminversion和xposedmodule的標簽會被清空:

    <meta-data /><meta-data />

    通過刪除和新增兩個操作可以實現對某個指定的<meta-data/>的修改。

    3.11. 修改Apk中的Manifest文件

    $ java -jar ../ManifestEditor.jar ../original.apk -o ../new_build_unsigned.apk -d 1

    將original.apk文件里的manifest的debuggable屬性改為true后,輸出未簽名的新apk: new_build_unsigned.apk。
    如果需要用內置的簽名文件對apk進行簽名,加上-s即可:

    $ java -jar ../ManifestEditor.jar ../original.apk -o ../new_build.apk -d 1 -s

    new_build.apk文件目錄會生成另外一個簽名后的apk:new_build_signed.apk。

    默認使用的是jarsigner命令對apk簽名,假如簽名失敗,可自行對new_build.apk進行簽名。


    4. baksmali-2.1.3.jar

    dex轉smali:

    java -jar baksmali-2.1.3.jar -o [輸出文件夾] dex文件

    5. smali.jar

    smali轉dex

    java -jar smali-2.1.3.jar -o 目標dex文件 [smali文件夾]java -jar smali.jar -o 目標dex文件 [smali文件夾]

    6 aapt

    android自動打包工具

    查看apk目錄

    aapt l xxx.apk

    顯示apk所具有的系統權限

    aapt d permissions xxx.apk

    打包好的apk中移除文件

    aapt r <你的apk文件> AndroidManifest.xml

    將apk中的AndroidManifest移除掉

    添加文件到打包好的apk中

    aapt a <你的apk文件> <要添加的文件路徑>

    將文件添加到打包好的apk文件中

    使用aapt查看AndroidManifest.xml內容:

    aapt dump xmltree test.apk AndroidManifest.xml

    也可以把輸出結果保存到文件

    aapt dump xmltree test.apk AndroidManifest.xml > Manifest.txt

    查看包名

    aapt dump badging .\demo.apk

    總結

    以上是生活随笔為你收集整理的修改apk二进制文件工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。