修改apk二进制文件工具
點擊下載以上工具
1. AXMLPrinter2.jar
分析APK文件,可以反編譯進行明文查看AndroidManifest.xml。反編譯速度非常快,是APK反編譯修改的必備工具之一。
如下命令:把AndroidManifest.xml二進制文件反編譯成可以閱讀的xml文件,并保存到AndroidManifest.txt
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt2. AXMLEditor.jar
AndroidManifest.xml二進制文件修改器,可以直接修改AndroidManifest.xml二進制文件。
用法
2.1. 插入屬性
java -jar AXMLEditor.jar -attr -i [標簽名] [標簽唯一標識] [屬性名] [屬性值] [輸入xml] [輸出xml]
案例:
application的標簽中插入android:debuggable="true"屬性,讓程序處于可調式狀態
2.2. 刪除屬性
java -jar AXMLEditor.jar -attr -r [標簽名] [標簽唯一標識] [屬性名] [輸入xml] [輸出xml]
案例:
application標簽中刪除allowBackup屬性,這樣此app就可以進行沙盒數據備份
2.3. 更改屬性
java -jar AXMLEditor.jar -attr -m [標簽名] [標簽唯一標識] [屬性名] [屬性值] [輸入xml] [輸出xml]
案例:
application的標簽中修改android:debuggable="true"屬性,讓程序處于可調式狀態
2.4. 插入標簽
java -jar AXMLEditor.jar -tag -i [需要插入標簽內容的xml文件] [輸入xml] [輸出xml]
案例:
因為插入標簽時一個標簽內容比較多,所以命令方式不方便,而是輸入一個需要插入標簽內容的xml文件即可。
2.5. 刪除標簽
java -jar AXMLEditor.jar -tag -r [標簽名] [標簽唯一標識] [輸入xml] [輸出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,只需:
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即可:
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二进制文件工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51CTO学习笔记--Linux运维故障
- 下一篇: 研发团队