App及web反编译方案

news2024/9/19 23:52:51

APP反编译代码的工具下载:

下载地址:APK逆向三件套apktool-2.9.3.jar,dex2jar-2.0.zip,jd-gui-windows-1.6.6资源-CSDN文库

 》dex2jar: 把dex文件转成jar文件

 》 jd-gui: 这个工具用于将jar文件转换成java代码

》APKTool: 首先把后缀为.apk的文件改为.zip的一个压缩文件,方便解压。dex2jar和jd-gui配套使用,用于逆向代码部分,APKTool用于逆向res文件夹下的图片布局等部分。.apk 修改成.zip文件解压后的目录树长这样:

反编译代码部分
1、需要用到的是dex2jar包里面的三个文件(当前是在windows环境下,Mac环境用对应的.sh文件):

  • d2j_invoke.bat
  • d2j-dex2jar.bat
  • lib将这三个文件复制到一个空的文件夹内,将刚才.apk解压后的classes.dex文件也一起复制到这里。如图:
  • Windows  cmd到这个文件夹下 输入:d2j-dex2jar.bat classes.dex
  • Mac   到这个文件夹下 输入:sh d2j-dex2jar.sh classes.dex如此之后在这个目录里会生成一个classes-dex2jar.jar文件。如图:

2、应用JD-GUI工具,运行jd-gui.exe  File--OpenFile--classes-dex2jar.jar 打开刚才生成的jar文件。打开如图:

反编译res资源部分
apktool下载后会有两个文件,一个.jar(例如apktool_2.3.3.jar 需要把名字改成apktool.jar) 一个apktool.bat 。

cmd命令下进入刚才文件夹(同样可以新建一个),连同我们刚才那个后缀为apk的安装包一起放入,输入如下命令:
apktool d app-release.apk   此处app-release为apk名称得到一个新的app-release(对应apk名称)文件夹。

这个app-release文件夹下会得到若干文件,主要内容介绍如下:

  • AndroidManifest.xml:描述文件
  • res:资源文件
  • smail:反编译出来的所有代码,语法与java不同,类似汇编,是Android虚拟机所使用的寄存器语言

到这一步所有代码基本齐全

重新打包
在apktool文件夹路径的cmd下输入:apktool b [文件夹] -o test2.apk   (test2为新apk名称,[文件夹]为对应的有修改需要打包的文件夹)
例如:我当前就可以这样写  apktool b [F:\tools\apktool\app-release] -o test2.apk

至此,我们的目标apk文件已经生成,当然如果你想装到你自己手机上还需要重新签名一下。

重新签名
首先我们需要一个用于签名的.keystore文件,生成命令如下(这里我们假设生成的是demo.keystore)。keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
(cmd到apktool文件夹下跟待签名的apk放同个文件夹内便于操作)这里我们利用Java JDK提供的一个jarsigner进行签名,在刚才的cmd下继续操作,输入:jarsigner -verbose -keystore demo.keystore test2.apk demo.keystore

Web反编译方案

1. vue反编译库 reverse-sourcemap或者global shuji

通过反编译 .map 文件, 得到编译前的 vue文件。

(1)全局安装

npm install --global reverse-sourcemap

 或者

全局安装:npm install --global shuji

(2)dist/static/js 下有很多 xxxxx.js.map文件。执行命令,会把对应的源文件,输出到src文件夹下。

reverse-sourcemap --output-dir src 0.xxxxxxxx.js.map

或者

在目录终端运行:shuji  app.xxxxxxxx.js.map -o src

执行后得到源码的文件, 在dist/src/static/js/webpack/src 里面。(根据原项目的编译路径)

同时 /static/js/ 下,编译过的js文件可以删除了,保留正常js文件。反编译得到的 node_modules 目录在 dist/src/static/js/webpack 下。

2.目录结构编排

找一个本地的vue项目(反编译得到的文件单独复制一份,后面会用到)

