idea后台android,IDEA动态调试安卓应用的方法分享

本文详细介绍了如何使用IDEA、smalidea和baksmali动态调试Android应用程序,从反编译APK到设置远程调试配置,再到利用Device Monitor和ADB工具进行调试,适合有一定逆向基础的开发者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本帖最后由 wnagzihxain 于 2016-8-4 21:00 编辑

评论里不少同学说看不懂:没有安卓逆向基础的同学不建议看着一篇

想学习逆向的同学先去看繁华的入门教程,那几篇写的还不错的

有了一点逆向基础再来看这一篇动态调试就会比较容易了

看到了有同学对动态调试APP有疑惑,在回帖中也没办法讲清楚,所以就在这里分享一下自己的动态调试方法

我使用的是IDEA+smalidea+baksmali

讲讲这些工具的作用:

IDEA:开发安卓的好帮手,Android Studio就是根据这个改的

smalidea:一个可以调试smali的插件,搜一下就可以找到的,怎么安装插件就不说了

baksmali:生成smali

IDA动态调试APP不是不可以,我测试的时候不能查看寄存器的值,有一点不好用(可能是我不会用,反正是没有看到寄存器的值)

IDEA这个方法还是不错的,可以下断点,有寄存器的值,界面也是很友好,断点位置非常明确,单步调试的体验也非常好

所以,开始吧

很多时候,安卓端应用,不仅仅是恶意APP,都会对自身资源进行加密,这里先不讨论加壳之类的

我们直接反编译出来,发现里面的字符串都被加密了,需要在动态运行的时候调用某些解密算法进行解密,比如作者自己写的解密方法,或者安卓自带一些加解密的算法,这样就比较尴尬了,静态分析就什么都看不出来了

所以在一些比较正常的APP分析中,动态分析结合静态分析就比较好

那么就先来讲讲怎么动态分析一个APP

为了好描述,我写了一个简单的Demo

你看,很简单吧

解释一下:定义了一个textview,这个就是显示字符串用的,还有一个button,在button的点击事件中,点击则将textview里的字符串改为wnagzihxain

55fd2b2273b5a8b4531f72773c469d6e.gif

1.png (200.41 KB, 下载次数: 10)

2016-5-29 19:55 上传

点击button,触发点击事件,效果上下一对比就可以看出来

55fd2b2273b5a8b4531f72773c469d6e.gif

2.png (196.94 KB, 下载次数: 8)

2016-5-29 19:55 上传

好了,现在生成apk,签名等等。。。。。。

这些东西我这里就不讲了,毕竟和剧情无关

为了梳理各种文件,我建了一个文件夹:Love52pojie,生成的apk就放在这个文件夹里

然后就没有Android Studio什么事了,关掉就好

然后用baksmali反编译一下

[Shell] 纯文本查看 复制代码baksmali app-release.apk -o Debug/src

打开IDEA,导入刚才反编译出来的文件

55fd2b2273b5a8b4531f72773c469d6e.gif

3.png (241.41 KB, 下载次数: 9)

2016-5-29 20:08 上传

选择第一个,剩下的一路next

55fd2b2273b5a8b4531f72773c469d6e.gif

4.png (225.34 KB, 下载次数: 9)

2016-5-29 20:08 上传

如图点击

55fd2b2273b5a8b4531f72773c469d6e.gif

5.png (77.07 KB, 下载次数: 9)

2016-5-29 20:08 上传

选择Edit Configurations

55fd2b2273b5a8b4531f72773c469d6e.gif

6.png (113.42 KB, 下载次数: 9)

2016-5-29 20:08 上传

点击"+",选择"Remote"

55fd2b2273b5a8b4531f72773c469d6e.gif

7.png (50.18 KB, 下载次数: 7)

2016-5-29 20:08 上传

主要是端口填8700,然后确认就行

55fd2b2273b5a8b4531f72773c469d6e.gif

8.png (57.35 KB, 下载次数: 9)

2016-5-29 20:08 上传

File->project structure

55fd2b2273b5a8b4531f72773c469d6e.gif

9.png (82.35 KB, 下载次数: 9)

2016-5-29 20:08 上传

如图选择

55fd2b2273b5a8b4531f72773c469d6e.gif

10.png (57.65 KB, 下载次数: 9)

2016-5-29 20:08 上传

到这里就已经完成IDEA的配置了

接下来打开Device Monitor,同时开启模拟器

55fd2b2273b5a8b4531f72773c469d6e.gif

11.png (85.49 KB, 下载次数: 8)

2016-5-29 20:08 上传

CMD里输入

[Asm] 纯文本查看 复制代码>adb shell am start -D -n com.example.wangz.love52pojie/.MainActivity

注意观察Device Monitor

55fd2b2273b5a8b4531f72773c469d6e.gif

12.png (196.79 KB, 下载次数: 10)

2016-5-29 20:08 上传

要用鼠标选中当前调试的程序,两个数值看上图,记得对应

[Asm] 纯文本查看 复制代码>adb forward tcp:8700 jdwp:1464

55fd2b2273b5a8b4531f72773c469d6e.gif

13.png (190.28 KB, 下载次数: 8)

2016-5-29 20:08 上传

要是没出现什么奇怪的东西那就是成功了

先随便下个断点

然后Run里面Debug 'Love52pojie'跑起来

55fd2b2273b5a8b4531f72773c469d6e.gif

14.png (182.61 KB, 下载次数: 9)

2016-5-29 20:08 上传

可以看到断下来了,看着很爽吧,下面v0之类的值都有

55fd2b2273b5a8b4531f72773c469d6e.gif

15.png (211.3 KB, 下载次数: 9)

2016-5-29 20:08 上传

这张更能体现

55fd2b2273b5a8b4531f72773c469d6e.gif

16.png (201.02 KB, 下载次数: 10)

2016-5-29 20:08 上传

好了,到这里就已经完成了

遇到任何问题都可以在下面回复,我看到会及时回复的

结尾彩蛋:

andriod的apk文件相关的编译反编译工具

idea代码调试debug篇

解密所有APP运行过程中的内部逻辑

Smalidea+IntelliJ IDEA/Android Studio动态调试安卓app教程

最后:写的时候也参考了上面几篇文章,觉得对于没有接触过动态调试还是有些不好懂的,所以写的时候有些地方特意多写了点

补充:

(1)如何查看寄存器的值?

寄存器的值并不会直接在调试过程中显示出来(我这里没有,不清楚其它人那里什么情况),如果你那也没有,点击右下角"watch"那个位置,添加你要查看寄存器的值,v0,p0,p1之类的,这样在单步的时候寄存器值就会打印在下面的窗口了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值