| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Hook初探索 -> 正文阅读 |
|
[开发工具]Hook初探索 |
分析MachO获取函数地址 ?先我们要?到?款软件。MachOView
利?它来分析我们Demo的主程序。接下来如何定位到我们的sum函数地址呢?
?
通过LLDB调试获取Sum函数的?件偏移地址。
1.?先在sum函数上下?个断点
2.然后通过汇编显示确定函数地址,在Xcode?带的Debug设置中设置?下搞定
Debug --> Debug Workflow --> Always Show Disassembly(?直显示汇编)
3.接下来通过LLDB指令找出主程序的?地址。得到 sum函数偏移地址 = sum函数地址 - 主程序?地址
LLDB:image list 获取镜像列表
4.我们可以?Mac?带的计算器算出偏移值,很?便(CMD+3 使?编程器)
?
在MachOView中查看到当前函数
?
我们打开MachOView,可以看到这?就是我们sum函数的开始位置。所以我们可以验证了sum函数的?件
偏移地址就是0x5E9C。那么我们就?这个地址进?接下来的HOOK了。
?
HOOK前的准备
准备一个指针
注意:由于要?便我们计算,这?定义函数指针不要定义成为函数的结构。?是uintptr_t类型
动态获取ASLR
?先导?头#import <mach-o/dyld.h>
然后使?函数_dyld_get_image_vmaddr_slide获取ASLR,我们在Load中就可以这样写。
那么这个时候,我们能否运?成功?
为什么会出错?
原因很简单。我们刚才算出来的sum函数的?件偏移地址,在我们修改了这?的代码之后。变了没?!
当然变了!所以怎么办?只能再次去获取sum函数的偏移。(注意:HOOK别?应?时因为我们是动态库
注?,所以不会修改?标应?的MachO,那么偏移值是固定的。没有这么麻烦)
注意:
这?有?个?技巧!因为修改代码之后,我们的sum函数有可能会没法断点调试(因为程序交换就崩
溃),那么没关系,我们不做交换
1、将交换的代码注释起来
2、获取到最?改动的sum函数偏移地址。
3、再讲该执?的代码打开。?成最新的MachO。
4、在MachOView中找到那附近(往?地址?)最像函数起始位置的作为sum函数的偏移(?般都是)
这个时候,我们只需要将sum函数的偏移地址修改?下就可以了!
?
运?!通过纯地址也能轻松搞定InlineHook了!
? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 10:16:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |