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

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是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不为零则这个安卓应用有反调试功能。
部分内容摘自: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/
个人对移动安全了解不是太多,暂时记录这么多,如果有不对的地方,欢迎多多指教。
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