600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > android apk反编译打包签名

android apk反编译打包签名

时间:2021-01-31 11:12:27

相关推荐

android apk反编译打包签名

APK反编译打包签名

一、JDK安装和环境配置

1. jdk1.6下载地址:/jdk6/

jdk-6u17-windows-i586.exe

2. 安装,一路默认即可。

3. 环境变量设置

xp系统:我的电脑 -> 属性 -> 高级 -> 环境变量

新建JAVA_HOME变量,变量值为:C:\Program Files\Java\jdk1.6.0_17

新建CLASSPATH变量,变量值为:C:\Program Files\Java\jdk1.6.0_17\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_17\lib\tools.jar;.(最后有个.号)

修改Path变量,加上:C:\Program Files\Java\jdk1.6.0_17\bin

两次确定值后,环境变量就设置ok了

可以去cmd中输入javac,列出很多java命令就表示正常安装了。

参考网址:/thread-1218428-1-1.html

windows下配置java环境

二、反编译Apk得到Java源代码(这个没弄成功)

1. 工具下载:需用到dex2jar和JD-GUI这2个工具

dex2jar下载地址:/files/dex2jar-0.0.7-SNAPSHOT.zip

JD-GUI下载地址:

windows版JD-GUI:/files/jdgui.zip

Linux版JD-GUI:/files/jd-gui-0.3.2.linux.i686.tar.gz

2. 步骤:

首先找到Android软件安装包中的classes.dex,把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件

把classes.dex拷贝到dex2jar.bat所在目录。在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar

运行JD-GUI工具(它是绿色无须安装的)打开上面的jar文件,即可看到源代码。

参考网址:/thread-90027-1-1.html

如何反编译APK

三、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。

1. 工具下载:在/p/android-apktool/下载获得apktool1.4.1.tar.bz2和apktool-install-windows-r04-brut1.tar.bz2这两个包。

2. 将上面的两个包解压到统一个目录下:aapt.exe(apktool-install-windows-r04-brut1.tar.bz2)、apktool.bat(apktool-install-windows-r04-brut1.tar.bz2)、apktool.jar(apktool1.4.1.tar.bz2)。

3. 打开cmd窗口,进入apktool.bat所在的目录,输入:

apktool d E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv2.2.3.apk E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv // 命令行解释:apktool d 要反编译的文件 输出文件夹

如果没有写上输出文件夹的话,那么将会在apktool.bat所在的目录下新建一个apk同名的目录,apk的内容内反编译到这里。

特别注意的是,如果有类似下面的错误的话:

Exception in thread "main" unacceptable character #FFFD special characters are n

ot allowed

in "<reader>", position 28

at org.yaml.snakeyaml.reader.StreamReader.checkPrintable(StreamReader.ja

va:68)

at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:159)

at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:117)

at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:106)

...

这个貌似是由于apk的名字是中文引起的,用英文命名就没有这个错误了。

打开输出目录,可以看到women需要的各种资源了。

4. 可以对这些资源源码进行修改,重新打包成apk。

5.编译打包apk,输入apktool b E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apk\Ltv_new2.2.3.apk (apktool b apk目录 apk输出文件)

如果没有指定输出目录和文件,那么会在apk目录下的dist目录中有一个out.apk就是打包出来的了。

E:\h200\APK_Decompile-Package_Dexopt\Decompile-Package\apks\Ltv\dist\out.apk

参考网址:

/thread-90027-1-1.html

/%C5%F4%C8%A5%C8%CB%C1%F4/blog/item/ee2a5310ad7118c1c3fd78be.html

一个APK反编译利器Apktool(android汉化)

四、签名

上面apktool打包出来的apk还没有签名,所以需要对其进行签名才能使用。

签名工具和方法见/bbs/thread-21261-1-1.html

这里我用的签名工具是:APK-sign.rar,解压之后得到一个sign_pack.bat的批处理文件与一个_Data的文件夹。

本工具对AndroidManifest.xml中设置了android:sharedUserId的apk签名无效,如android:sharedUserId="android.uid.system"。

