android逆向基础:apk 反编译 重打包 重签名
apk 反编译大家都比较熟悉,这里只做一个笔记。
1 反编译 apk
apktool d perfect.apk
这样就把资源文件解压缩了, classes.dex 也反编译成了 smali 文件
2 修改 smali 文件
得到 smali 文件,现在就可以对 smali 文件进行修改和添加自己的代码了。
当然可以进一步用 dex2jar (或者 enjarify) 处理将 dex 转成 java class 文件, 再用 jd-jui 等反编译成 java 代码。
现在 apk 基本都做了混淆, 但仔细读还是基本能够明白意思的。
修改 smali 是考验你 smali 汇编的基础, 这个就是孰能生巧,多读多练了, 比 arm 汇编要简单多了。
3 重新打包
apktool b perfect
4 重签名
重新打包后没有签名信息, 还需要重新签名,因为 apk 没有签名是不能安装的。
有2种签名方法一是通过 jarsigner , jarsigner 和 keytool 其实都是 jdk 中的工具, 在 java 安装目录下可找到, 本来就是给 jar 文件签名的
jarsigner -verbose -keystore leslie.keystore -storepass -keypass -signedjar perfect-hack-signed.apk perfect-hack.apk lesliekeystore
也可以用默认的 debug key 签名, debug.keystore 一般位于 ~/.android 目录下
jarsigner -verbose -keystore debug.keystore -storepass android -keypass android -signedjar perfect_signed.apk perfect.apk androiddebugkey
如果没有 keystore 可以用 keytool 生成一个
另外一种签名方式是通过 signapk.jar 对 apk 进行签名
java -jar signapk.jar .testkey.x509.pem testkey.pk8 my.apk my_signed.apk
这是基础中的基础了,看着很简单,但自己第一次在 smali 中成功注入一行弹 toast 的代码还是用了一天的时间。
对一个已经签名的 apk 重新进行签名
第一步删除原来的签名文件
zip -d foo.apk META-INF/\*
第二步重新签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore leslie.keystore -storepass 123456 -keypass 123456 -signedjar wing_signed.apk wing.apk lesliekeystore
keystore 文件和 .pem .pk8 是可以相互转化的
android逆向基础:apk 反编译 重打包 重签名的更多相关文章
- Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正 http://blog.csdn.net/jiangwei0910410003/article/details/51 ...
- android apk反编译,重新打包,签名
apktool安装 Windows系统: 1. 首先确保系统安装有Java 2. 下载最新版本的apktool.jar https://ibotpeaches.github.io/Apktool/ 下 ...
- 【Android】Android如何对APK反编译
本文笔者粗略的介绍如何利用一些工具,对Android进行反编译,从而得到源码,希望对你有所帮助,笔者的android环境为4.4.2. 1.准备资源. 在开始之前,需要准备三项工具:apktool ...
- Android应用安全防护和逆向分析 ——apk反编译
概述 最近一直在学习Android应用安全相关和逆向分析的知识.现在移动app在安全方面是越来越重视了,特别是那些巨头企业涉及到钱的应用,那加密程度,简直是丧心病狂,密密麻麻.从这里可以看出,对于应用 ...
- Android逆向基础----APK文件结构
参考这个博客 http://www.cnblogs.com/wangtianxj/archive/2010/06/13/1757639.html http://blog.csdn.net/bupt07 ...
- Android重打包+重新签名工具Apktool Box
可实现apk反编译+重新打包+重新签名,界面如下 : 部分引用自开源代码:http://github.com/Bu4275/AutoAPKTool
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- Android apk反编译基础(apktoos)图文教程
本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...
- 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译
反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...
随机推荐
- (匹配 Hopcroft-Karp算法)Rain on your Parade -- Hdu --2389
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2389 不能用匈牙利,会TEL的,用Hopcroft-Karp Hopcroft-Karp课件 以前是寻找 ...
- 深入浅出 MappedByteBuffer
前言 java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于MappedByteBuffer操 ...
- HDU1879 继续畅通工程 2017-04-12 19:12 50人阅读 评论(0) 收藏
继续畅通工程 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- 模拟远程HTTP的POST请求
建立请求,以模拟远程HTTP的POST请求方式构造并获取处理结果 /// <summary> /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取处理结果 /// </s ...
- CentOS 7上搭建Docker环境
一.Docker介绍和安装 http://linux.cn/article-4340-1.html Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单.容器就像是轻量级的虚拟机 ...
- 纸壳CMS的插件加载机制
纸壳CMS是一个开源的可视化设计CMS,通过拖拽,在线编辑的方式来创建网站. GitHub https://github.com/SeriaWei/ZKEACMS.Core 欢迎Star,Fork,发 ...
- sql performance Kill Lock
sp_who2 active sp_lock 76 select object_name(261575970,16) select %%lockres%%,* from SessionLock(nol ...
- ansible 之条件语句 when
注册变量: 变量的另一个用途是将一条命令的运行结果保存到变量中,供后面的playbook使用.例如: - hosts: webservers tasks: - shell: /usr/bin/foo ...
- Sublime写作
下载 Sublime Text 快捷键(MAC环境) sublime text 批量删除空白行 Sublime text3!行首,行尾,批量编辑!
- [Objective-C语言教程]类别(28)
有时,可能会发现希望通过添加仅在某些情况下有用的行为来扩展现有类. 要向现有类添加此类扩展,Objective-C提供了类别和扩展. 如果需要向现有类添加方法,或许为了添加功能以便在应用程序中更容易地 ...