主页
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 发布
背景知识
背景知识
想要能玩转Unicorn,模拟代码运行,前提是:对于相关涉及到的背景知识,基础知识,有一定的了解。
此处至少包括:
程序运行的本质
典型的内存布局
下面详细解释:
results matching "
"
No results matching "
"