主页
1.1.
前言
1.2.
Unicorn概览
1.3.
初始化
1.3.1.
下载安装
1.3.2.
运行测试代码
1.4.
如何使用
1.4.1.
概述Unicorn核心思路
1.4.2.
背景知识
1.4.2.1.
程序运行的本质
1.4.2.1.1.
CPU的核心逻辑
1.4.2.1.2.
什么是指令
1.4.2.2.
内存布局
1.4.2.2.1.
什么是内存布局
1.4.2.2.2.
内存地址空间范围
1.4.2.2.3.
典型的内存布局
1.4.2.3.
字节序endian
1.4.3.
运行前
1.4.3.1.
设置代码
1.4.3.2.
设置其他
1.4.3.2.1.
函数参数
1.4.3.2.2.
相关数据
1.4.3.2.3.
Stack栈
1.4.3.2.4.
Heap堆
1.4.4.
运行中
1.4.4.1.
开始运行
1.4.4.2.
调试逻辑
1.4.4.2.1.
hook
1.4.4.2.1.1.
hook代码
1.4.4.2.1.1.1.
hook指令
1.4.4.2.1.2.
hook内存
1.4.4.2.1.3.
hook异常
1.4.4.2.2.
打印日志
1.4.4.2.2.1.
优化日志输出
1.4.4.2.3.
查看当前指令
1.4.5.
运行后
1.4.5.1.
停止运行
1.4.5.2.
获取结果
1.5.
经验和心得
1.5.1.
常见错误
1.5.1.1.
UC_ERR_MAP
1.5.1.1.1.
批量解决UC_ERR_MAP
1.5.1.2.
UC_ERR_WRITE_UNMAPPED
1.5.2.
手动修改指令
1.5.3.
数值转换
1.5.4.
ARM64和arm64e
1.5.5.
调用其他子函数
1.5.5.1.
模拟函数实现
1.5.6.
用到Unicorn的
1.6.
实例
1.6.1.
模拟akd函数symbol2575
1.6.2.
其他示例代码
1.7.
附录
1.7.1.
Unicorn文档和资料
1.7.2.
Unicorn部分核心代码
1.7.3.
参考资料
本书使用 HonKit 发布
什么是内存布局
什么是内存布局
内存布局,指的是:
你把要放置的东西,具体放哪里了
而此处的:
要放置的东西
主要指的是:
代码
=
code
详见后续章节:
设置代码
其他往往也涉及到
数据
=
data
其他 = 能让程序正常运行起来的各种配合的环境
Stack
栈
详见后续章节:
Stack栈
Heap
堆
详见后续章节:
Heap堆
有时候还要
给特定内存写入特定值
详见后续章节:
相关数据
等等
放哪里 中的 哪里 指的是:
内存
=
memory
具体放哪里了 中的 具体 指的是:放到
内存
中的哪个
范围
了
往往涉及到:
起始地址
+ 这段的
空间大小
=
结束地址
results matching "
"
No results matching "
"