如何把ida 的android

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把ida 的android相关的知识,希望对你有一定的参考价值。

参考技术A 微软有一个工具叫做dependencywalker或者VisualStudio附带的一个工具dumpbin可以查看dll的导出函数名称,函数参数和调用方式(比如__cdecl或__stdcall)在工具里无法显示,需要使用IDA或者OllyDbg等反汇编器将DLL反汇编,通过定位导出函数结尾的retn指令判断参数个数和调用方式。由被调用者平栈通常为__stdcall,由调用者平栈则是__cdecl,平栈的字节数除以字长(例如retn0C中的0C在x86下是除以4,在x64下除以8)即可得到参数个数(这也是通常,具体问题可能需要具体分析),至于参数意义,那就完全需要头文件支持,或者分析反汇编代码的意义了。在IDA里,还可以使用F5快捷键将反汇编代码转换为C代码,能稍稍方便一点。最后一个问题,至于思路的话,你可以查看DLL的导出函数,然后使用Detours类库将原来的函数HOOK一下,做个旁路,在HOOK函数中打印调用内容,这样你在日志文件或调试输出中就能看见调用规律了。纯属个人建议。还有一个工具叫做APIMonitor,能够检测API调用。

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

 

以上是关于如何把ida 的android的主要内容,如果未能解决你的问题,请参考以下文章

AndroidAndroid如何对APK反编译

AndroidAndroid如何一进入一个activity就弹出输入法键盘

AndroidAndroid下SQLite3数据库的操作

Androidandroid常用工具类。

AndroidAndroid六种布局详解

androidAndroid 获取系统各个目录