Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1460904
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: Android平台

2014-11-15 19:16:22


  1. 1. IDA调试原生SO

  2. 软件:
  3. IDA6.5 plus(android_server使用看雪IDA6.1的)

  4. 修改IDA6.5 plus的cfg/exception.cfg,修改.linux为.linux,.armlinux

  5. 待调试的文件
  6. 1. debugjniso.apk

  7. 支持文件
  8. 2. android_server(IDA6.1目录下

  9. 1. 启动模拟器
  10. emulator -avd android233
  11. 2. 上传文件
  12. adb push android_server /data/local/tmp

  13. 3. 可执行权限
  14. adb shell chmod 755 /data/local/tmp/android_server
  15.  
  16. 4. 打开cmd
  17. adb shell /data/local/tmp/android_server
  18. 5. 打开cmd2
  19. adb forward tcp:23946 tcp:23946

  20. 6. 安装APK
  21. adb install debugjniso.apk

  22. 7. IDA远程调试(打开第一个IDA)

  23. Debugger->Attach->Remote ArmLinux/Android debugger
  24. Hostname栏,localhost
  25. 其他默认
  26. 确定

  27. 8. 运行下测试程序,确保调用了so
  28. 9. 找到IDA弹出的对话框com.droider.debugjniso,进入调试界面
  29. (但是此时断点不在so,需要在so的函数设置断点

  30. //断点地址 = so加载地址 + jni方法在so中的偏移地址
  31. 10. 打开第二个IDA,加载so
  32. 11. 在Exports标签,找到jnistring()方法的地址
  33. Java_com_droider_debugjniso_TestJniMethods_jniString 00000C38
  34. 地址为00000C38
  35. 12. 回调第一个IDA1,确定so的加载地址
  36. ctrl+s,找到libdebugjniso.so的基地址
  37. libdebugjniso.so 80500000 80503000 R . X D . byte 00 public CODE 32 00 00
  38. libdebugjniso.so 80503000 80504000 R W X D . byte 00 public CODE 32 00 00

  39. 有两个,代码段应该是只读的,因此基地址是80500000

  40. 断点地址 = 80500000 + 00000C38 = 80500C38

  41. 13. G,跳到地址80500C38
  42. libdebugjniso.so:80500C38 Java_com_droider_debugjniso_TestJniMethods_jniString

  43. 14 F2断点

阅读(4647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~