A-A+

IDA利用模拟器调试Android安卓应用

2019年07月02日 16:48 学习笔记 暂无评论 共1587字 (阅读3,376 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

这里我们需要用到的工具如下:

IDA_Pro_v7.0_Portable

网易MuMu模拟器

adb.exe

 

adb.exe 百度即可找到,模拟器不用说了吧,IDA_Pro_v7.0_Portable 的下载地址我还是提供一下吧:

链接: https://pan.baidu.com/s/1bdBhVTBYMk0lNIOtCxIjPw 提取码: w28g

 

首先,打开IDA工具的dbgsrv这个目录,然后找到如下文件【android_x86_server】,复制这个文件到安卓模拟器的 /system/bin/ 目录下,然后给与执行权限。

然后通过adb连接网易Mumu模拟器,在确定连接后,我们可以执行

adb shell      #进入Linux 控制台。
cd /system/bin      #进入刚刚复制文件的目录
android_x86_server    #运行这个文件

执行后,控制台会直接被监听,出现如下字符:
android_x86_server
IDA Android x86 32-bit remote debug server(ST) v1.22. Hex-Rays (c) 2004-2017
Listening on 0.0.0.0:23946...

这里我们再打开一个命令窗口,然后通过adb连接,然后执行如下端口转发的命令:

adb forward tcp:23946 tcp:23946

到此我们就可以打开ida工具了,然后

在x86的ida下,选择如下菜单

点击OK。

找到待调试的应用:

点击OK,等待片刻后进入调试界面。

其实到这里就算可以正常调试啦,就可以正常进行你自己的调试了。

下面完全属于对某个应用的调试记录。

 

由于要等待so解密,所以我们打开这一项

勾上这里

点击运行让程序跑起来。

手机端随便输入一些东西后点击确定,发现IDA成功断下。

出现这个直接点OK跳过

直接apply

断在linker

手动按f8从linker走到libart.so(我调试用的手机是安卓5.1的)

在Modules里找到libtutu.so

双击check

发现代码已经解密了。

可以按F5看看

一切正常。

方法一:静态分析

这些明显是函数指针,我们双击过去,按c转换成代码,再回来按f5。

上面有个未知作用的函数,我们一层层点进去看,发现是strlen。

稍微重命名一下,我们可以看出就是一个AES_ECB模式的加密

IV和enc都有了,直接用python解密一下就出来了。

1
2
3
4
5
6
7
8
9
from Crypto.Cipher import AES
iv = '122B157F2BAED2A6ACF7158807CF4F3C'.decode('hex')
enc = '47FE6CEEA092F9A72A73B3763613701A'.decode('hex')

cryptor = AES.new(iv,AES.MODE_ECB)
dec = cryptor.decrypt(enc)

print dec
#6ae379eaf3ccada5

flag:6ae379eaf3ccada5

 

那我们如何判断一个程序(安卓应用)是否存在反调试呢?

我们运行这个程序,然后再shell中找到这个程序的进程,如下图,

如果TracerPid不为零则有反调试

如果TracerPid不为零则有反调试

在用调试程序调试之前,如果TracerPid不为零则这个安卓应用有反调试功能。

部分内容摘自:https://veritas501.space/2017/06/04/%E8%AE%B0%E5%BD%95%E4%B8%80%E6%AC%A1%E5%AE%89%E5%8D%93%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF%95lib%E5%BA%93/

个人对移动安全了解不是太多,暂时记录这么多,如果有不对的地方,欢迎多多指教。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言