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 反编译 重打包 重签名的更多相关文章

  1. Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正

    Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正 http://blog.csdn.net/jiangwei0910410003/article/details/51 ...

  2. android apk反编译,重新打包,签名

    apktool安装 Windows系统: 1. 首先确保系统安装有Java 2. 下载最新版本的apktool.jar https://ibotpeaches.github.io/Apktool/ 下 ...

  3. 【Android】Android如何对APK反编译

    本文笔者粗略的介绍如何利用一些工具,对Android进行反编译,从而得到源码,希望对你有所帮助,笔者的android环境为4.4.2. 1.准备资源. 在开始之前,需要准备三项工具:apktool  ...

  4. Android应用安全防护和逆向分析 ——apk反编译

    概述 最近一直在学习Android应用安全相关和逆向分析的知识.现在移动app在安全方面是越来越重视了,特别是那些巨头企业涉及到钱的应用,那加密程度,简直是丧心病狂,密密麻麻.从这里可以看出,对于应用 ...

  5. Android逆向基础----APK文件结构

    参考这个博客 http://www.cnblogs.com/wangtianxj/archive/2010/06/13/1757639.html http://blog.csdn.net/bupt07 ...

  6. Android重打包+重新签名工具Apktool Box

    可实现apk反编译+重新打包+重新签名,界面如下 : 部分引用自开源代码:http://github.com/Bu4275/AutoAPKTool

  7. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

  8. Android apk反编译基础(apktoos)图文教程

    本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...

  9. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

随机推荐

  1. [C#]安装WindowsService的关键步骤

    使用.Net编写好了WindowsService以后,不安装到系统里就没有任何作用. [添加Installer] 在服务的设计器画面,属性页面里,选择[Add Installer]链接. 如此便会生成 ...

  2. selenium 元素可以定位到,但是无法点击问题

    报错1: selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (82, ...

  3. SQL Server查询所有存储过程信息、触发器、索引

    1. [代码]查询所有存储过程      01 select Pr_Name as [存储过程], [参数]=stuff((select ','+[Parameter] 02 from ( 03 se ...

  4. jenkins-cli命令使用总结

    jenkins-cli命令使用总结 1.在jenkins中查看Jenkins CLI的相关说明 jenkins-->系统管理-->Jenkins CLI:如下图 下载:jenkins-cl ...

  5. docker查看挂载目录命令

    docker inspect -f "{{.Mounts}}"  692691b7416 692691b7416为containerId

  6. 用canvas画布画一个画板

    前段时间,在对H5的回顾中突然对canvas有了感觉,闲来无事便对其进行了一些捯饬.这不,上周我还做了一个好玩的画板呢,废话不多说,直接上代码(PS:翠花,上代码~): HTML部分: <!DO ...

  7. CheckBox使用记录

    页面显示 页面代码 <div> <div><input type="checkbox" value="" class=" ...

  8. iOS NSMutableArray "removeObjectIdenticalTo" vs "removeObject"

    NSMutableArray 有多种可以删除元素的方法. 其中 removeObject,removeObjectIdenticalTo 这两个方法是有区别的. [anArray removeObje ...

  9. Android 如何查看源码 (eclipse 按住 ctrl )

    首先要确认 Android SDK Manager 下载并安装了 sources.然后在代码中按住 ctrl 在点一个类名, 如果打开的页面是找不到源码,就点那个按钮,然后找到源码所在的文件夹,就可以 ...

  10. ceph 运维常用指令

    集群 启动一个ceph 进程 启动mon进程 service ceph start mon.node1 启动msd进程 service ceph start mds.node1 启动osd进程 ser ...