如何对反编译的安卓应用进行调试并修改
- 安卓修改大师可以在没有源代码的情况下,直接反编译已经打包的APK安装包,通过修改SMALI代码实现添加和去除部分功能,并在应用的任何地方添加任意代码,增加任意任何您想实现的功能。通过这种方式,把该应用变为您自己的应用(通过安卓修改大师反编译生成的新应用仅供个人学习反编译知识,严禁用于商业用途)。
- 大部分情况下,通过安卓修改大师反编译打包的应用都可以正常运行。如果您不幸遇到打包的程序运行崩溃,您必须要借助SMALI代码调试功能来定位错误源头。通过调试smali也可以跟踪破解或者游戏通关的逻辑。
- 通常通过Android studio配合安卓修改大师进行SMALI动态调试(您也可以用Eclipse),下面是调试环境的配置和具体的动态调试方法。
-
如何对反编译的安卓应用进行调试并修改
-
如何对反编译的安卓应用进行调试
1、 所需工具
①Android Studio最新版,下载地址:请自行百度下载
②Smalidea插件,下载地址:smalidea-0.05.zip2、 Smalidea插件配置步骤
安装并运行Android studio,然后在Android studio顶部菜单中选择File->Settings->Plugins,安装之前下载的Smalidea插件。
3、打调试安装包并运行
在打包签名窗口,选择调试安装包选项,按照向导进行打包,该方式所打的安装包包含调试信息,可以通过Android Studio进行Smali代码的动态调试。
请注意,该窗口会显示调试端口和调试地址,在后续的Android Studio参数配置中,会用到这两个参数。调试地址就是反编译的项目地址,您可以在本窗口点击后面的复制按钮直接复制。

打包完成后,根据向导提示安装到手机上。注意窗口底部的USB连接状态的提示,请先将您的手机打开调试模式,并连接到电脑,点击安卓修改大师底部的刷新按钮,确保您的手机和安卓修改大师保持连接状态。

调试包安装到手机后,您就可以打开Android Studio进行动态调试了。

安装包安装到手机上后,在手机上将会出现下图的等待调试的窗口,请不要关闭该窗口,只有在该窗口打开的情况下,才能进行Smali动态调试。

4、配置Android studio进行调试
打开Android Studio,选择Import Project(见下图),也可以在打开的Android Studio中点击顶部的菜单(File/New/Import Project..),然后选择之前强调的调试目录,如图所示:

然后选择Create project from existing sources,之后一直选择next。

成功导入工程后右键点击 Smali目录,设定Mark Directory As->Sources Root

配置远程调试的选项,选择Run-->Edit Configurations:

增加一个Remote调试的调试选项(如果看不到Remote调试选项,请点击左上角的绿色加号添加Remote调试选项),端口选择:8700

设置端口号 8700

之后选择File-->Project Structure 配置JDK

JDK设置为1.8以上

下好断点之后Run->Debug,

稍等几秒,断点触发后就可以单步调试
针对运行闪退方面的问题,重点调试入口Activity和Application类(见安卓修改大师源代码修改/程序入口对应的类)的OnCreate,OnResume和类的初始化方法。在调试开始行的左侧,行数字的右侧点击,放置调试点。

然后就可以通过顶部的Run菜单提供的调试命令进行调试了,一般是通过设置调试点后,点击顶部的调试按钮开始调试,通过不断的按F8逐行调试,观察运行到那一行报错,根据错误有针对性的修改代码或者删除代码行来解决问题。

