IDA真机调试环境搭建及原理

如果想脱壳,使用IDA调试so文件是不可避免的。工欲善其事必先利其器,本文将详细介绍IDA调试的环境准备以及操作的步骤和原理,尽量做到知其然知其所以然。

手机环境

  • 1) 准备一台真机
    最好是真机,模拟器经常会遇到各种各样意想不到的坑。本身我们逆向分析加固程序就需要验证各种猜测,再加之模拟器的坑,很容易被迷惑。
  • 2) 手机系统版本android4.4之前的系统
    这个主要是dvm VS art的考虑,android 5.0以上系统使用art进行加载。现在网上很多教程,脱壳分析都是基于dvm虚拟机的。
  • 3) 手机已经ROOT
    这个是必须的,大家都知道。对应自己的手机型号,找度娘搞定。
  • 4) 设置好开发者模式

准备工作

  • 1) 将IDA android_server 放置到手机
    我使用的IDA 6.6,IDA6.8和最新的IDA7.0在我这里都出现些问题。
    目录如下图,这个东东将我们的手机和PC连接起来。

    将文件push到手机/data/local/tmp/目录下
    adb push android_server /data/local/tmp/

  • 2) 将android_server修改赋予可执行权限
    adb shell “chmod 777 /data/local/tmp/android_server”

  • 3) 准备好DDMS
    红色圈使我们要调试的程序。为什么使用DDMS后面会讲到。
  • 4) 设置属性ro.debuggable
    在实际的操作中,打开DDMS,连接上手机是一般是看不到调试的应用的。
    这是因为APK的AndroidManifest.xml中debuggable没有设置为true。而且一般发布的程序都会设置为false,我们可以修改AndroidManifest.xml中debuggable属性软后重新打包,但加了壳的apk重新打包困难,这是个鸡生蛋,蛋生鸡的问题。网上有4中方案解决此问题,我选择的是使用mprop修改内存属性。由于是内存属性,因此每次重启手机时都需要设置一下,稍微麻烦了一点,可以接受哈。
    mprop下载地址 [ mprop ]

    mprop的使用:
    1、 将mproppush到手机
    adb push .\你的存放路径\ mprop /data/local/tmp/
    2、 修改权限
    adb shell “chmod 755 /data/local/tmp/mprop”
    3、 运行
    使用root权限运行mprop,设置ro.debuggable=1,查看ro.debuggable 属性是否为1,如下图:

IDA附加

以上准备工作做好后,我们就可以真正使用IDA附件到程序,开始调试。

  • 1) 使用ROOT运行android_server
    最好把手机里乱七八糟的的应用全都卸载掉,然后以使用root运行android_serverr如下图:

    当出现Listening on port #23946 说明android_server启动成功,它在监听23946端口,等着其他人来连接她。
    图中的as就是android_server,因为一般加固方案的反调试中有对“android_server”的检测,为了避免麻烦所以修改为as。你可以在后续实际脱壳中看到这部分。
  • 2) 端口转发
    不能让android_server等太久,我们使用adb forward tcp:23946 tcp:23946进行转接。这句命令的意思就是将PC端的23946端口转接到手机的23946端口,经过转接IDA附加调试的地址就是127.0.0.1(localhost)。
  • 3) 以debug模式打开应用
    1、可以在“开发者选项”中—>“选择待调试的应用程序”—>勾选”等待调试程序”进行设置待调试的apk
    AndroidManifest.xml中debuggable没有设置为true,设置个毛线啊!!其实这里我们可以骗骗手机。首先我们使用AndroidKiller将加壳待调试的apk设置debuggable=true,然后重新打包,进行安装。安装后进行上述开发者选项设置。设置完成后,卸载调apk,将原始待调试的加固apk进行安装。你会发现开发这选项还在。Debug模式打开应用妥妥的。
    2、使用命令以debug模式打开应用
adb shell am start -D -n com.example.test360_2/com.qihoo.util.StartActivity

其中:com.example.test360_2为包名,com.qihoo.util.StartActivity为程序入口

我们同样使用AndroidKiller可以很方便的找到报名和程序入口,你要熟悉AndroidManifest.xml那就随便了。
AndroidKiller下载地址:
[AndroidKiller ]

  • 4)IDA附加
    如图选择Remote ARMLinux/Android debugger进行IDA附加。

    设置Hostname

    选择需要调试的apk,选择进行附加
  • 4)打开DDMS
    打开DMMS后,我们看到我们要调试的应用出现在这里,如果没有出现,请查看上面关于ro.debuggable属性有没有设置好。

    红色小虫子:表示该程序是待调试程序
    8600/8700 :DDMS将PC端口转发到手机端口8606端口上
    如果没有打开DDMS,就需要我们自己进行转发了,如:
    adb forward tcp:8700 jdwp:8600
    建议还是使用DDMS进行转发,省事还稳当^_^

  • 6) 使用jdb恢复程序运行
    执行完该命令后,还需要在IDA里点击运行程序才会真正的运行起来。这也方便我们设置断点。

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

