android studio动态调试smali,【AndroidStudio】使用AndroidStudio动态调试Smali文件-程序员宅基地

技术标签: android studio动态调试smali  

1.简介

smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。下载地址为:https://github.com/JesusFreke/smali/wiki/smalidea。Android Studio的安装,就是傻瓜式的安装,一路next下去。接下来笔者介绍一下笔者的软件环境:jdk 1.8,android studio 2.3,smalidea 0.0.5,测试的app是笔者写的一个demo.

2.动态调试Smali需要的软件

调试的过程中需要准备的软件有android studio、smalidea、baksmali。经过笔者的测试,发现不同版本的软件搭配,会得出许多问题。这里笔者测试出,在笔者的软件环境下情况正常,Android Studio动态调试AKP需要的软件集合。

3.动态调试smali

3.1 生成Smali文件

将需要编译的软件放到apktool目录下面。

0b8b30e353af14d5b5aec65c0cd23f01.png

然后执行这个命令:

java -jar baksmali-2.0.3.jar test.apk -o ./projects/test/src

就可以得到projects这个文件夹。

3.2 导入Smali文件

打开visual studio软件,File -> New -> Import Project...

e6cd037c10e06a0a2e394fbd330815fa.png

然后选中上面解压出来的test文件夹

b206556425a6bf4d37cb4053f7232d92.png

接下来,我们就可以在project中看到自己的项目了

727a5a515917a762d43575f8819c2c86.png

3.3 安装Smalidea插件

现在还没有smali插件,所以不会进行语法检查。

File -> Settings...然后选中Plugins,选中Install plugin from disk... ,然后找到解压出来的smalidea 0.0.5.zip文件,点击确认重启,smalidea插件就安装成功了。

8ee0b6ed1c44361e277b38cc21c11f4e.png

这时候,笔者建议点开查看打开smali文件看看,如果在Log台中,出现错误信息,那么表明你的Smalidea版本不对,不能正常解析。

3.4 设置远程监听

点击 Run -> Edit Configurations...  然后点击+号,选择remote。

789fd09011f587af1b7d62fc5e814753.png

然后再设置端口为8700

3254378643a5a1eaf9eab773b484f7b9.png

3.5 查看DDMS

在sdk tools中点击 monitor.bat ,就会看见DDMS,打开客户端的软件端口的信息就会出现,然后选中端口。

5ab609a8d60b109f05f6d2e2b9b21d9f.png

3.6 开始调试

在打好断点后,点击调试按钮。

ce07b1342a2d6012a52c64efd2e1e041.png

然后就会断点处出现调试界面,

b6769af9e26b0c9f101cb6b2341fe982.png

原文:http://www.cnblogs.com/HDK2016/p/8016129.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30697511/article/details/117522149

智能推荐

Base64Decoder使用时找不到包_xvlyc-程序员宅基地

