最近都在学一些反编译安卓相关的东西,其实网上有很多教程关于用 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的更多相关文章

  1. ida 调试 android fork

    在使用ida 调试android native代码时经常会碰见fork子进程的情况出现,而运行一个 android_server只能对一个进程进行调试或者attach,而ida 默认端口是23946, ...

  2. IDA 调试 Android 方法及简单的脱壳实现

    IDA 调试 Android 方法及简单的脱壳实现 标签: android原创逆向调试dalvik 2016-05-24 14:24 9286人阅读 评论(3) 收藏 举报 分类: 原创(25) An ...

  3. IDA 调试 Android

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

  4. IDA调试android so文件.init_array和JNI_OnLoad

    我们知道so文件在被加载的时候会首先执行.init_array中的函数,然后再执行JNI_OnLoad()函数.JNI_Onload()函数因为有符号表所以非常容易找到,但是.init_array里的 ...

  5. IDA调试android so的.init_array数组

    参考: http://www.itdadao.com/articles/c15a190757p0.html 一. 为什么要调试init_array init_array的用途 1. 一些全局变量的初始 ...

  6. ida调试 android so

    C:\Documents and Settings\Administrator>adb shellshell@htc_v2_dtg:/ $ susushell@htc_v2_dtg:/ # cd ...

  7. ida 调试android之路

    系统: Mac OSX 调试环境:IDA7.0,  adb 手机环境:红米手机 android 4.4.4 前提条件: 红米手机root之路:https://www.cnblogs.com/dzqdz ...

  8. IDA动态调试Android的DEX文件

    Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下. IDA 6.6新添加了对dex文件的调试 ...

  9. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

随机推荐

  1. bzoj1143/2718 祭祀river(最大独立集)

    [CTSC2008]祭祀river Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2175  Solved: 1098[Submit][Status] ...

  2. mysql监控指标

    1.最大连接数监控 show VARIABLES like "max_connections"; //最大连接数 show global status like 'Threads_ ...

  3. d3 使用随机数据生成条形图

    ).map(function(){ ,)(),); }) // 返回 [27.2, 12.9, 12.2, 6.8, 9.4, 7.1, 17.5, 30, 16.6, 24.3, 19, 16.6, ...

  4. storage存储对象和数组类型时候的问题

    storage类型存储的类型为字符串,直接使用localstorage.setItem方法存储进去,取出来的时候数据是不能够使用的 解决方法: 先使用JSON.stringify方法转换成为字符串,然 ...

  5. Intellij IDE使用 ideavim,不能复制文档到系统粘贴板

    vim的yank命令默认不会复制到系统粘贴板,而是粘贴到寄存器.你可以使用* 或 +寄存器来访问系统粘贴板. 在~/.ideavimrc (如果不存在就创建) 中添加下列选项 set clipboar ...

  6. FZOJ Problem 2103 Bin & Jing in wonderland

                                                                                                        ...

  7. LeetCode OJ-- Simplify Path **

    https://oj.leetcode.com/problems/simplify-path/ 对linux路径的规范化,属于字符串处理的题目.细节很多. #include <iostream& ...

  8. WEB学习-CSS中Margin塌陷

    margin的塌陷现象 标准文档流中,竖直方向的margin不叠加,以较大的为准. 如果不在标准流,比如盒子都浮动了,那么两个盒子之间是没有塌陷现象的: 盒子居中margin:0 auto; marg ...

  9. HDU6214 Smallest Minimum Cut

    题目链接:HDU6214 留一个链式前向星+Dinic模板(希望不要被某人发现,嘿嘿嘿). #include <cstdio> #include <cstring> #incl ...

  10. redis基本类型和操作

    基本类型:string hash list set sorted set 添加String 类型(最基本的key,value形式) set str1 s1 获取value get str1 添加has ...