写在最后

通过以上步骤,我们就可以开始愉快的调试,脱壳了。理解了上述操作步骤的目的,我们总结一下每次debug的前戏,方便大家操作:
1、 运行android_server
2、 端口转发
adb forward tcp:23946 tcp:23946
3、 打开待调试应用
4、 打开DDMS
5、 IDA附加
6、 jdb恢复程序运行
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700

移动安全逆向研究:
QQ群:211730239


IDA真机调试环境搭建及原理相关推荐

  1. Xcode搭建真机调试环境 图文实例

    Xcode搭建真机调试环境 是本文要介绍的内容,不多说,我们之间进入主题,在Xcode 3.2.5(我用的版本)中,可以简化步骤.注:最好在Safari上完成下面步骤,因为在其它浏览器上可以不到正常上 ...

  2. mac 10.10 android 真机调试,在Mac系统上配置Android真机调试环境

    我使用的系统是OS X Yosemite 10.10.2,使用的Android手机是MX4 Pro 1. 安装adb客户端.你可以下载好最新版本的SDK,在platform-tools目录下有adb命 ...

  3. appium ios 真机自动化环境搭建

    近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的.本次书 ...

  4. appium -ios 真机连接 环境搭建

    补充点一: 安装ios-deploy npm install -g ios-deploy 安装不了报错.! 后来找了找,发现sudo npm install -g ios-deploy --unsaf ...

  5. ios--用证书进行真机调试(转)

    测试环境:Xcdoe4.5, ML10.8 转自"http://mobile.51cto.com/iphone-276988.htm" Xcode搭建真机调试环境 图文实例 201 ...

  6. 如何真机调试微信h5页面

    最近在项目中接手微信环境h5页面的开发,主要的是使用微信 JS-SDK 做原有项目部分功能在微信环境下的适配. 目前项目暂时告一段落,希望可以用几篇文章记录并分享这些天来学习.开发微信h5页面的心得. ...

  7. mui hello html5 安装,HBuilder开发App Step1——环境搭建,HelloMUI 以及真机调试(示例代码)...

    No1. 必须搭建java环境 只需要最基础的java环境,也就是cmd下可以运行java和javac即可, 具体教程请自行百度,都会有很详细的教程,这里不重点介绍. No2. 下载安装HBuilde ...

  8. 从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld

    首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...

  9. 调试H5页面-weinre及spy-debugger真机调试

    以下是weinre及spy-debugger真机调试方式,spy-debugger内嵌了weinre,所以首选spy-debugger,weinre大致了解一下即可. 一.Weinre Weinre( ...

最新文章

  1. 如何在多Node版本的情况下公用一个npm
  2. 论文笔记:NEUROVASCULAR COUPLING AND EPILEPSY: HEMODYNAMIC MARKERS
  3. 操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)
  4. 语言之输出png图片_什么是PPML?如何输出PPML文档?
  5. Boot目录下内容丢失导致系统无法启动
  6. werkzeug serving.run_simple
  7. linux ti 电池驱动_全球跨国车企电动汽车平台和电池系统对比
  8. 谷歌Chrome浏览器不再支持Flash Player的完全解决方案
  9. Pyqt5 遇到的超级无敌大坑!clicked.connect后面的connect出现下划线 计算机积极拒绝问题
  10. 图扑软件构建源网荷储用体系 打造循环经济2.0版本
  11. Excel里面自动获取当前时间
  12. Linux PCI驱动框架分析过程
  13. 预测大盘最准确的指标_迄今最权威的大盘预测K线指标下载
  14. Mac下使用Parallel Desktop进行虚拟机的网络配置
  15. lg空调代码大全解决_lg空调故障代码是什么意思 lg空调故障代码大全【详解】...
  16. shopee虾皮货代仓储打包系统erp铺货中转仓
  17. Python自学笔记——基础篇
  18. 关于VMware设置网络
  19. PMI-ACP练习题(19)
  20. 2022年度电商“三巨头”阿里,京东,拼多多的“暗战”

热门文章

  1. 五种社群营销玩法,实现转化和裂变
  2. 大赛之Windows+iis+php+mysql搭建wordpress
  3. Seriousness is an attitude!
  4. 跨屏建站网发布响应式电子商务网站主题kpshop
  5. 航空货运数据挖掘那些事|航班换季
  6. Spark存储机制源码剖析
  7. BZOJ4247: 挂饰
  8. eeprom的wp 引脚_EEPROM要点
  9. Revit二次开发之外部应用IExternalApplications和数据库级别的外部应用【比目鱼原创】
  10. 苹果CMSV10高端安全干净模板宽屏大图轮播支持DIY的自适应模板