App及web反编译方案

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.rhkb.cn/news/424015.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[docker]入门

本文章主要讲述的是,docker基本实现原理,docker概念的解释,docker的使用场景以及docker打包与部署的应用。 文章中docker所运行的系统:CentOS Linux release 7.9.2009 (Core) 目录 docker是什么,什么时候需要去使用 …

实习项目|苍穹外卖|day10

Spring Task cron 表达式 入门案例 订单状态定时处理 通知用户支付!通知商家完成订单! Scheduled(cron "0 0/1 * * * ? ")public void processTimeoutOrder(){log.info("定时处理超时订单: {}", LocalDateTime.now());//答案是…

JavaScript --函数的作用域(全局和局部)

全局作用域 全局作用域&#xff0c;就算不在一个script标签也能调用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta nam…

解决RabbitMQ设置TTL过期后不进入死信队列

解决RabbitMQ设置TTL过期后不进入死信队列 问题发现问题解决方法一&#xff1a;只监听死信队列&#xff0c;在死信队列里面处理业务逻辑方法二&#xff1a;改为自动确认模式 问题发现 最近再学习RabbitMQ过程中&#xff0c;看到关于死信队列内容&#xff1a; 来自队列的消息可…

[进阶]面向对象之多态(练习)

需求: //父类animal package polymorphism.Test;public abstract class Animal {private int age;private String color;public Animal() {}public Animal(int age, String color) {this.age age;this.color color;}public int getAge() {return age;}public void setAge(i…

【JavaSE系列】反射机制

目录 前言 一、概述 二、获取Class对象 三、反射构造方法 1. 获取构造方法 2. 获取修饰符、名称和形参 3. 创建对象 四、反射成员变量 1. 获取成员变量 2. 获取修饰符、名称和类型 3. 赋值/获取值 五、 反射成员方法 1. 获取成员方法 2. 获取修饰符、形参、返回值…

远程访问电脑共享文件

远程访问电脑共享文件&#xff0c;可以通过多种方法实现&#xff0c;每种方法都有其特点和适用场景。以下是一些常见的方法及其步骤&#xff1a; 一、使用Microsoft远程桌面 启用远程桌面&#xff1a; 在目标电脑上&#xff0c;打开“开始”菜单&#xff0c;选择“设置”>“…

【网络安全】PHP配置注入漏洞

未经许可&#xff0c;不得转载。 文章目录 正文 正文 前提&#xff1a;通过探测等方式发现某个 PHP 文件存在 PHPRC 参数&#xff1a; curl "https://xxx.com/about.php?PHPRC/dev/fd/0" --data-binary auto_prepend_file"/etc/passwd"PHPRC 用于指定 P…

CTF——简单的《WEB》

文章目录 一、WEB1、easysql2、baby_web3、baby_sql4、upload_easy5、easygame拓展1.1拓展1.2 6、ht_ssti7、包容乃大 一、WEB 1、easysql 题目描述&#xff1a; sql注入漏洞 1.常用的sql注入测试语句 2.sql注入bypass 解题思路 这边提示基本给的也很完整的&#xff0c;不…

NFT Insider #147:Sandbox 人物化身九月奖励上线;Catizen 付费用户突破百万

市场数据 加密艺术及收藏品新闻 Doodles 动画特别剧《Dullsville and The Doodleverse》在多伦多国际电影节首映 Doodles 最近在多伦多国际电影节&#xff08;TIFF&#xff09;首映了其动画特别剧《Dullsville and The Doodleverse》&#xff0c;这是该品牌的一个重要里程碑。…

无人机几种常见的避障系统!!!

1. 视觉避障系统 工作原理&#xff1a; 视觉避障系统通过安装在无人机上的摄像头捕捉周围环境的图像&#xff0c;利用计算机视觉技术对图像进行处理和分析&#xff0c;提取出障碍物的信息。 通过对障碍物的识别和分类&#xff0c;无人机可以判断出障碍物的性质和危险程度&am…

鸿蒙开发基础

页面跳转 了解代码初始结构 /*** 装饰器&#xff1a;用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。* Entry&#xff1a;表示该自定义组件为入口组件 * Component&#xff1a;表示自定义组件* State&#xff1a;表示组件中的状态变量&#xff0c;状态变量变…

抓机遇,创发展︱2025 第十二届广州国际汽车零部件加工技术及汽车模具展览会,零部件国产浪潮不可阻挡

抓机遇&#xff0c;创发展︱2025 第十二届广州国际汽车零部件加工技术及汽车模具展览会&#xff0c;零部件国产浪潮不可阻挡 汽车零部件行业是汽车工业发展的基础&#xff0c;是支撑汽车工业持续稳步发展前提条件。随着经济全球化和市场一体化进程的推进&#xff0c;汽车零部件…

YOLOv5改进 | 模块缝合 | C3 融合Self-Calibrated Convolutions丰富特征图【CVPR2020】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv5入门 改…

37拼购:电商新风尚,共享双赢的购物革命

随着2024年电商市场的日益繁荣&#xff0c;商品海洋中的同质化问题愈发严峻&#xff0c;消费者在茫茫商海中寻觅独特价值的难度陡增。在此背景下&#xff0c;一种名为“37悦享拼”的创新电商模式横空出世&#xff0c;它巧妙融合了私域社交与电商精髓&#xff0c;旨在打破传统壁…

【Go】-Gin框架

目录 Gin框架简介 简单示例 Gin渲染 HTML渲染 自定义模板函数 静态文件处理 使用模板继承 JSON渲染和XML渲染 获取参数 获取querystring参数 获取form参数 获取Path参数 c.Params.Get c.Params() 参数绑定 文件上传 单个文件上传 参数 多个文件上传 重定向…

无人机应用新纪元:图形工作站配置推荐与硬件解析

低空经济作为国家新兴的战略性产业&#xff0c;正逐步成为经济高质量发展的新动力。据统计&#xff0c;2023年中国低空经济规模达到5059.5亿元&#xff0c;增速为33.8%&#xff0c;预计到2026年有望突破万亿元大关。政府对低空经济的发展高度重视&#xff0c;不仅出台了相关法规…

Ubuntu22.04系统安装opencv步骤简述及问题解决方法

前言 opencv是一个功能强大、开源且跨平台的计算机视觉库&#xff0c;适用于多种编程语言和操作系统&#xff0c;能够帮助开发者构建各种视觉项目。其模块众多&#xff0c;提供了诸多功能&#xff0c;能够进行图像处理、视频处理等等。比如&#xff1a;Highgui模块提供图像用户…

OSSEC搭建与环境配置Ubuntu

尝试使用Ubuntu配置了OSSEC&#xff0c;碰见很多问题并解决了&#xff0c;发表博客让后来者不要踩那么多坑 环境 &#xff1a; server &#xff1a;Ubuntu22.04 64位 内存4GB 处理器4 硬盘60G agent: 1.Windows11 64位 2.Ubuntu22.04 64位 服务端配置 一、配置安装依赖项&…

电源模块测试系统中都可以定制哪些内容?

在电源测试系统中&#xff0c;可以定制的内容相当广泛&#xff0c;以满足不同客户、不同应用场景下的特定需求。以下是一些常见的可定制内容&#xff1a; 1. 测试项目 对于电源模块的基础测试项目而言&#xff0c;一般都无需定制基础测试项目&#xff0c;因为电源模块测试的基…