文章浏览阅读568次。使用Base64加解密时,eclipse的设置public static void main(String[] args){String s=“H4sIAAAAAAAAAJVTPW/VMBT9K/wD2/kgbXVlyc/xo1Ff7JA4iNfFS6dKTJ3K72FDQgiQqkclGJgK”+“A1FB3ehQ9krdUCfs5MWJURey+N5zj2/uxzEsi5Uwel0JSqKEAJp8WLYyN0VOX5xg7CJbF2pRqVoP”+“JBeY+7AQTwppcqYFjXBEcI_xvlyc

Flutter中的MaterialButton不能使用全局主题颜色的真正原因_flutter textbutton 设置全局颜色不起作用-程序员宅基地

文章浏览阅读3.1k次。Flutter中的MaterialButton不能使用全局主题颜色的真正原因最近在使用flutter开发项目时遇到的问题,在页面中想设置下按钮的宽度,首先想到的是RaisedButton,主要是有阴影,并且官方推荐的,但是不能设置宽度和高度,然后选用其父类MaterialButton,可以使用minWidth这个属性,也有阴影等效果,但是新的问题,我设置的全局主题中的button颜色,不能应用..._flutter textbutton 设置全局颜色不起作用

.Net Core中的日志组件(Logging)-程序员宅基地

文章浏览阅读783次。1、介绍  Logging组件是微软实现的日志记录组件包括控制台(Console)、调试(Debug)、事件日志(EventLog)和TraceSource,但是没有实现最常用用的文件记录日志功能(可以用其他第三方的如NLog、Log4Net。之前写过NLog使用的文章)。2、默认配置  新建.Net Core Web Api项目,添加下面代码。 [Route("api/..._.net core logging

stm32软件模拟i2c通讯读取lm75a温度_float readtemperature(void){ unsigned char temp[2]-程序员宅基地

文章浏览阅读1.1w次,点赞16次,收藏105次。stm32硬件i2c有着一些bug,此外对于i2c这种通用的串行通信协议,从源头掌握和使用显然更加靠谱一些,当然,对于arm,还是直接操作寄存器来得方便的多。1、I2C协议1.1 i2c串行总线概述采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充更为容易。常用的串行扩展总线有:== I2C (Inter IC BUS)总线==、单总线(1-..._float readtemperature(void){ unsigned char temp[2]={0}; float temp_value=0

一文带你学习,动态规划算法-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏7次。动态规划其实就是,给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后呢,把子问题答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法一般这些子问题很相似,可以通过函数关系式(DP方程)递推出来。动态规划就致力于解决每个子问题一次,减少重复计算。其核心思想就是:拆分子问题,记住过往,减少重复计算一个具体的例子:A : “上面等式的值是多少”B : 计算 “8”A : 在上面等式的左边写上 “1+” 呢?A : “此时等式的值为多少”_动态规划算法

android错误:Installation error: INSTALL_FAILED_VERSION_DOWNGRADE_packageinstaller 代码安装apk install_failed_version_do-程序员宅基地

文章浏览阅读546次。Installation error: INSTALL_FAILED_VERSION_DOWNGRADE,安装过一个开发的APP之后,需要把应用程序的安装包中的包文件目录修改一下,然后就出现了这个问题了,以前也出现过没有太注意,仔细查了一下资料,按其字面意思就是手机上安装的app版本比你当前想要安装的app版本低一些,所以只要提高版本号就好了,修改项目中AndroidManifest.xml文件中_packageinstaller 代码安装apk install_failed_version_downgrade

随便推点

python3之http.server模块_python http.server-程序员宅基地

文章浏览阅读5.7w次,点赞30次,收藏104次。有时候我们需要快速地搭建一个web服务,这时我们就可以使用python里面的http.server模块搭建http服务器。实现的方式有以下几种。BaseHTTPServer模块在Python3中已被合并到http.server1. 命令行启动pyhton -m http.server 80 #pyhton3中启动方式,开启的端口为80python -m SimpleHTTPServer 8080 #python2启动方式这种是常用的方式,很简单。2. 代_python http.server

「面试必背」TCP,UDP,Socket,Http网络编程面试题(快收藏)_socket面试题-程序员宅基地

文章浏览阅读3.7k次。网络通讯在系统交互中是必不可少的一部分,无论是职场面试还是工作中都是绕不过去的,本节我们来谈谈 Java 网络编程中的一些知识和网络编程面试题。1.先看一天面试的经验:2.什么是网络编程3.网络编程中两个主要的问题4.网络协议是什么在计算机网络要做到井井有条的交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。5.为什么要对网络协议分层简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小_socket面试题

android游戏开发入门题大学题,android基础教程ppt-程序员宅基地

文章浏览阅读810次,点赞9次,收藏17次。对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。!文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

前端「HTML+CSS」零基础入门学习笔记_前端【html+css零基础入门学习笔记-程序员宅基地

文章浏览阅读1.3k次,点赞29次,收藏41次。HTML+CSS入门学习,这篇就够了!_前端【html+css零基础入门学习笔记

递推法_递推法的一般步骤-程序员宅基地

文章浏览阅读1.9k次。目录设计思想典型例题一、兔子繁殖问题二、最大公约数三、猴子吃桃问题设计思想 利用所求解问题的本身具有的性质(递推关系)来求得问题解得有效方法。具体的做法是:对于一个问题,可以根据N=n之前的一步(n-1)或多步(n-1,n-2,n-3,·····)的结果推导出n时的解:f(n)=F(f(n-1),(n-2),·····) 称为递推关系式。递推算法的关键问题是得到相邻的数据项之间的关系,即递推关系。一般步骤:(1)确_递推法的一般步骤

@解决方案:GO单级减压阀中国PR1-4AH1Q5C384 #维护保养-程序员宅基地

文章浏览阅读328次,点赞5次,收藏4次。代理销售多种品牌,其中艾默生emerson、阿自倍尔azbil、费希尔fisher、普罗名特prominent、普尔声pulsar、霍克hawk等国外进口品牌在国外均有稳定的货源渠道,100%进口原装正品,序列号可查,价格优势明显,拥有完善的技术支持和售后,还可提供自动化工程技术服务及成套解决方案。经过的不懈努力,福建佰胜目前已与众多世界知名生产厂商达成友好合作关系并取得多个品牌的中国区代理权,并逐步积累了在工控自动化领域关于货源渠道、价格、货期、服务等各方面的巨大优势。16.不得在该类调压阀上使用油脂。

推荐文章

热门文章

相关标签