zoukankan      html  css  js  c++  java
  • 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 123456 -keypass 123456 -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 是可以相互转化的

  • 相关阅读:
    Qt Quick 简单介绍
    Windows下ElasticSearch及相关插件的安装
    Light OJ 1317 Throwing Balls into the Baskets 概率DP
    Cocos2d-x-lua学习点滴
    JAVA网络编程--UDP通信
    ASP.NET Web API 应用教程(一) ——数据流使用
    NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D)
    端口扫描器——ZenmapKail Linux渗透测
    直接操作游戏对象C#游戏开发
    BeagleBone Black项目实训手册(大学霸内部资料)
  • 原文地址:https://www.cnblogs.com/lesliefang/p/5146985.html
Copyright © 2011-2022 走看看