找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 373|回复: 0

IDA 动态调试Android8 SO .init .init_array JNI_Onload

[复制链接]

2万

主题

162

回帖

18万

积分

管理员

积分
184954
发表于 2024-7-4 19:54:12 | 显示全部楼层 |阅读模式 IP:山东省青岛市 联通

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
资源来自互联网分享,侵权请告知删除。
如链接失效,请联系管理


IDA 动态调试Android8 SO .init .init_array JNI_Onload


前言
网上已经有很多在Android4中IDA如何调试.init .init_array JNI_Onload等文章,比如下面给出的参考,写的也非常详细,所以今天我们不讨论Android4。我们以Android8为例子。
查找关键函数的偏移地址
想要调试.init .init_array必须找到,
call_function函数中的function(g_argc, g_argv, g_envp);地址,和
LoadNativeLibrary函数中int version = (*jni_on_load)(this, nullptr);地址,
这两个地址分别去调用了.init .init_array函数和JNI_Onload函数。
先将两个相关的so拷贝到电脑上使用ida打开(我们的应用是以32位模式强制运行)
[Bash shell] 纯文本查看 复制代码
adb pull /system/lib/libdvm.so
adb pull /system/bin/linker

注意⚠️:我的手机是Pixel 安卓系统是8.0 ,确没有这个文件/system/lib/libdvm.so,只有一个/system/lib/libarm.so
我们先来看call_function函数中的调用代码

[C] 纯文本查看 复制代码
static void call_function(const char* function_name __unused,
                          linker_ctor_function_t function,
                          const char* realpath __unused) {
  if (function == nullptr || reinterpret_cast<uintptr_t>(function) == static_cast<uintptr_t>(-1)) {
    return;
  }

  TRACE("[ Calling c-tor %s @ %p for '%s' ]", function_name, function, realpath);
  function(g_argc, g_argv, g_envp);
  TRACE("[ Done calling c-tor %s @ %p for '%s' ]", function_name, function, realpath);
}


可以看到这里有相关的字符串可以让我们在IDA中检索
[ Calling c-tor %s @ %p for '%s' ]
在IDA中检索如下













检索到字符串后,进入他的交叉引用处,可以看到相关代码,从字符串看得出这里就是我们对应的调用处,这段汇编还是比较简单的,图中高亮处即我们的调用处。它的偏移地址为0x00013598
同样的再来看看JNI_Onload的调用代码








作者:Sharkchilli
链接:https://www.jianshu.com/p/4be6d14946bd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。




























































下载地址:





2.png
1.png
1.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|哩布大模型|Civitai大模型|IP定位|图反推|站长素材|deepseek|即梦视频|阿狗工具|花瓣网|pinterest|php手册|宝塔文档|CyberChef|猫捉鱼铃|手机版|小黑屋|下载狗|IPS|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2025-5-10 03:27

Powered by 分享屋 X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表