Android逆向学习(一)vscode进行android逆向修改并重新打包

news2025/1/24 14:36:55

Android逆向学习(一)vscode进行android逆向修改并重新打包

写在前面

其实我不知道这个文章能不能写下去,其实我已经开了很多坑但是都没填上,现在专利也发出去了,就开始填坑了,本坑的主要内容是关于android逆向,主要的教程来源来自52破解论坛的大佬课程,但是那是windows版,为喜欢用linux,所以这是一个有比较大改动的学习教程,不过我确信你在windows上也可以运行,let’s go.

一、软件准备

如上文所说,我是linux用户,所以就是用的linux下相同的替代品(我感觉linux下的软件更好用)

1、模拟器

我使用的模拟器叫做xdroid,为认为这个做得要比android studio的好(当然指分析起来的时候),因为很多软件用的native code是arm架构下的,而android studio下模拟器主要是x86架构,很多软件无法进行分析。当然如果安装xdroid需要关闭security boot,就是在bios里面关闭。

然后我们下载xdroid的安装包,直接./运行就好了,记得不要使用sudo ./ 会提示不可以。

我们还需要安装的软件有开发助手,NP管理器,主要就是这两个用来进行逆向分析,而且这个是已经root好的,我们还可以直接使用adb进行调试,推荐右边使用单窗口,因为这样的话会比较方便查询activity。

e37fb64ed46ed0c27dbe1508fa5999e97163022138e29438d1625e8128ff2355

adb的命令

adb devices
adb -s xxxx root
adb -s xxxx shell

20230902234342

2、逆向使用的软件

教程中使用的是NP管理器和开发助手,当然我感觉直接用NP管理器的话,不是特别优雅,毕竟最好还是直接逆向后在电脑上修改,这样会显得我们比较专业,所以我用到的软件是vscode和apktool,apktool这个我就不讲了,我在之前的博客中就介绍过这个东西。

VScode的话我是用的APKLab拓展,这样可以更加方便的使用apktool以及其他的反编译软件,打包apk什么的也是非常的方便.

我vscode的插件主要是:

smalise:用来查看smali代码的,是apklab的前置软件

apklab:主要的插件,是一个十分强大的插件,能够把apktool等各种工具给整合起来,直接使用键盘就可以直接操作了

luna paint:这是一个用来编辑图片的软件,能够比较好的用来修改图片,当然这个不下载也可以,这个不影响

smali2java:这是一个很好用的反编译的插件,能够将代码转化为java代码能够比较清晰的去查看代码的逻辑

软件的配置过程

我们主要配置的就只有apklab这个软件

20230902223813

前三个就是你的工具的路径,这个不用动就可以,这个会自动下载的

后面的Keyalias是你个android开发签名,每个apk包是要有一个签名才可以进行安装的,既然反编译重新修改了,就得找个key重新进行签名才可以,这个生成的方法就是使用android studio进行生成,具体我不再讲解,这个直接查就好

二、对android文本进行修改并重新打包

下面到了吾爱的第一个作业,就是修改图片文本,我们这样作,首先按下(Ctrl+Shift+P)选择open apk,就可以打开你的那个安装包了,这是我们逆向之后的结构

20230902224541

然后我们需要使用开发助手查看我们当前的activity是哪一个,打开开发助手,然后点击当前activity,就可以看到页面上显示的类名了,然后我们再运行需要破解的软件,就可以看到当前的activity了

20230902224814

然后就会显示这个东西

20230902225347

我们在vscode的安装包里查找这个activity的相关资源

我们在smali代码中发现了第一句

20230902225627

修改了就好

20230902230559

我们在res里面可以发现layout,里面是布局文件,然后这里还有一个文本,修改即可

20230902230824

然后mipmap-xxxhdpi里面有图片,给他替换了

20230902230940

然后我们根据之前的布局文件发现里面的文案是@string里面的,所以我们应该去查values里面找string.xml,修改tip1和first_tv,果然我们发现了相关的东西

20230902231540

20230902231614

我们照样进行修改

修改完成后,别忘保存,然后我们右键apktool.yml,进行打包安装,打包的文件在你路度的dist文件里面,注意这个有点bug,容我慢慢给你讲

20230902232442

  1. 需要你打开其中一个软件后,你的adb才能查找到模拟器,所以记得打开开发助手或者其他软件让模拟器运行着,你再安装
  2. 安装后里面没有这个图标,这个就是模拟器的bug了,可以通过开发助手来打开,所以凑合用就行,只要输出控制台显示没有问题就好

所以我们安装后打开应用的方式就是在Manifest查看->软件名->右上角点打开应用,然后打开应用之后我们就是可以看到修改后的文件(这个安装包可以在真机上安装的,我试过了)

然后我们看到了虎哥和一眼晚年的图片

20230902233721

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

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

相关文章

回归拟合 | 灰狼算法优化核极限学习机(GWO-KELM)MATLAB实现

这周有粉丝私信想让我出一期GWO-KELM的文章,因此乘着今天休息就更新了(希望不算晚) 作者在前面的文章中介绍了ELM和KELM的原理及其实现,ELM具有训练速度快、复杂度低、克服了传统梯度算法的局部极小、过拟合和学习率的选择不合适等优点,而KEL…

OpenCV(十):图像缩放、翻转、拼接的介绍与使用

目录 (1)图像缩放:resize() (2)图像翻转: flip() (3)图像拼接:hconcat() 和vconcat() (1)图像缩放:resize() 使用 cv2.resize() 函…

React笔记(三)类组件(1)

一、组件的概念 使用组件方式进行编程,可以提高开发效率,提高组件的复用性、提高代码的可维护性和可扩展性 React定义组件的方式有两种 类组件:React16.8版本之前几乎React使用都是类组件 函数组件:React16.8之后,函数式组件使…

