本博客地址:.net/article/details/82930699
一、使用IDA动态调试.so文件
1.1、应用体系架构:动态分析分析什么?
代码安全分析。有无被篡改,盗版等风险,是否容易被反编译,重打包。
组件安全分析。四大组件和通信Intent分析,以及他们权限使用不当带来的问题。
存储安全分析。对存储的私有文件,证书文件,数据库文件进行安全验证分析,尤其是明文数据。
通信安全分析。通信传输中的加密等问题。
漏洞分析。有无安全漏洞以及漏洞危害。
系统安全分析。有无系统缺陷。
二、调试步骤
工具:IDA(32位/非常重要)。以下步骤基本可以绕过反调试了,反调试在后边有说明
2.1、架设调试桥
1、上传IDA调试服务器地址:
G:\xxxxxx\IDAPro70\dbgsrv\android_server
//保证IDA和设备的正常通信
- 1
- 2
2、cmd进入到该目录下: G:\xxxxxxx\IDAPro70\dbgsrv\
3、导入IDA调试服务器:adb push android_server /data/local/tmp
4、adb shell
5、cd到/data/local/tmp下:chmod 777 android_server
6、./android_server(如果失败重启手机)
2.2、部署安卓
1、端口转发:
adb forward tcp:23946 tcp:23946
- 1
2、查看23946端口的使用情况:
netstat -ano | findstr 23946 //实际中不用查看,成功转发了即可
- 1
3、adb shell下执行:
am start -D -n /(包名/启动页面) //启动页面不一定是这样
- 1
4、会弹出框
5、抓包进行信息搜集,包括关键URL、关键字段等。
2.3、部署IDA(此时打开IDA就行,点击“go”,不要添加任何东西)
建议打开两个IDA界面,一个用于动态调试,另一个用户静态查找
1、IDA-debugger-Attach-remote ARMlinux/Android debugger
2、填入IP(localhost/127.0.0.1)、密码没有不用填,保存默认网络设置
3、高级设置:左边345,右边:235,下面:3。保存设置
4、点击要调试的包名选入
5、此时相关的应用程序将显示红色蜘蛛
2.4、开始调试
1、在IDA中点击运行(此步骤非常重要) //也可以先执行第二步
2、输入命令:
jdb -connect :port=8700,hostname=localhost
//新建命令执行
- 1
- 2
3、点击debugger-debugger windows-module list
,并在窗口找到要调试的程序
4、在IDA中暂停调试按钮,暂停当前调试。F9重新开始调试
5、在找到的要调试的程序下,继续寻找我们需要下断点的函数处。此时so已经加载进来,先获取JNI_OnLoad函数的绝对地址。Ctrl+s即可找到基地址,静态搜索关键字即可得到先相对地址,相加即可得到绝对地址,然后跳转到绝对地址即可。注意下断点
6、在汇编代码处,按下alt+T,搜索断点函数名
7、下断点,运行IDA,如果在断点处停止,说明已经可以进行断点动态调试
8、重点在中下断点,因为该文件是C层中最基本的函数库,libc中封装了io、文件、socket等系统基本调用。也可以是或者中下断点
2.5、调试WebViewApp
1、chrome插件调试,类似于firebug。按F12可以召唤该工具
2、WebView已知漏洞
A、远程代码执行漏洞。
是webview中使用了javascriptInterface造成的,让远程网页执行本地命令。
B、UXSS漏洞。
通用型XSS是一种利用浏览器或浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型,导致浏览器全局远程执行命令,绕过同源策略,窃取用户资料,劫持用户等危害。
3、网络钓鱼(涉及二维码安全)。SQL注入攻击。