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 ...
随机推荐
- Modelsim设置数据以模拟波形显示
选中希望以模拟波形显示的信号,右击选择format—>Analog(automatic) 如果你的数据是用无符号数表示一个完整的波形的,那么可能显示出来的波形样子是下面的样子,不过不要紧,这是因 ...
- 咏南中间件修正了一处BUG,调用中间件插件会报:非法访问
咏南中间件修正了一处BUG,调用中间件插件会报:非法访问将以下方法修改成如下的代码即可function TServerMethods1.GetSvrData(const accountNo, defi ...
- 【Dnc.Api.Throttle】适用于.Net Core WebApi接口限流框架
Dnc.Api.Throttle 适用于Dot Net Core的WebApi接口限流框架 使用Dnc.Api.Throttle可以使您轻松实现WebApi接口的限流管理.Dnc.Api.Thr ...
- k8s service
Service也是k8s的最小操作单元,是真实应用服务的抽象 Service通常用来将浮动的资源与后端真实提供服务的容器进行关联 Service对外表现为一个单一的访问接口,外部不需要了解后端的规模与 ...
- iOS 错误:… is being deallocated while key value observing are still registered with it
这个错误从字面上来看就是有一个实例由于被observing而无法被释放. 具体原因可能是该对象添加了一个oberver.所以释放的时候要先取消observer. 具体方法是在 dealloc 方法中: ...
- 牛客OI赛制测试赛1 题解
A 斐波那契 数竞生:这不是送分的常识吗? 这里引入一个叫卡西尼恒等式的玩意. 公式表达就是 设$fib[i]$为斐波那契数列的第$i$项$(i>0,i \in N_+)$ 则有 $fib[i+ ...
- NOI2019省选模拟赛 第五场
爆炸了QAQ 传送门 \(A\) \(Mas\)的童年 这题我怎么感觉好像做过--我记得那个时候还因为没有取\(min\)结果\(100\to 0\)-- 因为是个异或我们肯定得按位考虑贡献了 把\( ...
- 实时监测input输入变化 jQuery
$('#production_name').on('input propertychange',function(){ alert('输入一个字弹一回'); });
- Groovy学习记录-------Groovy安装/配置
1.Groovy SDK下载 Groovy SDK官网下载地址: http://www.groovy-lang.org/download.html 每个版本有五个选项可供下载,依次为: binary ...
- java使用Redis6--sentinel单点故障主从自动切换
Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2 ...