博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何hook那些在IDA中显示为sub_xxx的函数
阅读量:4979 次
发布时间:2019-06-12

本文共 708 字,大约阅读时间需要 2 分钟。

唉,说起来这就是一个坑,Cydia Substrate在其文档中也没找到详细说明,最后也只能来看看代码曾半仙最早给的那份substrate-master源码,然后一切就了然于胸了,这个坑很大,很大!!!

现在我们先来看下MSHookFunction怎么Hook IDA中的sub_xxxx函数,然后再来谈谈为啥是这样的。

就以这段代码为例吧,下断点红色选中部分,中的sub_17C94就是我想要Hook的函数,首先确认了下参数个数为2个。

以下给出代码片段截图:

看到这里我想很多人有点不理解,为啥需要 | 0x00000001,别急,下面我就借花献佛,慢慢道来也。

既然源头是出现在MSHookFunction上,那们我们就去阅读下这块的代码:

从这2 段代码中可以很明显的看到在SubstrateHookFunction中,看到这么一句

if ((reinterpret_cast(symbol) & 0x1) == 0)
也就是说,MSHookFunction在判断Hook函数的时候,是通过在传到进来函数地址的奇偶数来判断是ARM指令的函数,还是Thumb指令的函数。
这个坑好大,我勒个去啊!!!
别急,接下来看这句
reinterpret_cast(reinterpret_cast(symbol) & ~0x1)
判断完后,为了能正确Hook地址,又改回原来的地址了,这下变清楚了吧。
再者,从MSFindSymbol函数中也能清楚的看到**value |= 0x00000001**这句!!!

转载于:https://www.cnblogs.com/dependence/p/4466418.html

你可能感兴趣的文章
React二维数组渲染 跳转详情传值
查看>>
路由器安全-FPM
查看>>
mysql 源码包安装
查看>>
12天学好C语言——记录我的C语言学习之路(Day 2)
查看>>
某大型银行深化系统之十:服务层之二
查看>>
LookUpEdit - How update binding source immediately after selection?
查看>>
使用HandleErrorAttribute处理异常
查看>>
Node 之 Express 学习笔记 第二篇 Express 4x 骨架详解
查看>>
Educational Codeforces Round 64 (Rated for Div. 2) (线段树二分)
查看>>
疯狂指南针之一周计划(整理——郑云飞)
查看>>
js获取服务端IP及端口及协议
查看>>
MongoDB 集合操作命令-3
查看>>
Save a bricked Samsung Note 3 and do extraction
查看>>
PO VO BO DTO POJO DAO的解释
查看>>
夺命雷公狗---DEDECMS----32dedecms电影网评价星星功能的实现
查看>>
Python hashlib
查看>>
Linux下gcc的安装
查看>>
python之路-类、socket编程
查看>>
在 ML2 中配置 OVS vlan network - 每天5分钟玩转 OpenStack(136)
查看>>
J.U.C并发框架源码阅读(五)Semaphore
查看>>