1. 将apk改成以zip结尾的后缀,然后解压

2. 将解压之后的文件夹拷贝到APK-sign目录下(与sign_pack.bat统一目录)

3. 我们可以直接将这个apk解压后的目录拖到sign_pack.bat脚本上,或者在cmd命令下输入:sign_pack.bat apk解压目录

4. 最后APK-sign目录下得到一个有安卓网名字的文件夹了,签名打包好的APK程序就在这文件夹里了

参考网址:/thread-21261-1-1.html

个性玩转小绿人——从APK图标开始(个性图标傻瓜教程)

另外一种签名如下:

签名我们需要用到的工具是Auto-sign。它主要是利用批处理命令,使用signapk.jar对APK文件进行签名的。你可以用记事本打开Sign.bat,看看它的具体调用关系。关键如下:

java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk

所以pk8和x509.pem文件都是放在目录:build/target/product/security下的:

$ ls

common media.pk8 media.x509.pem platform.pk8 platform.x509.pem README shared.pk8 shared.x509.pem testkey.pk8 testkey.x509.pem

而signapk.jar位于:./vendor/mediatek/ginwave73_gb/artifacts/out/host/linux-x86/framework/signapk.jar

通常在编译过程中会拷贝到out/host/linux-x86/framework/中用来签名。

在android的编译系统中,对apk签名的函数和上面的语句一样,定义在文件:build/core/definitions.mk +1458

# Sign a package using the specified key/cert.

#

define sign-package

$(hide) mv $@$@.unsigned

$(hide) java -jar $(SIGNAPK_JAR) \

$(PRIVATE_CERTIFICATE) $(PRIVATE_PRIVATE_KEY)$@.unsigned$@.signed

$(hide) mv$@.signed$@

endef

例如:java -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 DataDialog.apk DataDialog_signed.apk

下面是编译OTA升级包的时候对它的签名过程

unzipping target target-files...

running: unzip -o -q out/target/product/ginwave73_gb/obj/PACKAGING/target_files_intermediates/ginwave73_gb-target_files-user.lizhiguo.zip -d /tmp/targetfiles-NyLMw3

--- target info ---

fstab = (dict) {'/sdcard': <common.Partition object at 0x1f39f50>, '/cache': <common.Partition object at 0x1f39dd0>, '/boot': <common.Partition object at 0x1f39d90>, '/system': <common.Partition object at 0x1f39f90>, '/recovery': <common.Partition object at 0x1f39e90>, '/data': <common.Partition object at 0x1f39e10>, '/misc': <common.Partition object at 0x1f39e50>}

mkyaffs2_extra_flags = (str) -c 2048 -s 64

recovery_api_version = (int) 3

tool_extensions = (str) mediatek/config/out/ginwave73_gb/../common

using device-specific extensions in mediatek/config/out/common

unable to load device-specific module; assuming none

running: mkbootfs /tmp/targetfiles-NyLMw3/BOOT/RAMDISK

running: minigzip

running: mkbootimg --kernel /tmp/targetfiles-NyLMw3/BOOT/kernel --board 1322807678 --ramdisk /tmp/targetfiles-NyLMw3/BOOT/ramdisk --output /tmp/tmpwV7yFb

running: mkbootfs /tmp/targetfiles-NyLMw3/RECOVERY/RAMDISK

running: minigzip

running: mkbootimg --kernel /tmp/targetfiles-NyLMw3/RECOVERY/kernel --ramdisk /tmp/targetfiles-NyLMw3/RECOVERY/ramdisk --output /tmp/tmp3XoSLS

running: imgdiff /tmp/tmpN31ZO7 /tmp/tmp2YZWcz /tmp/tmpudN8Kg

running: openssl pkcs8 -in build/target/product/security/testkey.pk8 -inform DER -nocrypt

running: java -Xmx1024m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpsbUI4i out/target/product/ginwave73_gb/ginwave73_gb-ota-user.lizhiguo.zip

参考网址:/forum.php?mod=viewthread&tid=68732

APK反编译破解方法与加密措施

来自:/lizhiguo0532/article/details/7077450

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。