FVP环境搭建
FVP下载
https://developer.arm.com/Tools and Software/Fixed Virtual Platforms
推荐直接下载:
Armv-A Base RevC AEM FVP (x86 Linux)
Armv-A Base RevC AEM FVP (AArch64 Linux, beta)
下载完成后解压的到Base_RevC_AEMvA_pkg
https://developer.arm.com/Tools and Software/Fixed Virtual Platforms
推荐直接下载:
Armv-A Base RevC AEM FVP (x86 Linux)
Armv-A Base RevC AEM FVP (AArch64 Linux, beta)
下载完成后解压的到Base_RevC_AEMvA_pkg
课程参考:https://www.bilibili.com/video/BV13W411Y75P
Q-Learning是属于值函数近似算法中,蒙特卡洛方法和时间差分法相结合的算法。这种算法使得智能体(agent)能够在与环境互动的过程中学习如何采取动作以最大化累积奖励。Q-learning特别适用于解决决策过程问题,尤其是那些状态和动作空间定义明确的问题。
Q-Learning 是一个离线策略(off-policy)学习算法。在Q-Learning中,智能体学习的是一个与其实际执行动作无关的优化策略。也就是说,当它在探索更多的状态-动作对时,它学习的是最优策略。同时,在更新q-table中的值时,并不考虑下一步实际执行的动作是什么,而是假设采取的是让next_state下q-table值最大的动作。
按照apollo.baidu.com中的教程进行创建
git clone https://github.com/ApolloAuto/apollo.git
bashdocker/scripts/dev_start.sh
Shellcode 分析
为了改造该 exp 为远程命令执行,还需要对 shellcode 进行修改
内容引用自 x32 PEB: 获取 Kernel32 基地址的原理及实现 - 先知社区
TEB(Thread Environment Block,线程环境块)系统在此 TEB 中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。用户模式下,当前线程的 TEB 位于独立的 4KB 段(页),可通过 CPU 的 FS 寄存器来访问该段,一般存储在[FS:0]
该论文是在 Snipuzz 实现的基础上做的改进优化,着重说明了有的节点和处理方法,最终获得了很好的效果。但是论文并没有附加开源项目,本人是基于该理论描述的 fuzz 架构做了具体的实现,开源时间待定。