Android逆向--如何调试smali代码?

news/2024/7/1 4:07:42

最近在重整Android逆向分析环境,一切都在从零开始,做下记录,给大家分享。

本文介绍Android逆向中smali代码的调试及环境的准备。

事先准备如下工具:

Android killer:反编译APK应用为smali源码的工具

Android studio:调试smali工具

smalidea:Android Studio调试smali需要安装的插件

Android Device Monitor:用来查看待调试进程和端口

待分析应用和调试手机:废话

01

获取smali

我们拿到一个Android的APK应用后,使用Android killer很容易就将它转换成smali工程文件,这个就不用详细介绍了,注意如果需要请将里面用到的APKtool更新成新的,反编译完成的内容像下面这样子:

 

02

Android Studio插件安装

反编译出来的smali文件,如果Android Studio没有安装smalidea插件,是没法直接调试的,导入Android killer产生的工程,在Run菜单下,可以看到加断点的项都是灰色的:

smalidea插件是用来使Android Studio可以调试smali的插件,下载地址是:https://bitbucket.org/JesusFreke/smali/downloads/

在这个页面找smalidea,最新版本是smalidea-0.05.zip。其它的下载链接可以忽略,是做其它的事情的,这里用不上。

下面描述smalidea安装过程,从Android Studio的File-->settings菜单进入,点plugins标签进入插件安装页面:

再点击按钮 Install plugin from disk...,选择你提前下载好的smalidea压缩包再点ok进行安装:

安装完可以在Plugins页面看到安装的插件,需要重启Android Studio才能生效:

重启后,就能正常调试加断点了:

下面,就可以来调试了。

03

调试过程

Android Studio调试首先需要进行调试的配置,在菜单Run-->Edit Configurations...下,打开configuration页面,左上角有个+,选择remote:

出现具体的配置页面:

注意选中的端口框,需要根据Android Device Monitor中待调试进程的具体情况修改,或者直接8700。

在Android Device Monitor中,会看见进程和端口信息:

左侧第一栏是进程名,第二栏是进程号,第五栏是端口,选中一个进程,则会看见端口这栏有两个值,8xxx/8700这样子,如果调试配置中写的是8700,则在debug时,需要在ADM中选中具体进程,如果不想这样,则需要配置前面的8xxx这个值。

在下方的logcat里,还能看到进程的运行日志,有的时候需要用到,不过这里暂时用不到。

当然如果你使用adb shell命令从头开始启动应用调试,则直接使用8700就可以了。

另外,你还可以使用adb forward 命令进行端口转发,将调试手机的某个进程与调试机器配置的端口之间建立通道,从而进行调试,只是没有上面那样方便。

配置完了后,就可以正式调试了,点菜单Run-->Debug'xxxx',其中xxxx是你上面配置的调试项目名称,默认是unnamed:

你可以在smali的需要调试的地方打断点,当程序运行到你设置的断点时,就会断住,各类窗口很丰富,可在variables窗口看到或修改当前状态的一些变量,frames窗口看到调用层次,还可以在watches窗口中加寄存器变量进行观察和修改:

当然,需要注意,有些地方没办法加断点,那就在前后合适的地方加,还有些地方部分寄存器值无法查看,那就换个方式,具体问题具体分析,这里只是介绍常规方法。

 

04

总结

这是最基础的工具使用,希望能对一些朋友有帮助。


长按扫码进行关注,时刻进行交流。


http://lihuaxi.xjx100.cn/news/237685.html

相关文章

svg: svg预定义的形状

SVG 有一些预定义的形状元素&#xff0c;可被开发者使用和操作&#xff1a;矩形 <rect>圆形 <circle>椭圆 <ellipse>线 <line>折线 <polyline>多边形 <polygon>路径 <path> 矩形 <rect x"20" y"20" width&qu…

grafana美人鱼_编码美人鱼–我如何从海洋生物学家转到前端开发人员

grafana美人鱼I have wanted to share my story for a while, but I didn’t know exactly how to start, or even what name to give it. 我想分享我的故事一段时间&#xff0c;但我不知道确切的开头&#xff0c;甚至不知道用什么名字。 But recently I was talking with som…

Android拍照得到全尺寸图片并进行压缩/拍照或者图库选择 压缩后 图片 上传

http://www.jb51.net/article/77223.htm https://www.cnblogs.com/breeze1988/p/4019510.html

记一次知乎维权过程——严肃批评某非法引流商

“ 我的文章被人盗版了。” 首先请关注本号的云技术君的马甲赶快取关&#xff0c;这里不欢迎你&#xff0c;你如果再抄我的文章去干坏事&#xff0c;你全家得新冠肺炎。 文章被盗版&#xff0c;被洗稿&#xff0c;且用来给菠菜党引流&#xff0c;我很生气。 好了&#xff0c…

AI让你看片更丝滑

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由腾讯音视频实验室发表于云社区专栏 在线“看片”时&#xff0c;我们经常会遇到这些事情&#xff1a;视频画面突然卡住进入缓冲状态或者视频画面突然变得模糊而不忍直视。这些事情的背后很可能是网络环…

Axure8.0 网页 or App 鼠标滚动效果

1、index 页下添加一个内联框架&#xff0c;设置好自己想要的尺寸。 2、右键点击该内联框架转换为动态面板&#xff0c;并取消勾选“自动调整为内容尺寸”。 3、双击 “内联框架”选择并双击“state1” 切换到“内联框架的state1”页面&#xff0c;将“内联框架”组件的滚动条设…

aws 认证_引入#AWSCertified挑战:您的第一个AWS认证之路

aws 认证You may already know that Amazon Web Services (AWS) is the largest, oldest, and most popular cloud service provider. But did you know they offer professional certifications, too?您可能已经知道Amazon Web Services(AWS)是最大&#xff0c;最古老和最受欢…

共识算法PBFT算法

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自https://www.liankexing.com&#xff0c;未经允许拒绝转载。 笔者初学区块链&#xff0c;很多东西也是慢慢摸索&#xff0c;之所以写下这些基本概念一方面作为自己学习的整理&#xff0c;另一方面也…