码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • apk反编译和重新打包流程


    1.工具准备

            a.jdk下载,添加“...\jdk\bin”到系统环境变量  Java Downloads | Oracle
            b.下载apktool.jar   Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.

    2.反编译   

        java  -jar  apktool_2.6.1.jar (拖入你的apktool)  d   +(拖入你的.apk)

        格式为:java  -jar  apktool的名字  d(反编译)  要解包的apk  -o(输出)  文件名

    反编译出来的文件目录

    其中,res文件夹中存放着该app所有的资源(xml,布局文件和图片);smali文件中存放的是app的所有代码,但代码是smali语言格式,smali语言是Android虚拟机所使用的寄存器语言。还有就是 Androidmanifest.xml功能清单文件一目了然,可以直接查看。
    注意: 1.将apk文件重命名为.zip格式并解压,androidmanifest会出现乱码;
            2.解压后,classes.dex文件中存放在着所有代码,但需要用特殊工具(dex2jar\jd-gui)进行查看,解压操作一般用于获取资源图片快捷
            3.如果就查看代码而言,你可以用jadx工具直接导入apk查看源码
    如果你能看懂smali语言,可以修改smail中的一些静态成员变量,这里简单对androidManifest.xml某个activity做修改,然后重新打包

     

    3.重新打包  

    java -jar .\apktool.jar b .\打包的文件夹\
       格式为: java  -jar  apktool的名字  b(打包)  要打包的文件夹名字
    重新打包后,反编译目录下会出现dist目录以及其中未签名的apk文件

     

    4.生成签名证书(造一个简单签名文件)

     keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
    格式   36500 :100年 ; test.keystore :签名后的文件名
      填写密码,对应名称(记住密码,没记住就重造一个文件)
      随时查看证书    keytool -list -v -keystore test.keystore  
            Enter keystore password: //输入密码,回车

     

    5.签名:

    jarsigner -verbose -keystore E:\反编译\test.keystore  -signedjar  shop111.apk E:\反编译\shop-release\dist\shop-release.apk  testalias
    格式: jarsigner -verbose -keystore 签名 -signedjar  签名文件后的文件名 需要签名文件  证书里alias别名

     

    6.遇到问题:

    1.jarsigner不是内部命令?
            重装jdk,确保安装目录bin里有jarsigner.exe
    2.  [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries?安装不能提取native库
        a.回到AndroidManifest.xml中,把android :extractNativeLibs="false"改为true(工程对so库进行压缩,安装时解压)重新打包
        b.如果原因是由于apktool在回编译apk包是没有进行内存对齐,可以使用zipalign工具再次对齐已经签名后的apk
    ​​​​​​​

     

    参考链接:
    jdk下载和环境变量配置
    apk反编译命令解释
    反编译后查看源码
  • 相关阅读:
    go基础10 -字符串的高效构造与转换
    计算机网络第三章 数据链路层
    C++中变量是按值访问的, Python 中变量的值是按引用访问的示例说明
    幂等性(防重复提交)
    MySQL知识补充(表字段操作、视图、触发器、事物、存储过程、内置函数、流程控制、索引、慢查询)
    vue 兄弟组件通信, provide/inject,
    RK3568 kernel阶段播放开机动画方案实现
    【CVPR2023】《A2J-Transformer:用于从单个RGB图像估计3D交互手部姿态的锚点到关节变换网络
    一文读懂 Spring Bean 的生命周期
    向函数传递参数(传值、传引用、传const引用)
  • 原文地址:https://blog.csdn.net/ly_xiamu/article/details/126676446
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号