主页
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 发布
程序运行的本质
程序运行的本质
此处所说的,程序运行的本质,主要指CPU模拟指令运行方面的底层实现原理和机制。
由于此部分内容较多,不适合完全铺开介绍,所以此处尽量言简意赅,把问题解释清楚。
results matching "
"
No results matching "
"