注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

动态调试SO之在.init_array段下断点  

2015-01-24 21:02:13|  分类: Android开发与逆 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

前言

由前面的分析可以知道,so被加载之后最开始执行的是.init_array段的代码。然后才会去执行jni_onload

那么,在.init_array处断下来便是很有必要的

前期准备:

android系统中位于/system/bin/的linker
ida 6.4
android_server
mytestcm.apk

准备工作做好之后,下面正式开始调试

0×1

push android_server到tmp目录下,给权限,然后以root身份执行。

adb forward端口转发

IDA attach对应进程

0×2

新开一个IDA,载入linker

Shift+F12打开字符串窗口,搜索字符串:dlopen

定位到:

找到dlopen函数的偏移0xF30

动态调试的IDA中,G跳转到:400D3000+F30=400D3F30处,下好断点

搜索字符串:calling

定位到:

 

得到偏移:0×2720

来到动态调试的ida,G跳转到:400D3000+2720=400D5720处,下断点

往下:

400D574C   BLX   R4处就是调用init段代码的地方!直接跟进就能看到

0×3

按F9运行
然后打开Eclipse或者ddms
执行 jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
程序就会断在第一个断点处,F9几次就段在blx R4处
F7跟进就来到init段代码处:

 

 

 

本文出自 0n1y3nd's Blog,转载时请注明出处及相应链接。

本文永久链接: http://0nly3nd.sinaapp.com/?p=649

  评论这张
 
阅读(148)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017