-
-
[原创]一步步搭建ida pro动态调试SO环境。
-
发表于:
2015-8-5 23:01
34372
-
[原创]一步步搭建ida pro动态调试SO环境。
在一堆堆大牛的浪潮中,android安全越来越火,跳入这个“坑”的人也一堆堆,门槛越来越低。小白我也来分享一下ida调试so的经历。
背景:无任何android开发经验,2天时间搭建调试环境并调试成功。
目的:调试某android平板中的某个app的so文件,并逆向出关键算法。
工具:ida pro6.5 +adb+刷机精灵
第一步准备工具:android平板,数据线,弄过来platform-tools,里面包含用到的adb工具,ida6.5pro, ida6.7pro.
第二步从平板中取出app的so文件:由于调试时它用到许多系统lib,我直接把/system和/data全部pull到本地上,很多文件,后面会用到。
第三步:push ida6.7中的android_server文件到 平板的/data/local/tmp目录中,然后改执行权限,始终不成功,说权限不允许之类的,折腾了很久,上网查了才知道,先要root,网上下载了360root工具,不成功,又下载刷机精灵,成功了。然后可以改权限了。
第四步:执行android_server,老是说segment fault,用root权限也不行,怀疑android_server有问题,是不是ida是6.7的问题,然后换ida6.5的android_server推到平板中去,尽然成功了,原来版本太高的原因吗?
第四步:把要调试的so库拖到ida6.5中分析,这里要android_server要与ida版本配套一起才行,不能混搭,比如ida6.5的android_server只能与ida6.5一起用才行,不能与ida6.7一起用,否则会有错误,说是服务版本不匹配之类的。
第五步:另开一个cmd, 输入adb forward tcp:23946 tcp:23946
第五步:设置调试选项路径,这里一定要是平板中的真实路径,不过一开始路径不对,可以随便设,附加后,ida会提示错误提示,按提示的路径回过头去改正,另外一些系统库,如libc.so,linker说找不到,那之前pull出来的/system/lib下面文件就有用了,把路径map到这个目录下就行了。
第六步:设置好调试选项后,F9选择arm android的那个调试器就行了,再选附加进程,发现只有一个进程。为什么呢,为什么呢,上网查了下,原来运行android_server时一定要先su一下,即在root权限下运行才能看到平板中的进程。
第七步:root下运行android_server后,把上面的步骤再来一次,ida6.5附加时可以看到一堆进程,找到要调试的so所在的进程后,附加就断在libc.so的一个地方,后面的就是真正调试的就不用说了。
万事开头难,花了2天时间才成功弄好,其实调试本身没什么难,难的是前面一系列疑问,当你一个一个问题思考过,动手弄过,查资料等把问题解决了,才是真正的经验,会学到很多东西,比调试本身更有乐趣,希望能给跟我一样的小白提供一些思路吧。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!