【APP逆向】从反编译到打包签名

阅读: 评论:0

【APP逆向】从反编译到打包签名

【APP逆向】从反编译到打包签名

目录

        • 一、反编译
        • 二、回编译
        • 三、apk文件进行重新签名
          • 1、生成签名用的证书
          • 2、用证书对apk文件进行签名


一、反编译
apktool d C:Usersv_mcsongDesktopbanban.apk 

报错1:

E:反编译工具包apktool>apktool d C:Usersv_mcsongDesktopbanban.apk
I: 
I: Loading 
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc fileat s.decoder.ARSCDecoder.decode(ARSCDecoder.java:56)at ResPackagesFromApk(AndrolibResources.java:491)at s.AndrolibResources.loadMainPkg(AndrolibResources.java:74)at ResTable(AndrolibResources.java:66)at brut.ResTable(Androlib.java:50)at brut.ResTable(ApkDecoder.java:189)at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)at brut.dDecode(Main.java:146)at brut.apktool.Main.main(Main.java:77)
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)at s.ad(StringBlock.java:44)at s.adPackage(ARSCDecoder.java:102)at s.adTable(ARSCDecoder.java:83)at s.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)... 8 more该报错是由于apktool.jar版本过旧 重新下载新的:/

报错2:

E:反编译工具包apktool>apktool d C:Usersv_mcsongDesktopbanban.apk
I: Using Apktool 2.4.1 on banban.apk
I: Loading 
I: l 
I: Loading resource table from file: C:Usersv_mcsongAppDataLocalapktoolframework1.apk
I: Regular 
I: 
I: Decoding values */* 
I: Baksmaling 
I: Baksmaling 
I: Baksmaling assets/
Exception in thread "main" org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: cf 77 4c c7 9b 21 01 cdat org.jf.dexlib2.util.DexUtil.verifyDexHeader(DexUtil.java:93)at org.jf.dexlib2.Version(DexBackedDexFile.java:111)at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:78)at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:138)at org.jf.dexlib2.dexbacked.DexFile(ZipDexContainer.java:181)at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:90)at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:39)at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:96)at brut.androlib.ApkDecoder.decode(ApkDecoder.java:164)at brut.dDecode(Main.java:170)at brut.apktool.Main.main(Main.java:76)

提示很明显,就是非法Dex,这是因为apk里有加密过后的dex文件,比如有些apk的assets目录下有加密后的Dex文件,添加–only-main-classes参数即可

反编译成功:

apktool d C:Usersv_mcsongDesktopbanban.apk -only-main-classes
E:反编译工具包apktool>apktool d C:Usersv_mcsongDesktopbanban.apk -only-main-classes
I: Using Apktool 2.4.1 on banban.apk
I: Loading 
I: l 
I: Loading resource table from file: C:Usersv_mcsongAppDataLocalapktoolframework1.apk
I: Regular 
I: 
I: Decoding values */* 
I: Baksmaling 
I: Baksmaling 
I: Copying raw assets/39285EFA.
I: Copying assets 
I: Copying 
I: Copying 
I: Copying META-INF/services directory
二、回编译
E:反编译工具包apktool>apktool b banban

报错:

E:反编译工具包apktool>apktool b banban
I: Using Apktool 2.4.1
I: Checking whether sources 
I: Smaling smali folder into 
I: Checking whether sources 
I: Smaling smali_classes2 folder into 
I: Checking whether resources 
I: 
W: E:反编译工具包apktooll:1: error: No resource identifier found for attribute 'compileSdkVersion' in package 'android'
W:
W: E:反编译工具包apktooll:1: error: No resource identifier found for attribute 'compileSdkVersionCodename' in package 'android'
W:
W: E:反编译工具包apktooll:49: error: No resource identifier found for attribute 'appComponentFactory' in package 'android'

1、下载最新版本的apktool:/
2、执行下面这条命令:

E:反编译工具包apktool>java -jar apktool.jar empty-framework-dir     
I: Removing 1.apk 

回编译成功:

