Android动态逆向分析工具Andbug之基本操作.docx
- 文档编号:29293612
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:22
- 大小:5.20MB
Android动态逆向分析工具Andbug之基本操作.docx
《Android动态逆向分析工具Andbug之基本操作.docx》由会员分享,可在线阅读,更多相关《Android动态逆向分析工具Andbug之基本操作.docx(22页珍藏版)》请在冰豆网上搜索。
Android动态逆向分析工具Andbug之基本操作
Android动态逆向分析工具——Andbug之基本操作
1、Andbug的基本操作
1、下载andbug
修改版本:
gitclone
作者原版本:
gitclone
2、对andbug的部分模块进行编译
在Andbug文件夹中使用make命令进行编译
3、对文件路径进行设置
在Andbug文件夹中的andbug文件中,以下修改,修改
sys.path.append(“”)中的路径,比如作者将Andbug下载到了“/home/anbc/test/test/Andbug/”路径中,将sys.path.append(“/home/anbc/test/test/Andbug/lib”)
[
4、启动虚拟机
emulator-avdAndroid_3
5、查看当前的进行信息
可以看到浏览器应用的进程id是920,包名是:
com.android.browser
6、启动andbug
./andbugshell-pcom.android.browser
Andbug有两种启动方式,一种是以进程id方式启动,一种是以包名方式启动
通过进程id或者包名指定对某个apk进行调试。
如图:
以包名方式启动,进入andbug的shell中
7、列举apk中的类信息
命令:
classes
作用:
列举出指定apk中使用的所有的Class信息,包括apk中自己实现的Class以及所调用的系统class信息
另外classes命令后边可以跟Class名称的信息,通过添加名称信息,可以列举出符合条件的class的信息。
如:
classesapp
如图,列举出所有类路径中包含了app字符串的类信息
8、列举指定类的方法信息
命令:
methodsandroid.app.NotificationManager
功能:
列举出android.app.NotificationManager类中的所有方法信息
其中以android.app.NotificationManager.from(Landroid/content/Context;)Landroid/ap
p/NotificationManager;为例。
android.app.NotificationManager——为类名
from——函数名
Landroid/content/Context;——from函数的参数类型
Landroid/app/NotificationManager;——from函数的返回值类型
9、断点操作
9.1对类设置断点,所有设计该类的操作都会终止下来
breakjava.io.File
可以通过break-list命令查看断点设置情况
9.2对方法进行断点设置
通过下面命令对函数进行中断
>>breakjava.io.Filedelete
9.3断点触发的情况
设置断点后,操作apk程序,一旦程序出发了某个设置的断点,整个程序就会挂起,并显示相关信息。
通过输出的信息可以知道,apk由于调用了java.io.File.exists()Z:
0函数被中断下来。
其他信息还包括整个调用java.io.File.exists()Z:
0函数的堆栈信息。
9.4删除已设置断点
通过break-remove536870916
将之前设置的中断删除掉
另外:
break-removeall表示删除所有当前设置的断点。
10、恢复运行
命令:
resume
功能:
触发断点整个进程暂停后,通过调用resume命令,继续运行该apk
注:
由于代码中bug的原因,需要连续两次调用resume命令才能恢复apk的运行
如上图,执行两次resume命令后,恢复apk的运行,由于对整个java.io.File类设置了断点,应用又中断在java.io.File.
11、进程暂停命令
命令:
suspend
功能:
暂停当前apk进程
由于还没有与该命令配合使用的命令,实际使用中没有太大作用
12、帮助命令help
13、class-trace类跟踪命令
命令:
class-tracejava.io.File
功能:
对java.io.File类的调用情况进行跟踪
可以看到“thread<15>BackgroundHandler”线程,调用了“java.io.File.renameTo”,调用的参数是:
--this=Ljava/io/File;<830018592096>
--newPath=Ljava/io/File;<830016257352>
并且可以看到整个的堆栈调用的情况。
取消跟踪也可以使用break-remove命令实现。
14、method-trace方法跟踪命令
命令:
method-tracejava.io.FilerenameTo
功能:
对java.io.FilerenameTo函数进行跟踪,跟踪与直接设置断点的差别是,使用跟踪不中断目标进程的执行,只对相应函数的调用信息进行输出。
获取函数调用的跟踪信息
15、列举当前线程信息
命令:
threads
16、对线程进行跟踪
命令:
thread-trace
将main线程设置为跟踪县城,所有main县城相关的调用都会被跟踪下来,如图所示:
会列出函数调用的情况,参数,以及堆栈情况。
17、显示指定类中的静态变量的信息
命令:
staticscom.android.internal.view.menu.MenuBuilder
18、查看对象信息
通过class-trace命令可以跟踪到目标函数中对象的Id信息,
通过对象的Id使用inspect命令,可以查处该队形的详细信息。
由于在break命令设置断点后,触发断点时反馈的信息,没有包含ObjectId的信息,导致inspect命令用起来不是很方便。
19、源码关联命令
命令:
source与源代码关联起来,可以是smali代码。
命令:
dump展示指定方法的代码。
20、Web输出命令
命令:
navi
注:
为了支持navi命令,需要安**ottle库。
需要bottle库。
应该是一个web展示的页面
需要安**ottle库,来实现。
21、退出命令
命令:
exit
Android动态逆向分析工具
(二)——Andbug扩展功能
标题:
【原创】Android动态逆向分析工具
(二)——Andbug扩展功能
作者:
anbc
时间:
2014-01-05,10:
40:
29
链接:
本文所述功能是在andbug原有功能的基础上实现的信息的功能,包括对apk运行时行为监控功能的实现,以及获取apk更详细信息的功能的实现。
Andbug作为一个用于动态逆向分析apk的工具来说目前只实现了相对简单的功能,还不能算是一个完整功能的调试器。
好在原作者将工具的所有代码都开源了,我们可以根据自己的实际需求增加信息功能,本文作者主要增加了对apk运行时的行为进行动态监控的功能,详细信息位于:
一、扩展功能实现
1、davlik虚拟的对java的支持情况
具体含义请查阅相关资料
2、类的详情
命令:
class-detailjava.io.File
功能:
展示出指定类的成员方法、成员变量和静态变量的信息
3、方法的详细内容
命令:
method-detailjava.io.Filemkdir
4、对apk的运行进行监控
4.1执行监控命令
命令:
./andbugmonitor-pcom.android.browser
功能:
对浏览器的运行情况进行监控
4.2、监控点在monitor_fun.conf文件中配置
4.3、监控到的日志信息
4.4、可视化处理后的监控数据
需要进一步完善的功能
1、断点设置功能
目前的断点设置功能,仅支持类和方法上设置断点,在代码的其他未知还不支持设置断点。
要想实现一个完整的逆向调试器,需要实现更丰富的断点功能。
2、单步调试功能
目前调试器还不支持单步调试功能,只能在具体函数调用处设置断点对该处程序的运行情况进行查询,需要进一步增加单步调试功能,包括
调试时与代码的关联处理
目前虽然后关联源码的的功能,但是很不完善。
关联是需要进一步分别支持汇编代码和java代码不同源码形式的关联,并且将源码显示和断点设置,单步调试等功能联动起来,才是一个完整的逆向调试功能。
4、对运行中的apk应用的行为进行动态监控
这部分作者已经增加了一部分功能,但是还很不完善,很多功能需要细化。
欢迎大家一起交流。
5、其他功能的丰富
目前就想到了这些待实现的功能,可以丰富的功能还有很多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 动态 逆向 分析 工具 Andbug 基本 操作