签名和反编译总结
来源:互联网 发布:京东算法工程师待遇 编辑:程序博客网 时间:2024/05/22 06:57
主要讲下怎么简单的使用工具进行重新签名和反编译,要看详细介绍的可以自行百度。
重新签名的要点:解压apk文件删掉META-INF目录下的CERT.SF和CERT.RSA两个文件(修改apk后缀为rar,删掉后再改为apk)
然后,用Android提供的SignApk工具来签名,包括jarsigner进行keystore签名和signapk.jar签名。
即 使用:java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk
或者jarsigner -verbose -keystore a.keystore -signedjar wendy_signed.apk wendy.apk a.keystore
后者也可以使用eclipse来使用keystore秘钥签名。
下面说下秘钥的生成:
1.testkey.x509.pem testkey.pk8的生成
Android 提供了一个脚本 mkkey.sh ( build/target/product/security/mkkey.sh ),用于生成密钥,生成后在应用程序中通过Android.mk 中的 LOCAL_CERTIFICATE 字段指名用哪个签名
i. 生成公钥
openssl genrsa -3 -out testkey.pem 2048
其中 -3 是算法的参数, 2048 是密钥长度, testkey.pem 是输出的文件
ii. 转成 x509 格式(含作者有效期等)
openssl req -new -x509 -key testkey.pem -out testkey.x509.pem -days 10000 -subj ‘/C=US/ST=California/L=MountainView/O=Android/OU=Android/CN=Android/emailAddress=android@android.com ’
这个是一些个人或者公司信息,可以参照着eclipse生成keystore的过程对照着看看。
iii. 生成私钥
openssl pkcs8 -in testkey.pem -topk8 -outform DER -out testkey.pk8 -nocrypt
把的格式转换成 PKCS #8 ,这里指定了 -nocryp ,表示不加密,所以签名时不用输入密码
或者使用源码下的秘钥build/target/product/security/下有4组秘钥,例如platform.pk8和platform.x509.pem等。
2.keystore的生成可以在eclipse指引下进行,也没用过,略过。
—————————————————————割割割—————————————————————————
下面是apk反编译
这里有2个概念,apk整体的反编译和apk的classes.dex的反编译。
apk的反编译得到manifest清单文件以及资源文件和最重要的smali文件,smali语法有兴趣的可以自行学习了解,我也不懂,看着头大。
classes.dex反编译的就是java文件了,很常见的,不过逻辑也很混乱,并且代码混淆过了的话更加不好理清。
这里经常使用的就是apktool工具和dex2jar,jdgui。
前者使用的指令如下:java -jar apktool.jar d 源apk 目标文件夹
例如如下的命令:java -jar apktool.jar d aa.apk a/
dex2jar和jdgui。就是解压apk文件复制出classes.dex文件,使用里面的bat文件将dex文件转换成class文件,使用jdgui可以直接打开。
总结:最简单的apk破解就是拿到java代码后,绞尽脑汁的了解需要的信息和程序的逻辑,然后对照java文件找到smali代码里相应的实现,修改smali文件,再将smali编译成apk,并且重新签名,然后按照运行。当然,可能有些使用了其他的更复杂的验证技术,咱也不懂,略...
附上apktool和dex2jar,jdgui。
- 签名和反编译总结
- android反编译和签名
- Android反编译和打包签名
- apk反编译和打包,签名
- Android签名和反编译的学习
- apk 反编译和重新签名打包命令
- apk文件编译、修改、反编译和签名
- apk打包和反编译四、为你的应用程序签名
- apk打包和反编译六、apk的重签名
- Android程序反编译、重新编译和签名的方法
- Android:apk反编译步骤,打包、签名和逆向工程经验总结
- apk打包和反编译六、apk的重签名
- apk文件反编译、回编译和签名之完全教程
- Android:apk反编译步骤,打包、签名和逆向工程经验总结
- Android安全(一)——apk签名和反编译
- apk权限和签名总结
- apktool 反编译+签名
- ANDROID 反编译打包签名
- nginx基本数据类型--字符串
- 更改jboss 6.0 Final的默认根应用或默认主页
- Java程序调用iReport(傻瓜式教程)
- 调试的小知识:单步执行命令step into/step out/step over的区别
- 通过chrome禁用掉一个http请求。
- 签名和反编译总结
- OpenOffice的安装
- java jdbc 判断数据库表是否存在
- 【Android UI】 Shape详解
- sqlserver实现结果集的拆分(干货)
- hashmap和hashtable的区别
- struct vm_area_struct
- ASP.NET - Web 服务器控件
- Rails captcha in ubuntu system