ida如何识别linux内核函数,如何识别IDA反汇编中动态链接库中的函数
在使用IDA静态反汇编时,如果正在逆向的文件中有动态链接库函数(比如调用了程序自定义so库中的函数),IDA只会显示一个地址,跟进去会发现是延迟绑定中关于plt的代码,无法知道具体调用了哪个函数,对于逆向起来很是麻烦,本文介绍如何识别这样的函数。
按道理讲,虽然不能动态调试,静态分析不能看到运行时绑定的地址,但是具体动态链接的过程一定也是根据文件中的信息,所以静态也一定可以知道调用的是哪个函数,但是我没有发现如何使用IDA自动确定(如有高手麻烦留言告诉我),于是通过查阅《程序员的自我修养》动态链接相关内容,找到了识别动态链接库中函数的方法。需要识别的函数是sub_412160,如图所示:
从汇编代码点进去会发现是plt相关代码,在ARM64中,@page是取页440000(4kb整数),@PAGEOFF是取页内偏移20,简单来讲这段应该是取出440020地址存储的数据放X17,然后跳转过去,到了got.plt中。
这里面存的全是一样的地址,正如书中写的那样,都还没绑定具体运行时的地址,再跟两步发现到了地址是0的地方,就不理解了,可能是链接器的地址?
走了这么多弯路,跟完了延迟绑定的过程,下面来看如何识别出sub_412160。
ELF文件中存储了导入的所有函数符号信息,在IDAi的mport窗口中可以看到,不过IDA没有自动显示出来这些函数的地址,但在Linux下使用
readelf -sD 文件名| grep 小写地址
查看该文件可以看到地址动态符号的地址,grep查找一下就是所需要的识别的函数名。
ELF文件中还存储了needed的动态链接库,IDA中写在了该文件的最开始,向上拉窗口可以看到,我们只要从这些so库中找识别出的函数名即可。使用
grep -rn “函数名”
即可找到调用的哪个库中的哪个函数。
此外,还有这种形式的动态链接调用,再次挖坑做以记录碰到再研究。
https://reverseengineering.stackexchange.com/questions/9033/how-to-recognize-the-function-call-in-a-dynamic-lib
By Ascii0x03,转载请注明出处:http://www.cnblogs.com/ascii0x03/p/8313451.html
ida如何识别linux内核函数,如何识别IDA反汇编中动态链接库中的函数相关推荐
- 【Linux 内核】进程优先级与调度策略 ② ( 获取调度策略对应的进程优先级函数 | sched_get_priority_max 函数 | sched_get_priority_min 函数 )
文章目录 一.获取进程优先级函数 二.调度策略参数 三.进程优先级说明 在上一篇博客 [Linux 内核]进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 ...
- 【Linux 内核】调度器 ④ ( sched_class 调度类结构体分析 | yield_task 函数 | heck_preempt_curr 函数 | task_struct 函数 )
文章目录 一.yield_task 函数 ( 放弃 CPU 执行权限 ) 二.check_preempt_curr 函数 ( 检查进程是否可以被抢占 ) 三.task_struct 函数 ( 选择运行 ...
- Linux内核 eBPF基础:ftrace源码分析:过滤函数和开启追踪
Linux内核 eBPF基础 ftrace基础:过滤函数和开启追踪 荣涛 2021年5月12日 本文相关注释代码:https://github.com/Rtoax/linux-5.10.13 上篇文章 ...
- 【Linux 内核 内存管理】mmap 系统调用源码分析 ④ ( do_mmap 函数执行流程 | do_mmap 函数源码 )
文章目录 一.do_mmap 函数执行流程 二.do_mmap 函数源码 调用 mmap 系统调用 , 先检查 " 偏移 " 是否是 " 内存页大小 " 的 & ...
- linux 内核 时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图 1 RT-Linux结构 RT -Linux的关键技术是通过软件来模拟硬件的中断控制器.当Linux系统要封锁CPU的中断时时,RT-Linux中的实 ...
- 虹软人脸识别linux移植,虹软人脸识别的应用开发过程分享
虹软的人脸识别是应用与离线开发的,因为不需要网络,所以它的识别速度较快. 好了,废话不多说,接下来就开始教大家怎样使用了. 首先就是去官网申请APPKEY,各种密匙,然后在下载jar包,这些就不一一给 ...
- 【Linux 内核】Linux 内核源码几个重要的入口源文件及函数介绍 ( 系统初始化 | 内存管理 | 虚拟文件系统 | 网络管理 )
文章目录 一.系统初始化 二.内存管理 三.虚拟文件系统 四.网络管理 一.系统初始化 系统初始化 的入口源码是 " linux-5.6.18\init\ " 目录下的 main. ...
- linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统
一./etc/fstab文件的作用 某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的. /etc/fstab 文件负责配置Linux ...
- linux内核mount过程超复杂的do_mount()、do_loopback()、attach_recursive_mnt()、propagate_mnt()函数详解
linux内核mount过程复杂的do_loopback().attach_recursive_mnt().propagate_mnt()函数详解 本文对mount过程流程做了较详细的解释.首先以mo ...
最新文章
- Windows通过VNC访问Kylin桌面环境
- 密度聚类(Density peaks Clustering)Python实现
- .net mvc mssql easyui treegrid
- Requests 2.18.1文档
- html表格宽度拖拽,Js拖拽实现改变Table的列宽解决方案
- 猎豹MFC--CFile类家族介绍ADO连接数据库 打开数据库 关闭数据库 连接字符串
- asp.net js 提示信息封装函数
- 关于计算机组件游戏,Windows系统运行库/游戏运行库组件怎么补全?
- java安装后在哪里打开_java安装后怎么打开教程
- 回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012
- 计算机仿真软件multisim,电路仿真软件哪个好?2019电路仿真软件推荐
- 打开我的收藏夹 -- Python时间序列分析篇
- 制作和删除软RAID
- 我的2018:微信朋友圈的24个瞬间
- 写在2022的尾巴上
- 中文分词多领域语料库
- 接口隔离原则:接口里的方法,你都用得到吗?
- 大数据学前准备--zookeeper详解与集群搭建(保姆级教程)
- 2021UpdateC#.NET笔试题高级进阶篇
- HelloGitHub 开源月刊(第 55 期):终端“百战天虫”,来战?