(1)把反编译得到的src、node_modules 文件夹替换原代码目录。

(2)把编译后的static文件夹, 替换原代码static目录。

(3)把编译后的index.html, 删掉引入的编译css、js代码部分。 同时查看是否有手动引入的静态js、css文件。在static文件夹中可以查找对应的路径,排查有没有误删。

3. node_modules包信息

npm shrinkwrap 是 npm 包管理器的一项功能,可以使用这个得到源码用到的库。

进入目录第2步备份的反编译node_modules目录下

执行命令 npm shrinkwrap,得到 npm-shrinkwrap.json 文件。

里面纪录了项目用到的npm包,但是没有版本号以及编译库。

我们查看node_modules目录下的库信息,确认vue、npm等重要库的版本号。

4. 启动项目

回到第2步,我们构建的项目中。【查找依赖】

先修改原package.json,只保留编译用到的库。 比如我本地是 webpack。

执行npm run start, 根据报错提示,npm install --save 库,直到项目启动成功。

5. 生成package.json

如果项目启动成功,则项目反编译成功

6.获取package.json

在当前项目下执行命令 npm shrinkwrap,得到一个新的npm-shrinkwrap.json 文件。

然后根据第3步得到的npm-shrinkwrap.json 文件, 对照着新的得到库的版本和信息。

tips:可以复制当前项目后, 生成一个新的目录, 删除node_modules。

在新目录中,npm run install 后, 再重新 npm run start【注:删除 npm-shrinkwrap.json】。根据报错提示,npm install --save 库,直到项目启动成功。

