【转】IDA 调试 Android
最近都在学一些反编译安卓相关的东西,其实网上有很多教程关于用 IDA 调试 Android 的过程,主要记录一下我遇到的坑
首先 Android手机要是root过的
还要注意的一点是apk中的 AndroidManifest.xml 中debuggable要为true

1、将 apk 装到手机上,然后执行命令行:
adb shell am start -D -n "com.gabo.test/com.unity3d.player.UnityPlayerActivity"
最后一个参数是"包名/要运行的Activity"




2、查找运行的应用的端口号,并执行命令:adb forward tcp:5005 jdwp:9973



3、首先打开 IDA 中dbgsrv文件夹,将里面的 android_server 弄到手机上:
adb push android_server /data/local/tmp


4、运行android_server
adb shell
chmod 755 android_server


5、打开另一个CMD 窗口,运行 adb forward tcp:23946 tcp23946

6、运行 IDA,设置Debugger
选择Android debugger


输入Hostname为localhost,点击 Debug options 按钮设置

然后确定
若有发现其他错误的话,可能是因为没有第三步没有弄或端口号弄错了,或者失败了,在操作一次第5步,然后再进行第6步就可以了

若发现以下问题,可能是因为运行了64位的IAD,重新运行32位的IDA

上面是32位,下面64位,重新运行上面的重新操作一变就可以了。。我当时就是弹窗的,现在就变成只提示下面的错误了
上面的问题解决完后,会弹出窗口,然后选中我们要的进程,点ok就行

7、第6步结束后,IDA 会自动暂停,这时候执行 jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=5005
因为上面运行了adb shell am start -D -n 这条命令,设备上运行的应用会等附加调试后才会继续执行下去,上面的jdb命令就是为了让应用继续执行


8、之后回到 IDA,可以先找到自己想要断点的地方设置好断点后,按 F9 继续执行下去,刚才的jdb 命令就会看到结果

然后就结束了。。
IDA下载地址
链接: http://pan.baidu.com/s/1kV2JRZx 密码: s59q
Android_server提示端口被占用
root@android:/data/local/tmp # ./android_server
IDA Android 32-bit remote debug server(ST) v1.19. Hex-Rays (c) 2004-2015
Listening on port #23946...
另开命令行进行tcp端口转发:
adb forward tcp:23946 tcp:23946
此android_server需和ida是配套的
出现 bind: Address already in use 错误
这是因为手机中可能已经在运行android_server,使用 ps | grep android_server 看一下,有的话杀掉.
如下:(14061是pid)
root@android:/ # ps | grep android_server
root 14061 13574 11180 9504 ffffffff 40183da0 S /data/local/tmp/android_server
127|root@android:/ # kill -s 9 14061
from:https://www.cnblogs.com/gabo/p/5631643.html
【转】IDA 调试 Android的更多相关文章
- ida 调试 android fork
在使用ida 调试android native代码时经常会碰见fork子进程的情况出现,而运行一个 android_server只能对一个进程进行调试或者attach,而ida 默认端口是23946, ...
- IDA 调试 Android 方法及简单的脱壳实现
IDA 调试 Android 方法及简单的脱壳实现 标签: android原创逆向调试dalvik 2016-05-24 14:24 9286人阅读 评论(3) 收藏 举报 分类: 原创(25) An ...
- IDA 调试 Android
最近都在学一些反编译安卓相关的东西,其实网上有很多教程关于用 IDA 调试 Android 的过程,主要记录一下我遇到的坑 首先 Android手机要是root过的 还要注意的一点是apk中的 And ...
- IDA调试android so文件.init_array和JNI_OnLoad
我们知道so文件在被加载的时候会首先执行.init_array中的函数,然后再执行JNI_OnLoad()函数.JNI_Onload()函数因为有符号表所以非常容易找到,但是.init_array里的 ...
- IDA调试android so的.init_array数组
参考: http://www.itdadao.com/articles/c15a190757p0.html 一. 为什么要调试init_array init_array的用途 1. 一些全局变量的初始 ...
- ida调试 android so
C:\Documents and Settings\Administrator>adb shellshell@htc_v2_dtg:/ $ susushell@htc_v2_dtg:/ # cd ...
- ida 调试android之路
系统: Mac OSX 调试环境:IDA7.0, adb 手机环境:红米手机 android 4.4.4 前提条件: 红米手机root之路:https://www.cnblogs.com/dzqdz ...
- IDA动态调试Android的DEX文件
Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下. IDA 6.6新添加了对dex文件的调试 ...
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
随机推荐
- 转 C++构造函数、析构函数、虚函数之间的关系
C++构造函数.析构函数.虚函数之间的关系 1. 如果我们定义了一个构造函数,编译器就不会再为我们生成默认构造函数了.2. 编译器生成的析构函数是非虚的,除非是一个子类,其父类有个虚析构,此时的函数虚 ...
- Django ConnectionAbortedError WinError 10053 错误
因为ajax默认是异步提交,可是有时候我们会发现,本来要求请求马上出现,可是异步会导致后面突然再执行,这样就出问题了. (1)添加这样一段代码 $.ajaxSetup({ async : false ...
- unix网络编程第四章----基于TCP套接字编程
为了执行网络I/O操作.进程必须做的第一件事情就是调用Socket函数.指定期待的通信协议 #include<sys/socket.h> int socket(int family,int ...
- chartcontrol(统计坐标图形控件)
统计图形 把控件拖放到界面会弹出下图 图形共分八系列:Bar Series,Point and line Series,pie Series,Funnel Series,Area Series,Ra ...
- Swoole RPC 的实现
目录 概述 实现效果 代码 小结 概述 这是关于 Swoole 学习的第七篇文章:Swoole RPC 的实现. 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 ...
- 第2章 Spring Boot 文档
Spring Boot 文档 本节简要介绍了Spring Boot文档,是整个文档的参考指南. 您可以完整阅读本参考指南,或者如果您不感兴趣的话可以跳过该部分. 1. 关于文档 Spring Boot ...
- 匿名块的四个类型(type rowtype record table)
Oracle PL/SQL块 匿名块的四个类型 type rowtype record table ---- type (列类型) %type类型是指声明变量的时候,参考某个表的某个列的类型---- ...
- JDK1.8日期时间库学习
这周在阅读<阿里巴巴Java开发手册>时,在并发处理一节的日期处理中,其强调SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果 定义为 stati ...
- Zxing二维码精简(竖屏、拉伸处理、扫描框大小和扫描线移动)
本帖最后由 levil_ad 于 2013-12-30 13:55 编辑 最近没事做了下二维码扫描,用的是ZXing的开源代码,官方源码地址:http://code.google.com/p/zxin ...
- 【转载】Java NIO学习
这篇文章介绍了NIO的基本概念: http://www.iteye.com/magazines/132-Java-NIO Java NIO提供了与标准IO不同的IO工作方式: Channels and ...