移动安全-jeb gdb ida三大动态调试方法

很多时候在对apk分析时,静态调试显得苍白无力,需要我们手动算很多东西,而动态调试则可以直接观察结果,一般的方法都需要再手机端运行服务才可以进行调试,下面我们就来学习一下三个调试方法

jeb动态调试

使用jeb打开我们的22.apk文件

见名知意,Certificate:证书,Bytecode:字节码,Resources:资源文件。

双击Bytecode,会打开两个窗口,Bytecode/HierarchyBytecode/Disassembly

两个窗口都显示的是相当于用baksmali反编译后smali下所有文件。
Bytecode/Disassembly是包含在Disassembly一个文件中。
Bytecode/Hierarchy则是以树形结构显示。

Bytecode/Hierarchy中双击指定文件如MainActivity,则会自动定位到Bytecode/Disassembly中对应的定义中。

也可以直接定位到方法和变量中。

标记断点

在Smali中鼠标单击选中行后,快捷键Ctrl+B可以标记和取消断点。

开始调试

需要保证一些条件

查看androidmanifest.xml 的 debuggable

连接手机,设置好断点后,运行设备上被调试的应用,点击菜单栏上调试按钮开始调试。

(但是我没有root的手机 ,所以下面的是云调试。。)

可以实现多种调试功能 单步 步入 步过等

可以查看当前寄存器值 VM/LOCLS

小例子

使用JEB打开文件,分析浏览器跳转apk的原理。这就像我们正在网页浏览百度,突然跳出来一个提示 可以在百度app中查看,点击之后就进入了app,然后继续

刚才的内容浏览,这实际上是一个基于标签的apk跳转功能,我们来分析一下

在manifest中寻找打开浏览器的事件

关键词为android.intent.category.BROWSABLE,这就是通过浏览器可以跳转的功能

找到对应的scheme 和 acctivity  这两个是对应的跳转事件 和 对应的标签

<activity android:launchMode="singleTask" android:name="com.baidu.searchbox.share.social.share.handler.QQFriendShareReceiverActivity">

在二进制代码中找到事件具体代码

QQFriendShareReceiverActivity 直接在bytecode中搜索就可以 可能很慢的

点击反汇编找到源代码,可以找到类中的oncreat事件 观察是如何进行传递参数和处理的,是否有逻辑漏洞

可以观察事件 及参数。

我们还可以看到事件的标签 用于在外部网页中可以引导调用apk

在外部网页调用时 需要编写带有固定标签的网页

<a href=“tencent1106087470://baidu.com“>欢迎来到新世界</a>

IDA的动态调试

设置调试断点

IDA需要将apk文件和IDA pro安装目录下IDA 6.8\dbgsrv\androd_server文件上传到手机,并修改执行权限,命令如下

adb push 22.apk /data/local/tmp/
adb push android_server /data/local/tmp/
adb shell chmod 777 /data/local/tmp/22.apk
adb shell chmod 777 /data/local/tmp/android_server

调试步骤

1  开启android_server,监听23946端口,与IDA pro通信,命令如下

1.  adb shell /data/local/tmp/android_server

2. 分开执行也可以
adb shell 
cd /data/local/tmp
./android_server

开启新的cmd 设置端口转发

adb forward tcp:23946 tcp:23946

打开IDA pro,开启界面选择go,进入IDA 主界面,选择Debugger->run->Remote ARMLinux/Android debugger/,配置如下

点击OK,就会启动android的mytest程序,此时会断在linker的__dl__start函数中,如图所示

我们一般使用的是attach 选择我们的程序

进入之后可以通过view下不同地方的断点,不过由于没有root是看不见其他app的

ida也可以通过正常的调试 而不是进行attach  

GDB动态调试方法

首先说一下大体的步骤:

1. 先要在目标手机的/data目录下把gdbserver push到这个/data/local/tmp目录下,然后运行chmod 777 gdbserver增加执行权限。

2. 在目标手机上运行你要调试的APP,获取这个APP的进程号,比如是18440,然后在目标手机的命令行下执行./gdbserver :1234 --attach 18440,输出如下:

# ./gdbserver :1234 --attach 18440                         

Attached; pid = 18440

Listening on port 1234

表示已经attach到进程2559上了,在tcp端口1234上监听,gdb这边只要也连上1234这个端口就可以了。

3. 在开发机这边的命令行上面启动gdb,然后执行shell命令(shell adb forward tcp:1234 tcp:1234),表示通过adb映射tcp端口1234,命令中前面的是local的端口,后面的是remote的端口,然后再执行命令(target remote localhost:1234)

使用gdb调试的话需要gdbserver,就像IDA中一样将该部分push到手机上,然后调服务,开端口,具体的过程如下:

(别介意 当时忘记点同意调试了)

然后push文件到手机

查看一下进程 找到我们需要的

第二列的18344就是我们的目标进程

>adb push gdbserver /data/local/tmp
>adb shell
cd /data/local/tmp
chmod 777 gdbserver
./gdbserver --attach tcp:31137 18344

这里常见的错误: ./gdbserver: not executable: 32-bit ELF file

原因是我们使用的是arm的ABI(arm为处理器的一种,还有x86等)

所以我们要相应的手机 或者安装对应ABI为arm的虚拟机才可以执行。

没有root的设备,要使用gdbserver 调试app 会遇到权限问题。(emulator 没有问题)

1|shell@mako:/data/local/tmp $ ./gdbserver :31137--attach 18344
Cannot attach to lwp 18344: Operation not permitted (1)
Exiting

Android 系统提供了一个run-as 命令来暂时切换用户,但是这个命令有限制,必须是app 打开了debuggable才行,否则会报 Package xx is not debuggable 的错误。

run-as system_server /data/tmp/gdbserver --attach 31137 :18344

看看我们这个app有没有这个标志

这里无法使用是因为没有root

然后是设置端口转发

关于gdb的使用就不多说了 前面已经讲解了。

https://blog.csdn.net/qq_35559358/article/details/79984935

 https://www.cnblogs.com/xunbu7/p/8086091.html

原文:https://blog.csdn.net/doomvsjing/article/details/73695476 

https://www.cnblogs.com/lao-liang/p/5111399.html

https://blog.csdn.net/itluochen/article/details/52262020

原文:https://blog.csdn.net/Kudou_Shinichi/article/details/79682575 

来源: https://www.cnblogs.com/chen110xi/p/6612437.html

https://blog.csdn.net/weixin_39142112/article/details/80356244、

https://www.cnblogs.com/ouyangping/p/6366461.html

原文:https://blog.csdn.net/wangsfine/article/details/51205564 

https://www.jianshu.com/p/8e8ed503d69b

https://www.cnblogs.com/gordon0918/p/5581597.html

https://blog.csdn.net/beyond702/article/details/50427640 

猜你喜欢

转载自blog.csdn.net/iamsongyu/article/details/86895022