例如,某个应用运行闪退,通过调试发现只要运行到下图的这一行立刻崩溃,通过删除这一行或者在这一行前面添加一个#号注释该行,保存后,在安卓修改大师重新打包,App即可正常运行了。
准备工作
安装Android Studio和smalidea
-
安卓修改大师/工具箱/网络抓包/下载.. 下载本次用来调试的示例apk
-
https://dl.google.com/dl/android/studio/install/3.5.2.0/android-studio-ide-191.5977832-windows.exe 下载 Android Studio 3.5.2
-
JesusFreke / smalidea / Downloads — Bitbucket 下载smalidea-0.05.zip
-
AlertDialog;->show()V 提示信息弹窗,去掉弹窗或者改弹窗内容会用到 ProgressDialog;->show()V 显示进度条 /Dialog;->show()V 弹出自定义窗口 signatures:[Landroid/content/pm/Signature; 获取签名,去掉签名判断用到 VersionInfo;->versionCode:I 获取版本号,去掉版本更新会用到 JSONObject;->toString(I)Ljava/lang/String; 接口返回解析json … 其他的触类旁通
-
附件:经常用到的调试断点关键字
-
小实验:尝试修改弹出窗口内容。尝试去掉弹出窗口。
-
调试会自动命中设置的断点,并查看每个字段变量的值。利用这种方式,可以在预知某个字段或者方法的情况下,通过设置断点来找到代码位置,并通过修改变量实现改变运行结果。
-
反编译/打包签名/项目打包,打包完毕后,会自动安装到设备上。设备上面可以看到调试窗口提示。Android studio右上角点击带箭头的虫子图标,即可开始调试。
-
添加调试断点:预设一个调试场景,本次调试是为了找到启动弹窗,通过Edit/Find/Find in Path搜索所有的AlertDialog;->show()V,点击左侧添加断点。
-
反编译/打包签名/外部打开编辑/用Android Studio打开编辑,打开的Android Studio将打开Smali项目,注意右下角弹出Config的弹窗,要选择允许配置。然后左上角切换到project的模式。
-
反编译/打包签名/打包参数/打包类型,选择调试安装包的打包模式。反编译/打包签名/打包结果选项,去掉卸载并安装的勾选,方便调试。
-
底部连接真机或者雷电9,以便查看调试状态,建议雷电9打开root模式,方便调试。
-
将上述下载的测试调试的apk拖拽到修改大师界面进行反编译
-
反编译并设置为调试状态打包
-
安卓修改大师/工具/参数配置/Android studio程序路径设置,配置安装的Android Studio3.5.2的程序路径到安卓修改大师。
-
打开菜单 File/Settings/Plugins,右上角的设置图标打开Install plugins from disk,安装smalidea。然后重启集成开发环境。
-
安装Android Studio 3.5.2,更新和配置环境
-
相关文章:
如何对反编译的安卓应用进行调试并修改
安卓修改大师可以在没有源代码的情况下,直接反编译已经打包的APK安装包,通过修改SMALI代码实现添加和去除部分功能,并在应用的任何地方添加任意代码,增加任意任何您想实现的功能。通过这种方式,把该应用变为您自己的应…...
C#实现数据库数据变化监测(sqlservermysql)
监测数据库表数据变化,可实现数据库同步(一主一从(双机备份),一主多从(总部数据库,工厂1,工厂2,工厂数据合并到总部数据)) sqlserver 启用数据库…...
MFC第二十三天 HBrush对闭合图形的填充、CPen、CFont类常用功能与LOGFONT和LOGPEN结构体
文章目录 HBrush对闭合图形的填充HBITMAP位图资源的加载和平铺填充CFont类常用功能与LOGFONT结构体CPen类简介 HBrush对闭合图形的填充 HBRUSH创建: a)实色填充: HBRUSH CreateSolidBrush( COLORREF color);b)栅格线填充: HBRUSH CreateHa…...
深入学习 Redis - 渐进式遍历 scan 命令、数据库管理命令
目录 前言 一、scan 命令 二、数据库管理命令 select dbsize flushdb / flushall 前言 之前我们所了解到的 keys * 是一次性把整个 redis 中所有的 key 都获取到,但是整个操作比较危险,可能会一下子的都太多的 key,阻塞 redis 服务器. …...
python+opencv实现显示摄像头,截取相关图片,录取相关视频
实时显示摄像头图像 按下空格键,截取图片 按下tab键,开始录制摄像内容,再次按下,结束录制 按下Esc键,关闭窗口 import cv2 import numpy#第几章图片 img_count0InitVideoFalse #第几个视频 video_count0 video_flagFa…...
第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法
0.摘要 尽管取得了显著的进展,弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距,我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用…...
指令收集:DOCKER+K8S
docker 1.镜像指令:docker images 1、docker images : 列出本地主机上的镜像OPTION字段说明: -a 列出所有本地镜像, -q 只显示镜像ID2、docker search 某个镜像名字 : 查找某个镜像加上 --limit 5 redisÿ…...
Minecraft 1.20.x Forge模组开发 05.矿石生成
我们本次尝试在主世界生成模组中自定义的矿石 效果演示 效果演示 效果演示 1.由于1.20的版本出现了深板岩层的矿石,我们要在BlockInit类中声明一个矿石的两种岩层形态: BlockInit.java package com.joy187.re8joymod.init;import java.util.function.Function;import java…...
运维面试大全
文章目录 第一阶段你是用过哪些Linux命令Linux 系统安全优化与内核优化经常使用shell脚本做什么软连接与硬链接的区别怎么查看文件IOS七层模型三次握手与四次挥手lvm 逻辑卷创建过程磁盘配额raid 磁盘阵列文本三剑客防火墙iptables与firewardLinux系统资源查询命令日志的八大等…...
【线程安全的讨论(一)】CPU多核缓存架构和JMM
CPU多核缓存架构 一、CPU多核缓存架构可见性问题乱序执行(指令重排) 二、JMM——Java内存模型 一、CPU多核缓存架构 计算机的基本组成图 CPU 缓存为了提高程序运行的性能,现代 CPU 在很多方面会对程序进行优化。CPU 的处理速度很快…...
以太网交换机的生成树协议STP
概述 网络环路带来的问题 广播风暴 广播帧在各个交换机之间反复转发,分别按顺时针和逆时针方向不停的同时兜圈。广播风暴会大量消耗网络资源,使得网络无法正常转发其他数据帧。 主机收到反复的广播帧,会大量消耗主机的资源。交换机的帧交换…...
手机照片转换成pdf怎么做?了解这几种方法就可以了
手机照片转换成pdf怎么做?转换照片为PDF的需求在日常生活中很常见。无论是收集有关旅行、家庭或工作的照片,将它们组织成一个PDF文件可以更方便地分享给朋友或同事。那么下面就给大家分享几个手机照片转换成pdf的方法。 虽然有多种软件和工具可以将照片转…...
跨境电商还有人在做吗,这十大选品技巧建议收藏!
随着电商的快速发展,无论国内或者国外电商,竞争都比较激烈,很多人觉得现在入行太晚了,玩不过那些老卖家。 不过我想说的是:做电商很重要的一点就是选品,那些很早一批老卖家可能也是借着红利期走过来的&…...
HTML快速学习
目录 一、网页元素属性 1.全局属性 2.标签 2.1其他标签 2.2表单标签 2.3图像标签 2.4列表标签 2.5表格标签 2.6文本标签 二、编码 1.字符的数字表示法 2.字符的实体表示法 三、实践一下 一、网页元素属性 1.全局属性 id属性是元素在网页内的唯一标识符。 class…...
centos7搭建k8s环境并部署springboot项目
之前看了很多文章,都是部署后一直报错,百度解决后下次又忘了,这次决定把从头到尾的过程记录下来方便下次再看,部署参考文章尚硅谷Kubernetes(k8s)视频学习笔记_尚硅谷k8s笔记_溯光旅者的博客-CSDN博客 1、…...
nuitka打包软件程序
将python代码打包成exe桌面程序 1、打包参数含义 """-–mingw64 默认为已经安装的visio stdio去编译-–standalone 独立环境,这是必须的(否则拷给别人无法使用)-–windows-disable-console 没有CMD控制窗口-–output-dirout 生成exe到out文件夹下面…...
12-3_Qt 5.9 C++开发指南_创建和使用静态链接库
第12章中的静态链接库和动态链接库介绍,都是以UI操作的方式进行,真正在实践中,可以参考UI操作产生的代码来实现同样的功能。 文章目录 1. 创建静态链接库1.1 创建静态链接库过程1.2 静态链接库代码1.2.1 静态链接库可视化UI设计框架1.2.2 qw…...
conda模式安装paddlepaddle2.4.2版本
conda模式安装paddlepaddle2.4.2版本 一、下载anaconda 2022.10 window-x86-x64.exe 清华镜像源Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,进去后根据自己的需要选择对应的版本下载 下载安装到磁盘空闲空间要大的D:\Pr…...
英语疑问句
文章目录 一般疑问句特殊疑问句 一般疑问句 英语肯定句怎么改成一般疑问句? 1.假如句子中有"情态动词、助动词、be动词"则直接提前。2.假如句子,只有实义动词,就要借助"do,does,did"放在句子前面,并将实义动词改为"…...
k8s证书更新,kubeadm安装的K8S证书过期后无法使用后证书更新方法
k8s证书更新 1. 查看证书过期时间 #通过文件查看证书过期时间 for item in find /etc/kubernetes/pki -maxdepth 2 -name "*.crt";do openssl x509 -in $item -text -noout| grep Not;echo $item;done #通过命令查看证书过期时间 kubeadm certs check-expirationk8…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
