使用IDA动态调试.so文件

时间:2024-10-25 10:44:45

本博客地址:.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注入攻击。