北京APP外包开发团队人员构成

下面是一个标准的APP开发团队构成,但具体的人员规模和角色可能会根据项目的规模和需求进行调整。例如,一些小型项目或初创公司可能将一些角色合并,或者聘请外包团队来完成部分工作。北京木奇移动技术有限公司,专业的软件外包开发公…

使用rabbitmq进行支付之后的消息通知

订单服务完成支付后将支付结果发给每一个与订单服务对接的微服务,订单服务将消息发给交换机,由交换机广播消息,每个订阅消息的微服务都可以接收到支付结果. 微服务收到支付结果根据订单的类型去更新自己的业务数据。 相关技术方案 使用消息…

【LeetCode】85.最大矩形

题目 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix [["1","0","1","0","0"],["1&quo…

11. 微积分 - 偏导数方向导数

文章目录 偏导数方向导数方向余弦投影继续讲方向导数Hi, 大家好。我是茶桁。 我们上节课学习了链式法则,本节课,我们要学习「偏导数」和「方向导数」。 偏导数 偏导数在导论课里面也提到过。偏导数针对多元函数去讲的。 多元函数是什么,我们拿个例子来看: 多元函数: y…

springboot配置ym管理各种日记(log)

1:yml配置mybatis_plus默认日记框架 mybatis-plus:#这个作用是扫描xml文件生效可以和mapper接口文件使用,#如果不加这个,就无法使用xml里面的sql语句#启动类加了MapperScan是扫描指定包下mapper接口生效,如果不用MapperScan可以在每一个mapp…

2023.9.2 关于 JVM 垃圾回收机制(GC)

目录 为什么要有垃圾回收机制? STW(Stop The World)问题 垃圾回收机制主要回收哪个内存区域? 垃圾对象判断算法 引用计数算法 可达性分析算法 垃圾对象回收算法 标记清除算法 复制算法 标记整理算法 分代算法 为什么要有垃圾回收机制? 自动…

thinkphp中使用Elasticsearch 7.0进行多表的搜索

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、thinkphp中使用Elasticsearch 7.0进行多表的搜索二、使用步骤1.引入库2.读入数据 总结 前言 提示:thinkphp中使用Elasticsearch 7.0进行多表的…

stable diffusion实践操作-批次出图

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、批次出图介绍1.1 webUI设置1.2 参数介绍 二、批次出图使用2.1 如何设置2.1 效果展示 总结 前言 本章主要介绍SD批次出图。 想要一次产生多张图片的时候使用。 一、批次出图介绍 1.1 webUI设置 1.2 参数…

[管理与领导-65]:IT基层管理者 - 辅助技能 - 4- 乌卡时代(VUCA )

前言: 大多数IT人,很勤奋,但都没有职业规划,被工作驱动着前行,然而,作为管理者,你就不能没有职业规划思维,因为你代表一个团队,你的思维决定了一个团队的思维。本文探讨…

2023-9-2 染色法判定二分图

题目链接&#xff1a;染色法判定二分图 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 100010l, M 200010;int n, m; int h[N], e[M], ne[M], idx;int color[N];void add(int a, int b) {e[idx] b, ne[id…

CSS中border-radius的来美化table的实战方案

border-radius是一种CSS属性&#xff0c;用于设置元素的边框的圆角程度。其具体的用法如下&#xff1a; 设置一个值&#xff1a;可以为元素设置一个单一的圆角半径&#xff0c;这个半径将应用于元素的四个角。例如&#xff1a; div {border-radius: 10px; }设置四个值&#x…

vue Cesium接入在线地图

Cesium接入在线地图只需在创建时将imageryProvider属性换为在线地图的地址即可。 目录 天地图 OSM地图 ArcGIS 地图 谷歌影像地图 天地图 //矢量服务let imageryProvider new Cesium.WebMapTileServiceImageryProvider({url: "http://t0.tianditu.com/vec_w/wmts?s…

创建性-构造者设计模式

前言 我们在使用Retrofit等这些第三方框架的时候&#xff0c;发现他们的使用都很方便&#xff0c;比如Retrofit retrofit new Retrofit.Builder().build()&#xff0c;和我们通常直接new一个对象不同&#xff0c;他是交给Builder类&#xff0c;通过build()函数来构造一个Retro…

解决Ubuntu 或Debian apt-get IPv6问题:如何设置仅使用IPv4

文章目录 解决Ubuntu 或Debian apt-get IPv6问题&#xff1a;如何设置仅使用IPv4 解决Ubuntu 或Debian apt-get IPv6问题&#xff1a;如何设置仅使用IPv4 背景&#xff1a; 在Ubuntu 22.04(包括 20.04 18.04 等版本) 或 Debian (10、11、12)系统中&#xff0c;当你使用apt up…

JS中的new操作符

文章目录 JS中的new操作符一、什么是new&#xff1f;二、new经历了什么过程&#xff1f;三、new的过程分析四、总结 JS中的new操作符 参考&#xff1a;https://www.cnblogs.com/buildnewhomeland/p/12797537.html 一、什么是new&#xff1f; 在JS中&#xff0c;new的作用是通过…

【分类】分类性能评价

评价指标 1、准确率、召回率、精确率、F-度量、ROC ​ 属于各类的样本的并不是均一分布&#xff0c;甚至其出现概率相差很多个数量级&#xff0c;这种分类问题称为不平衡类问题。在不平衡类问题中&#xff0c;准确率并没有多大意义&#xff0c;我们需要一些别的指标。 ​ 通…

PYTHON知识点学习-函数(下)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由 Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…