E:反编译工具包apktool>apktool b banban
I: Using Apktool 2.4.1
I: Checking whether sources 
I: Checking whether sources 
I: Checking whether resources 
I: 
I:  (/lib)
I:  (/kotlin)
I:  (/META-INF/services)
I: Building 
I: Copying unknown 
I: 


三、apk文件进行重新签名
1、生成签名用的证书
keytool -genkeypair -alias roland.keystore -keyalg RSA -validity 500000 -keystore roland.keystore

参数详解:

稍微解释一下这个命令,keytool是JDK自带的一个命令行证书生成工具,参数-genkeypair表示要生成证书,除此之外还有一些子参数:

a)参数-alias是证书的别名,这里是roland.keystore,这个别名待会在后面签名的时候要使用到;b)参数-keyalg表示加密的类型,这里使用RSA;c)参数-validity表示证书的有效期限,这里设置的是500000天,足够长了;d)参数-keystore表示要生成的证书文件名是roland.keystore,注意这个和别名不一样,虽然我写成一样了,但实际上可以完全不一样。
E:反编译工具包apktool>keytool -genkeypair -alias roland.keystore -keyalg RSA -validity 500000 -keystore roland.keystore输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?[Unknown]:  s
您的组织单位名称是什么?[Unknown]:  s
您的组织名称是什么?[Unknown]:  s
您所在的城市或区域名称是什么?[Unknown]:  s
您所在的省/市/自治区名称是什么?[Unknown]:  s
该单位的双字母国家/地区代码是什么?[Unknown]:  s
CN=s, OU=s, O=s, L=s, ST=s, C=s是否正确?[否]:  y输入 <roland.keystore> 的密钥口令(如果和密钥库口令相同, 按回车):
再次输入新口令:Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore roland.keystore -destkeystore roland.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

2、用证书对apk文件进行签名
jarsigner -verbose -keystore roland.keystore -signedjar test_signed.apk test.apk roland.keystore

再稍微解释一下这些参数

a)参数-verbose表示要显示签名过程中的详细信息,如果出了问题方便查看,不要也可以;b)参数-keystore表示签名所需要的证书,这里指定的是上一个步骤生成的证书,注意如果不在当前目录下的话,请指定路径名,保证程序一定可以访问到那个keystore;c)参数-signedjar表示要签名的apk文件,签名后的apk文件和证书的别名。注意这里是反的,紧接着-signedjar后面的是签名后的apk文件名,再之后才是要签名的apk文件,最后是证书的别名,这个别名就是在上一步中,参数-alias后面写的名字。
E:反编译工具包apktoolbanbandist>jarsigner -verbose -keystore roland.keystore -signedjar banban_signed.apk banban.apk roland.keystore输入密钥库的密码短语:正在添加: META-INF/MANIFEST.MF正在添加: META-INF/ROLAND_K.SF正在添加: META-INF/ROLAND_K.RSA正在签名: l正在签名: classes.dex正在签名: classes2.dex正在签名: kotlin/annotation/annotation.kotlin_builtins正在签名: kotlin/ArithmeticException.kotlin_metadata正在签名: kotlin/AssertionError.kotlin_metadata正在签名: kotlin/BuilderInference.kotlin_metadata正在签名: kotlin/ClassCastException.kotlin_metadata正在签名: kotlin/collections/AbstractCollection.kotlin_metadata正在签名: kotlin/collections/AbstractIterator.kotlin_metadata正在签名: kotlin/collections/AbstractList.kotlin_metadata正在签名: kotlin/collections/AbstractMap.kotlin_metadata正在签名: miui_push_version正在签名: play-services-base.properties正在签名: play-services-basement.properties正在签名: play-services-location.properties正在签名: play-services-places-placereport.properties正在签名: play-services-tasks.properties正在签名: push_version正在签名: okhttp3/internal/publicsuffix/NOTICE正在签名: okhttp3/internal/
>>> 签名者X.509, CN=s, OU=s, O=s, L=s, ST=s, C=s[可信证书]jar 已签名。警告:
签名者证书为自签名证书。


参考文章:

本文发布于:2024-01-28 10:26:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064087666758.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:反编译   APP
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23