关于反编译后的格式问题可针对性看这个深入理解 Vue 模板渲染:Vue 模板反编译-腾讯云开发者社区-腾讯云 (tencent.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HCIA-Datacom】IPv4地址介绍

| | 👉个人主页:Reuuse 希望各位多多支持!❀ | 👉HCIA专栏博客 | 最后如果对你们有帮助的话希望有一个大大的赞! | ⭐你们的支持是我最大的动力!⭐ | 目录 IPv4地址定义IPv4地址分类方式二级目录三级目录 I…

研1日记12

1. 改19->10 2. 学习数据不平衡问题 1. 欠采样 合并两个样本数据 两种方式 1. 按原分布比例划分。sklearn中train_test_split里,参数stratify含义解析_traintestsplit参数stratify-CSDN博客 3.刘二大人 卷积操作 待看论文: 刘老师指导&#xff1a…

PRD 在产品中的重要作用与撰写技巧(文末附PRD模板下载)

对于产品经理而言,PRD(Product Requirement Document,产品需求文档)是将产品概念转化为实际产品的关键桥梁。以下是关于如何写好 PRD 的详细指南: 一、PRD 的主要作用 统一团队认知 PRD 是产品团队的 “通用语言”。…

掌握 Spring:从新手到高手的常见问题汇总

一提起Spring,总感觉有太多知识,无法详尽,有些基础理解就先不说了,相信大家都已经用过Spring了 下面简单针对常见Spring面试题做些回答 核心特性 IOC容器spring事件资源管理国际化校验数据绑定类型转换spirng表达式面向切面编程……

视频监控基础学习

IPC:网络摄像机 NVR:网络硬盘录像机产品,搭配IPC使用。集成存储、解码显示、拼接控制、智能分析等多种功能于一体。一机多用,部署简单,功能齐全。安全可靠,适用于各类场景。 ONVIF协议:网络摄像…

数据集 wider_face 人脸数据集 人脸检测 >> DataBall

数据集 wider 人脸检测数据集 WIDER FACE: A Face Detection Benchmark inproceedings{yang2016wider, Author {Yang, Shuo and Luo, Ping and Loy, Chen Change and Tang, Xiaoou}, Booktitle {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, Title…

巴西电商市场规模、前景及支付方式(pix、Boleto)

一、巴西电商市场分析 作为拉丁美洲最大经济体,巴西在拉丁美洲经济中占据领先地位,根据巴西地理与统计研究所(IBGE)的数据,2023年巴西GDP达到2.2万亿美元,跃居世界第九大经济体。数字化进程以及经济多元化推进正在推动该国中产阶…

基于SpringBoot+Vue的高校教材订购管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

jmeter吞吐量控制器

一、吞吐量控制器作用:旨在混合场景中,控制样本数,通常在比例场景中使用 吞吐量控制器提供了两种控制模式: 百分比执行(Percent Executions): 吞吐量控制器会根据配置的百分比来决定其下的作用…

快速完成论文初稿写作的ChatGPT提示词分享

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 随着人工智能技术的迅速发展,ChatGPT已经成为学术写作中不可忽视的工具。它不仅能帮助研究者提高写作效率,还能在初稿撰写过程中提供结构化的建议和内容生成支持…

xshell密钥方式连接阿里云Linux

前提条件 有阿里云ECS linux实例安装好xshell工具 步骤 创建密钥对并绑定ECS实例 浏览器登录阿里云-->控制台-->ECS服务器-->网络与安全-->密钥对-->创建密钥对 根据提示填写密钥名称-->选中默认资源组-->创建 创建完成,会自动下载密钥对的…

看Threejs好玩示例,学习创新与技术(二)

本文接上篇内容,继续挖掘应用ThreeJS的一些创新算法。 本文理解难度比较大,可以先看一些概念,在难的地方培养一些意识即可。 1、扭曲的自然 下面图本身是矩形的,为何它可以这么扭曲呢?它在随机处带有一定的规律&…

多米优选APP源码系统开发

多米优选是一种基于卷轴模式的电商平台系统,它通过滚动展示商品信息,让用户在浏览商品的同时参与各种任务获得奖励,从而提升用户的活跃度和购买意愿。以下是多米优选卷轴模式系统开发的深度解析。 一、系统概述 多米优选卷轴模式源码系统旨在…

高精度治具加工的重要性和优势

在现代工业制造中,高精度治具加工扮演着举足轻重的角色。它不仅关乎产品制造的精度与质量,还直接影响到生产效率和成本控制。因此,时利和将深入探讨高精度治具加工的重要性和优势,对于提升工业制造水平具有重要意义。 高精度治具加…

以系统工程为指导的军品设计、开发与管理常用方法培训

课程背景: 产品开发和产品管理是组织经营战略的核心,而经营战略又为组织的创新战略、产品开发和产品管理提供了环境和方向。使命、愿景与核心价值观对于产品开发的聚焦点和管理方式都具有十分重要的作用。产品开发通常被称为组织的“血液”,…

计算机毕业设计 大学志愿填报系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

什么是485无线通信

在现代通信技术中,无线模块扮演着至关重要的角色,它们使得设备能够在没有物理连接的情况下进行数据交换。485通讯无线模块是这类无线模块中的一种,专门用于实现RS-485通信协议的无线传输。RS-485是一种广泛应用于工业自动化和远程监控系统的串…

Java短信验证码

想利用java给用户发送短信的话,需要我们与电信、移动、联通三大巨头合作(其实还有广电,但是比较少用),让它帮你发信息,当然直接与它合作显然是不现实的,所以我们要借助第三方的短信平台来替我们…

基于Python的量化交易回测框架Backtrader初识记录(二)

版权声明:本文为博主原创文章,如需转载请贴上原博文链接:基于Python的量化交易回测框架Backtrader初识记录(二)-CSDN博客 前言:在上一篇文章 基于Python的量化交易回测框架Backtrader初识记录(一…

加速开发体验:为 Android Studio 设置国内镜像源

Android Studio 是由 JetBrains 开发的一个官方 IDE,用于 Android 应用开发。由于网络原因,直接从 Google 的服务器下载可能会比较慢或者不稳定。幸运的是,我们可以通过配置国内镜像源来加速下载和更新。 文章目录 💯 修改 Gradle…