文档章节

Android逆向之路---IDEA动态调试smali语言

MartinHan
 MartinHan
发布于 2017/03/21 15:30
字数 824
阅读 355
收藏 0

## 前言

apk在混淆了之后我们通过静态分析有时候是远远不够的,就需要动态调试了,在以前我们用的都是eclipse配合apktool动态调试apk,如今android studio如此普及,我们可以用IDEA调试

## 准备的工具

- idea 14 下载地址

- smalidea-0.03.zip 下载地址

- apktools

- 我的mytestapp 下载地址

注意:idea推荐用14,不推荐用最新的android studio,因为本人测试,最新的android studio装上smalidea0.03后打不上断点

## 准备打出可调试的apk

使用apktools拆包,执行命令


apktool d mytestapp.apk

如图

然后我们进入mytestapp文件夹,编辑AndroidManifest.xml,在Application标签里面加上android:debuggable="true",这样我们再回编译的时候就可以调试了,由于我的apk是debug版本所以会默认带

这里写图片描述

修改完之后我们执行指令回编译,如图


apktool b mytestapp

这里写图片描述

执行完成我们进入mytestapp\dist文件夹,对我们编译好的文件进行签名,把我的签名文件MartinHan.jks (下载地址) 拷贝到当前文件夹,密码输入:111111。

然后安装签名后app到手机


jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "MartinHan.jks" -signedjar _signed.apk "mytestapp.apk" "111111"



adb install _signed.apk



## 正确配置IDEA,安装smalidea插件,准备调试

我们安装好IDEA,然后准备安装smalidea插件 File -> Settings -> Plugins

然后点击 Install plugin from disk 如图

这里写图片描述

然后安装完成了之后我们重启IDEA。编译器就配置好了

## 开始配置动态调试

我们打开IDEA,File -> Open,然后选择我们mytestapp文件夹,就是我们执行apktool d mytestapp后生成的文件夹。

点击OK,用IDEA将这个文件夹当成一个项目打开。

点击Run -> Edit Configurations 打开如图所示对话框,点击绿色加号,选择Remote

这里写图片描述

接下来把端口改成8700,如图

这里写图片描述

点击ok确定,远程调试我们就配置好了,动手开始调试。

## 开始调试

我们首先在手机端打开mytestapp,如图  

这里写图片描述

打开ddms我们就看到回编译的程序了,并且是可调式状态,我们鼠标选中这个进程  

这里写图片描述

然后我们点击IDEA的调试,按钮,如图  

这里写图片描述  

然后我们的IDEA出现了连接上了,表示现在已经可以动态调试了

这里写图片描述

## 打断点,单步调试

根据静态分析,我们分析到了MainActivity$1的onClick方法就是我们点击Button以后触发的事件,我们打好断点,我在MainActivity$1的第54行打好断点,如图

这里写图片描述

此时我们点击Button,发现断点断到了这里,如图  

这里写图片描述

至此,用IDEA动态调试android apk成功

## 写在结尾

这个apk是我写的一个apk,在真正的动态调试中,很有可能,开发人员在程序中加入了检测调试器的代码,还需要自己鉴别代码,并且注释掉,或者更改掉。

还有的apk进行了加壳,需要首先脱壳。

© 著作权归作者所有

MartinHan
粉丝 0
博文 18
码字总数 5612
作品 0
朝阳
Android工程师
私信 提问
Android 逆向分析(三)之动态调试Smali

动态调试smali 实战 反编译后修改AndroidMainfest.xml 在Application节点下添加 android:debuggable="true" 回编译用原来签名 打包apk 重新装到手机上 工具,现在我们开发都用的是Android S...

蔡小鹏
2017/03/24
165
0
基于Android studio动态调试smali全过程

1 工具和环境 Android studio 用于集成idea插件和导入smali源码 idea插件 插件下载 或者在studio中搜索Smalidea进行插件下载(要翻墙) 在Android studio中通过idea插件来调试smali和在idea中...

gavinme
2018/07/23
0
0
无名Android逆向数据分析

第1课 恋恋DES加密初探+smali注入调试 第2课 stl逆向+jni动态加载识别+YOYO卡sha1实战 第3课 4399游戏盒DES-CBC算法+自定义salt分析 第4课 IDEA动态调试搭建与HTTPS抓包 第5课 搜狐AES+MD5+S...

13269051240
2018/05/21
0
0
Android当道,不加密的APP必死

我的题目有点夺人眼球,也当然有喷喷不平者觉得我是危言耸听,那就好好听听我说的是不是有那么一丁点道理。 标题中的APP请排除那些只想靠APP推送广告的小众开发者,诚然这些开发者的出发点并...

科技创造
2014/09/24
552
2
Android应用程序逆向入门

  我们每天都会在Google Play商店看到一系列新的Android应用程序,从游戏到公用设施,再到物联网设备客户端等等,几乎我们生活中的每一个方面都可以通过一个app以某种方式进行控制。我们有...

FreeBuf
2018/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部