当前位置: 首页 > article >正文

【安卓逆向】逆向APP界面UI修改再安装

1.背景
有一客户找到我,说能不能把APP首页的底部多余界面去掉。

添加图片注释,不超过 140 字(可选)

  1. 逆向实战
    想要去除安卓应用软件中的内容,需要对APP逆向进行修改再打包。
    通过工具 MIT管理器工具

添加图片注释,不超过 140 字(可选)

提取APK包,点击apk文件,点击查看反编译apk。

添加图片注释,不超过 140 字(可选)

搜索关键字。这里关键字都是后端接口返回,所以说关键字搜索无果。
在assets资源文件下找到Index.html首页

添加图片注释,不超过 140 字(可选)

一顿操作排查,根据客户提供的页面信息,最终锁定是home.html文件,在www目录中。

微友助手 ...省略style元素
    <script type="text/javascript" charset="utf-8">(function($, doc) {$.init({swipeBack: false //启用右滑关闭功能});$.plusReady(function() {console.log('homeready');plus.navigator.setStatusBarBackground('#FFFFFF');plus.navigator.setStatusBarStyle('dark');var userDatas = app.getDatas('$userDatas'); if(userDatas['account'])app.bindAliasAndTag(userDatas['account'],[userDatas['account']]);var self = plus.webview.currentWebview();                   doc.getElementById('bar').innerHTML = userDatas['account']?userDatas['account']:'';                         doc.getElementById('copy_url').addEventListener('tap', function(event) {app.copyToClipboard("http://yqlm.jisubianxian.com/web");mui.toast('复制成功');});var home_data = app.getHomeData(userDatas.token, function(datas, zt) {                              if(zt==true){                   doc.getElementById('ke_use_count').innerHTML = datas['ke_use_count']?datas['ke_use_count']:'0'; doc.getElementById('intro').innerHTML = datas['intro']?datas['intro']:'';if(datas['foot']==true){                                // doc.getElementById('foot').style.display='';}if(datas['rj_logo'] && datas['rj_logo'].length>0){var rj_logo = datas['rj_logo'];//console.log(dd.lunbo.length);var rj_logo_str = '';for (i=0;i<rj_logo.length;i++){rj_logo_str +='<li>'+'   <img src="'+rj_logo[i]+'" style="width: 6vw;height: 6vw;border-radius: 5vw;">'+'</li>';}//console.log(products_str);doc.getElementById('rj_logo').innerHTML = rj_logo_str;}if(datas['doc_tool'] && datas['doc_tool'].length>0){var doc_tool = datas['doc_tool'];//console.log(dd.lunbo.length);var doc_tool_str = '';for (i=0;i<doc_tool.length;i++){doc_tool_str +='<li>'+'<a onclick="javascript:app.openXy(\''+doc_tool[i]['url']+'\')">'+'    <img src="'+doc_tool[i]['img']+'" style="border-radius: 0;">'+'    <span style="color: #8f8f94;">'+doc_tool[i]['name']+'</span>'+'</a>'+'</li>';}doc.getElementById('doc_tool').innerHTML = doc_tool_str;}}});document.querySelector('#add_man_js').addEventListener('tap', function(e) {console.log('开始添加');plus.contacts.getAddressBook( plus.contacts.ADDRESSBOOK_PHONE, function( addressbook ) {app.get_tels_list(userDatas.token, function(dd, status) {                               if(status== false){mui.alert(dd);}else{if(typeof(dd)=='string')dd = JSON.parse(dd);var datas = dd['data'];for(var i=0;i<datas.length;++i){console.log('name:'+datas[i].name+'mobile:'+datas[i].mobile+'remark:'+datas[i].remark);// 向通讯录中添加联系人var contact = addressbook.create();                                 contact.name = {givenName:datas[i].name};contact.phoneNumbers = [{type:"mobile",value:datas[i].mobile,preferred:true}];contact.note=datas[i].remark;//contact.categories ={type:"company",value:"神硕"};//contact.organizations={type:"company",value:"神硕"};contact.save();};console.log(dd['ke_use_count']);document.getElementById('ke_use_count').innerHTML = dd['ke_use_count']?dd['ke_use_count']:'0';//添加成功后更新服务端的数据状态和可用数量mui.alert('批量导入成功!已随机导入1-4个数据,请打开客户端添加或关注新朋友。');}});}, function ( e ) {mui.alert( "获取通讯录失败: " + e.message );} );                            });         document.querySelector('#log_out_js').addEventListener('tap', function(e) {mui.confirm('确认退出程序?', '',['取消','确定'], function(e) {if (e.index == 1) {userDatas['token']='';app.setDatas('$userDatas', userDatas);plus.runtime.restart();     } else {//console.log('你点击了取消');}});     });setTimeout(function() {plus.navigator.closeSplashscreen();}, 1000);   console.log('homereadyover');                   });}(mui, document));</script></head>
<body style="background-image: url('../../images/home.png'); background-position: center center;background-repeat: no-repeat;background-attachment: fixed;background-size: cover;height: 100%;">            ...省略部分内容<div class="report" ><a id ="add_man_js">+批量导入通讯录</a><!--<a id ="add_man_js"><img src="../../images/btn.png" style="width:100%;height:100%"></a>--></div><div class="member_c"><ul class="ul_c" id="doc_tool">             </ul></div><footer id='foot'><p style="font-size: .7rem;">管理员给多个app客户端【分配数据】请访问:</p><p style="font-size: .7rem;color:#0FB923;">http://yqlm.jisubianxian.com/web</p>         <p style="font-size: .7rem;">使用电脑浏览器打开 <a style="color:blue;" id="copy_url"> <img src="../../images/8.png" style="width:20px;height:20px">复制网址</a></p></footer><div class="good_bot"><a id ="log_out_js">退 出 系 统</a></div>      </body>
有js基础的不难看到,页面是通过页面加载完成后调用后端接口返回得到的信息,再动态添加元素渲染。 这里直接通过style样式标签直接把底部元素隐藏掉即可。

添加图片注释,不超过 140 字(可选)

  1. 签名重新打包
    修改home.xml文件保存后退出编辑页面,选择自动签名,确定更新。返回到apk界面。

添加图片注释,不超过 140 字(可选)

最后重新安装apk文件,效果如下。

添加图片注释,不超过 140 字(可选)

相关文章:

【安卓逆向】逆向APP界面UI修改再安装

1.背景 有一客户找到我&#xff0c;说能不能把APP首页的底部多余界面去掉。 逆向实战 想要去除安卓应用软件中的内容&#xff0c;需要对APP逆向进行修改再打包。 通过工具 MIT管理器工具 提取APK包&#xff0c;点击apk文件&#xff0c;点击查看反编译apk。 搜索关键字。这里关键…...

SAP Webide系列(7)- 优化FreeStyle新建项目预设模板

目录 一、背景 二、优化目标 三、定位调整点 四、调整步骤 五、效果展示 六、附言 一、背景 在每次通过Webide进行FreeStyle方式自开发SAP UI5应用的时候&#xff0c;新建项目&#xff0c;得到的模板文件都是只有很少的内容&#xff08;没有路由配置、没有设置默认全屏等…...

python读取sqlite温度数据,并画出折线图

需求&#xff1a; 在Windows下请用python画出折线图&#xff0c;x轴是时间&#xff0c;y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时&#xff0c;近1天&#xff0c;近1个月的。sqlite文件weather_data.db当前目录下&#xff0c;建表结构如下…...

URL 对字母大小写敏感么?

URL 的不同部分对大小写的敏感性不同&#xff1a; 协议部分: 不区分大小写 例如&#xff1a;http:// 和 HTTP:// 被视为相同域名部分&#xff08;主机名&#xff09;: 不区分大小写 例如&#xff1a;example.com 和 ExAmPle.CoM 被视为相同路径部分 例如&#xff1a;example.c…...

【Linux网络编程】高效I/O--select/poll服务器

目录 多路转接之select select服务器实现 获取连接 handlerEvent select服务器代码链接 select的优缺点 多路转接之poll poll服务器实现(select服务器改写) poll的优缺点 多路转接之select select的作用 I/O的本质 等 拷贝 多路转接就是通过同时等待多个文件描述…...

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需要从中挑出一些…...

C语言实战项目(1)---------->猜数字游戏

在学习完循环和选择结构之后&#xff0c;我们可以做一个猜数字游戏。在此项目之前&#xff0c;如果还不会C语言的if语句、switch语句等组成选择结构的语句&#xff0c;while循环、for循环、do-while循环等组成循环结构的语句。可以参考我之前的博客&#xff1a; C语言&#xf…...

web理论总结

1.网页&#xff1b;可以承载各种网址应用和信息的容器&#xff0c;所有可视化的内容都会通过网页展示给用户。 2.网页主要由文字&#xff0c;图像和超链接等元素构成。还可以包含音频&#xff0c;视频以及动画等。 网页分为静态网页&#xff0c;动态网页大部分网页静动结合。…...

Failed to start The PHP FastCGI Process Manager.

报错如下&#xff1a; Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details. 2月 25 21:49:00 nginx systemd[1]: Starting The PHP FastC…...

001 Kafka入门及安装

Kafka入门及安装 文章目录 Kafka入门及安装1.介绍Kafka的基本概念和核心组件 2.安装1.docker快速安装zookeeper安装kafka安装 添加topic删除topickafka-ui安装 来源参考的deepseek&#xff0c;如有侵权联系立删 1.介绍 Kafka的基本概念和核心组件 Kafka是分布式流处理平台&a…...

【paddle】详解 padde.autograd.backward

目录 backward二次函数案例paddle 代码pytorch 代码 backward paddle.autograd.backward(tensors, grad_tensorsNone, retain_graphFalse)[源代码] 参数 tensors (list[Tensor]) – 将要计算梯度的 Tensors 列表。Tensors 中不能包含有相同的 Tensor。grad_tensors (None|list…...

飞腾腾锐D2000 + OpenHarmony 4.1release部署deepseek大模型

简介 1.1 飞腾腾锐D2000 飞腾腾锐D2000是一款面向桌面应用的高性能通用处理&#xff0c;集成8个飞腾自主研发的高能效处理器核FTC663&#xff0c;兼 容64位ARMv8指令集并支持ARM64和ARM32两种执行模式&#xff0c;支持单精度、双精度浮点运算指令和ASIMD处理 指令&#xff0c;主…...

【REST2SQL】15银河麒麟系统下达梦数据库部署REST2SQL

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…...

晶体管输出光耦和逻辑输出光耦

晶体管输出光耦&#xff08;非线性&#xff09;和逻辑输出光耦&#xff08;线性&#xff09;的区别&#xff1a; 逻辑输出光耦的电流传输特性曲线是非线性的&#xff0c;适合于开关信号的传输&#xff0c;不适合于传输模拟量&#xff1b; 光电晶体管输出光耦的电流传输特性是线…...

智能生活综合平台需求规格说明书

一、引言 1.1 编写目的 本需求规格说明书旨在明确智能生活综合平台的功能、性能、用户界面等方面的需求&#xff0c;为平台的开发、测试和部署提供详细的指导&#xff0c;确保平台能够满足用户在社交、购物、教育、医疗、政务等多个领域的智能生活需求&#xff0c;提升用户的…...

绕过过滤order by

一、常见绕过技术 1、注释符截断 利用注释符&#xff08;如 --、#&#xff09;截断后续查询&#xff0c;消除过滤逻辑的影响。 ORDER BY 1-- 若原查询为 SELECT * FROM table ORDER BY 用户输入&#xff0c;注入后可能忽略后续过滤逻辑。 2、大小写混淆/编码绕过 若过滤是大…...

计算机网络之传输层(传输层的功能)

一、数据分段与重组 传输层从会话层接收数据&#xff0c;并将其分割成较小的数据段&#xff0c;以适应网络层的最大传输单元&#xff08;MTU&#xff09;限制。在目的端&#xff0c;传输层负责将这些数据段重新组合成原始数据&#xff0c;确保数据的完整性和正确性。 二、端口…...

面试八股文--数据库基础知识总结(1)

1、数据库的定义 数据库&#xff08;DataBase&#xff0c;DB&#xff09;简单来说就是数据的集合数据库管理系统&#xff08;Database Management System&#xff0c;DBMS&#xff09;是一种操纵和管理数据库的大型软件&#xff0c;通常用于建立、使用和维护数据库。数据库系统…...

优化 Flink 消费 Kafka 数据的速度:实战指南

在使用 Flink 消费 Kafka 数据时&#xff0c;你可能会遇到 消费速率较慢 的问题。本文将从 Kafka 并行消费、批量拉取、Checkpoint 频率、Consumer Poll 速率 以及 Flink 任务 Slot 资源 等多个方面&#xff0c;详细解析如何优化 Flink 消费 Kafka 的速度。 &#x1f525; 1. 增…...

轮式机器人在复杂地形中如何选择合适的全局路径规划算法?

已思考完成 收起 嗯&#xff0c;用户问的是轮式机器人在复杂地形中如何选择合适的全局路径规划算法。首先&#xff0c;我需要理解复杂地形可能带来的挑战&#xff0c;比如崎岖的路面、动态障碍物、非结构化环境等等。轮式机器人在这里的运动控制需要考虑地形通过性、稳定性&…...

数据结构与算法:动态规划dp:买卖股票相关力扣题(下):309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费

309. 买卖股票的最佳时机含冷冻期 首先我们要明确&#xff0c;如果全程只能买卖一次或者允许买卖多次&#xff0c;那么我们就没必要记录无操作这个状态。 如果买卖的次数为k&#xff08;k≥2&#xff09;&#xff0c;那么我们才要记录无操作这个状态&#xff0c;以此来区分具体…...

[uboot][stm32]配置LTDC屏幕

文章目录 前提dts设备树修改Kconfig日志打印后记 https://github.com/wdfk-prog/u-boot 前提 手上刚好有块屏幕,尝试在uboot中点亮一下使用前请使用其他手段点亮该屏幕确保屏幕的完好再进行操作.确保配置的参数及引脚是可用的. dts设备树修改 ltdc状态修改为重定向前绑定,另…...

机试刷题_1614. 括号的最大嵌套深度【python】

1614. 括号的最大嵌套深度 class Solution:def maxDepth(self, s: str) -> int:maxD 0if not s:return maxDstack []for char in s:if char(:stack.append(char)maxD max(maxD,len(stack))elif char) :stack.pop()return maxD...

VM虚拟机安装与配置Ubuntu Linux操作系统详细教程~

一、下载VM虚拟机 VMware16.0.zip百度网盘下载链接:https://pan.baidu.com/s/1-l-CcAVNINqhRLSiQ26R7w?pwd=tznn 提取码: tznn 二、软件介绍 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…...

2025年2月科技热点深度解析:AI竞赛、量子突破与开源革命

引言 2025年的科技领域持续呈现爆发式增长&#xff0c;AI大模型竞争白热化、量子计算商业化加速、开源工具生态繁荣成为本月最受关注的议题。本文结合最新行业动态&#xff0c;从技术突破、商业布局到开发者生态&#xff0c;全面解析当前科技热点&#xff0c;为读者提供深度洞…...

免费PDF工具

Smallpdf.com - A Free Solution to all your PDF Problems Smallpdf - the platform that makes it super easy to convert and edit all your PDF files. Solving all your PDF problems in one place - and yes, free. https://smallpdf.com/#rappSmallpdf.com-解决您所有PD…...

组件注册方式、传递数据

组件注册 一个vue组件要先被注册&#xff0c;这样vue才能在渲染模版时找到其对应的实现。有两种注册方式&#xff1a;全局注册和局部注册。&#xff08;组件的引入方式&#xff09; 以下这种属于局部引用。 组件传递数据 注意&#xff1a;props传递数据&#xff0c;只能从父…...

IPD流程适合创业团队吗?

目录 简介 创业团队 作者简介 简介 回答这个问题&#xff0c;就不能只局限于 IPD 流程本身。 而是要先回答为什么需要 IPD 流程&#xff1f; 在 IPD 思维这篇文章&#xff0c;我也强调过这个观点&#xff1a; IPD 本身是为过剩经济量身定做的一种模式、一种思维。 包括…...

异步fifo学习

FIFO 本质是由 RAM 加上读写逻辑构成的先入先出的数据缓冲器。与 RAM 的区别是 FIFO 没有外部读写地址线&#xff0c;顺序写入顺序读出数据&#xff0c;其数据地址是由内部读写指针自增完成&#xff0c;因此 FIFO 在读写时不需要考虑读写冲突的问题。 根据 FIFO 工作的时钟域&a…...

【有啥问啥】All-to-All 通信:原理、实现与应用

All-to-All 通信&#xff1a;原理、实现与应用 一、引言 在分布式计算和并行处理领域&#xff0c;进程之间的通信是至关重要的。All-to-All 通信作为一种高效的通信模式&#xff0c;广泛应用于各种高性能计算和分布式系统中。本文将详细介绍 All-to-All 通信的定义、工作原理…...