365天获取玄武实验室的工作

很抱歉的说需要停止该仓库的更新了. 无疑这个计划是失败的, 我并没能坚持到最后, 也没有去面试玄武实验室. 但庆幸的是我遇到了更加宝贵的机会, 所以很多时候坚持和努力一定能得到收获. 我的这些笔记都很零散也没有多少很有含量的内容, 但是对我而言是快乐的, 如果感兴趣, 希望你也能fork一份照着自己的计划自己的理想持续前进, 当然也可以直接联系我一起交谈. 安全圈很小, 努力的人都能发热发光.

这是什么?

这是一份我给自己365天内获取腾讯玄武实验室工作定下的学习进度清单, 用于记录我在这一年时间里每天的学习收获.

由于已经工作并非学生了, 我将白天的工作定义为自身能力的实践锻炼, 而晚上也就是本清单则注重于知识和理论的学习.

因为知识积累的差异, 该清单并不适用于纯粹的初接触安全者, 但我常认为自己是一个愚笨的人, 所以即便是刚入行的小白, 在补足了一定的基础知识后, 该清单依然具有一定的参考价值.

因为时常有新的点去关注, 所以很多时候学习的内容并不连贯甚至于碎片化, 这也是无可避免的, 有待我填完坑后重新整一份新的清单, 更贴合正常学习的顺序.

学习进度

日期 标题
Day1 学习CTF Wiki栈溢出基础和ROP基础
Day2 学习CTF Wiki中级ROP和格式化字符串漏洞
Day3 回顾软件安全保护技术和学习ARM汇编基础
Day4 学习ARM汇编基础和CTF Wiki的花式ROP
Day5 学习CTF Wiki整数溢出和堆管理机制
Day6 ptmalloc2内存管理机制(分配和释放)
Day7 软件破解技术
Day8 Linux内核及其内在机理
Day9 Android安全里的攻防和分析知识
Day10 阅读软件供应链安全相关论文
Day11 阅读软件供应链安全相关论文
Day12 学习知识图谱知识, 掌握ES和Neo4j的使用
Day13 学习Neo4j的CQL语法以及使用python操作es
Day14 学习知识图谱构建技术和阅读两篇应用知识图谱于安全分析的论文
Day15 阅读模糊测试资料和掌握Radare2用法
Day16 了解代码覆盖率和程序分析研究进展
Day17 了解基于变异的模糊测试技术和Python的代码简洁之道
Day18 了解灰盒模糊测试技术和阅读二进制重写的论文
Day19 对Python代码进行数据流前向切片
Day20 详细阅读并总结e9patch的论文内容
Day21 阅读逆向工程参考手册和阅读IDA插件源码
Day22 学习熊英飞老师的软件分析技术课程
Day23 学习高级二进制代码反混淆资料
Day24 阅读混淆技术论文综述部分内容
Day25 了解各类混淆转换技术以及对应对抗方法
Day26 阅读二进制代码复用检测论文
Day27 阅读跨架构二进制代码复用检测论文
Day28 阅读机器学习APK解混淆论文和代码克隆检测进展
Day29 收集二进制代码克隆检测的论文资料
Day30-31 阅读代码相似性检测论文
Day32 阅读20年S&P最佳实践论文
Day33-35 阅读代码相似性检测论文
Day36-39 阅读代码相似性检测论文
Day41 安装和了解Unicorn框架和示例代码
Day42-43 安装配置Manjaro+i3wm桌面环境
Day44 快速上手学习Go语言
Day45-49 参考Go by Example阅读一些示例代码
Day50 了解syzkaller并学习learn-go-with-tests
Day51 学习learn-go-with-tests
Day52 学习angr使用的IR-VEX
Day53 阅读《Go语言标准库》
Day54-57 使用Go语言写一个HaboMalHunter
Day58 学习UW CSE501 静态分析课程
Day59 学习UW CSE501 指针分析
Day60-61 二进制相似度聚类Golang实现
Day62-63 学习MOBISEC安全课程
Day64 学习LLVM
Day65 编写脚本自动同步GoSSIP的微信推送归档到Github仓库
Day66 阅读论文 FuzzGen: Automatic Fuzzer Generation
Day67 编写脚本检测PyPi包名抢注情况
Day68 了解遗传算法并使用geatpy进行参数调优
Day69-70 编写macOS的内核扩展监控进程行为
Day71 参考xnu-qemu-arm64项目使用QEMU模拟iOS
Day72 参考macOS的网络流量监控代码
Day73 学习LLVM Pass的编写
Day74 学习使用Ghidra进行逆向
Day75 阅读AFL源码
Day76 阅读一篇开源库名称抢注检测的论文
Day77 阅读FANS和Sys论文
Day78 阅读两篇fuzzing论文
Day79 阅读fuzz深层状态空间探索的论文以及一些收藏文章
Day80-81 阅读LLVM Cookbook
Day82-83 学习NLP里的命名实体识别模型(NER)
Day84 学习字符串的几种相似度算法的代码
Day85 阅读Accelerated C++第5,6章
Day86-87 阅读Accelerated C++第7及后续章节
Day88 阅读LLVM Essentials第1章
Day89 阅读LLVM Essentials第2章
Day90 阅读LLVM Essentials第3,4章
Day91 阅读LLVM Essentials第5,6章
Day92-94 阅读LLVM官方文档
Day95 编写词法分析器
Day96 编写LLVM Pass
Day97 阅读论文QSYM混合模糊测试
Day98 阅读论文SAVIOR-Bug驱动的混合模糊测试
Day99 阅读论文Angora通过搜索策略提高性能
Day100 阅读论文SymCC通过编译而非解释进行符号执行
Day101 阅读论文PANGOLIN和了解污点分析技术
Day102-103 阅读论文libdft污点分析技术
Day104 简略阅读四篇污点分析论文
Day105 学习MIT公开课Data Tracking
Day106 简略阅读Triton论文和了解源码
Day107 阅读QSYM的Python部分源代码
Day108 阅读SnoopSnitch源码移植补丁存在性验证代码
Day109 阅读CUPID协同fuzz的论文
Day110-114 将SnoopSnich源码进行移植
Day115 编写代码提取基本块和capstone反汇编
Day116 阅读一篇堆溢出的AEG论文
Day117 阅读ClusterFuzz源码
Day118 学习macOS Endpoint Security相关知识
Day119 基于macOS Endpoint Security开发系统扩展
Day120 学习macOS Network Extension相关知识
Day121-122 基于macOS Network Extension开发网络扩展
Day123-126 基于ClusterFuzz开发漏洞挖掘平台
Day127 收集和阅读开源代码检测和治理的论文
Day128-129 改进别名抢注工具
Day130-131 阅读开源代码检测的论文
Day132 阅读NDSS2021论文
Day133 了解强化学习
Day134 使用Golang进行机器学习
Day135 阅读《Hands-On Graph Analytics with Neo4j》
Day136-146 阅读并修改clusterfuzz源码
Day147-148 训练NLP模型针对Twitter数据过滤出我更感兴趣的资讯